C2ME OpenCL Acceleration Module

C2ME OpenCL Acceleration Module - C2ME OpenCL 加速模块

一个为 C2ME 提供通过 OpenCL 实现硬件加速世界生成的附属模组
fabric / neoforge 作者 ishland 支持版本 1.21.1 - 26.3-snapshot-3
下载量
102,522
关注数
123
数据来源
Modrinth
模组详细介绍

C2ME OpenCL 加速模块

实验性 C2ME 附加组件,通过 OpenCL 提供硬件加速的世界生成。需要基础 C2ME 模组。

强烈建议安装 ScalableLux,因为光照很容易成为瓶颈。

注意

此模组需要 Java 25 才能正常工作,即使在 26.1 之前的版本也是如此。

在原版 worldgen 中,世界生成应与原版完全一致,只有一个例外:

由于原版实现依赖执行顺序,在极少数情况下,生物群系边界可能会偏移一到两个方块。(换句话说,这个模组和 Noisium 及其分支,比如 NoisiumForked 一样“原版”,尽管它们也存在相同问题却声称完全原版一致)

[常见的世界生成非确定性]() 同样适用。

当前只实现了噪声阶段和生物群系阶段。

在 CPU 成为瓶颈时,原版主世界预计可获得 80%+ 的性能提升。具体表现会因种子、数据包等因素而异。

此外,worldgen 现在也会包含 GPU 驱动 bug。请在用于现有世界之前先备份你的世界。

已知某些世界生成模组会灾难性失败。详见 模组兼容性 一节。

平台兼容性矩阵

  • Supported:已知总体可正常工作
  • Partial:已知可以工作,但有较大注意事项
  • Unsupported:已知完全无法工作
  • N/A:不适用,因为该组合不存在。
厂商 架构 驱动 Windows Linux MacOS
NVIDIA Maxwell 及之后 专有和开源 Supported Partial¹ Unknown
NVIDIA Kepler 专有 Unknown Supported Unknown
NVIDIA 更老的显卡 任意 Unknown Unknown Unknown
NVIDIA 受 nouveau 支持的 GPU nouveau 上的 Rusticl N/A Unknown N/A
Intel Gen9, Gen9.5⁵ 官方² Partial³ Partial⁴ Unknown
Intel Gen11, Gen12, Gen12.5⁶ 官方² Unsupported¹² Unsupported¹² Unknown
Intel Gen12.7, Xe2, Xe3 及之后⁷ 官方² Partial³ Partial⁴ Unknown
Intel 更老的显卡 官方² Unknown Unknown Unknown
Intel 受 iris 支持的 GPU iris 上的 Rusticl N/A Unknown N/A
AMD RDNA1 及之后¹⁴ 官方⁸ Supported⁹ Supported Unknown
AMD GCN 官方¹⁰ Unsupported¹³ Unsupported¹³ Unknown
AMD 受 radeonsi 支持的 GPU radeonsi 上的 Rusticl N/A Partial¹¹ N/A
Qualcomm 任意 官方 Unsupported¹² Unsupported¹² N/A
Apple 任意 MacOS 驱动 N/A N/A Unsupported¹²
Apple 任意 asahi 上的 Rusticl N/A Unknown N/A
  • ¹ 驱动已知会在一段时间后卡死。535 LTS 驱动分支似乎工作正常。
  • ² Windows 上的官方驱动包。Gen9 和 Gen9.5 需要最新驱动:

Gen9: https://www.intel.com/content/www/us/en/download/762755/intel-6th-gen-processor-graphics-windows.html

Gen9.5: https://www.intel.com/content/www/us/en/download/776137/intel-7th-10th-gen-processor-graphics-windows.html

Linux 上: https://github.com/intel/compute-runtime

  • ³ GPU 已知在几乎所有非原版 worldgen 下都会崩溃。实际表现可能不同。
  • ⁴ GPU 已知会在某些复杂 worldgen 数据包中崩溃,例如 Terralith。实际表现可能不同。
  • ⁵ Gen9 和 Gen9.5 是 6th-9th gen core 处理器,以及 10th gen non-G series core 处理器上的集成显卡
  • ⁶ 这里的 Gen11 和 Gen12、Gen12.5 指的是 10th G-series core 处理器、11th-14th gen core 处理器中的集成显卡,以及 Arc DG1、Arc A-series
  • ⁷ Gen12.7 指 Meteor Lake 和 Arrow Lake 的集成显卡。

此时它指的是 Core Ultra 100 series 及以上的集成显卡,以及 Battlemage 独立显卡及以上。

  • ⁸ Windows 上的官方驱动包。Linux 上的 ROCm 运行时。
  • ⁹ 已知 26.5.1 版本驱动会始终崩溃。现有安装升级到 26.6.1+ 也可能崩溃。

如果你在 26.6.1+ 上遇到崩溃,建议先用 DDU 再进行全新安装。

  • ¹⁰ Windows 上的官方驱动包。Linux 上的 AMDGPU-Pro 运行时。
  • ¹¹ Mesa 26.1.x 分支已知可在 RDNA3/4 上工作。任何硬件组合都可能发生任何情况,包括损坏的 worldgen。实际表现可能不同。
  • ¹² 缺少 FP64 支持
  • ¹³ 驱动崩溃
  • ¹⁴ 不包括 Ryzen 7000 系列和 9000 系列的集成显卡。它们对这项任务来说太慢了。

此处未列出的任何硬件均处于 Unknown 状态。欢迎测试符合下述最低要求的其他硬件配置。

最低硬件要求

  • 可工作的 OpenCL 1.2+ 驱动
  • clkhrfp64 支持(fp64 支持)

额外加分项

  • 可工作的 OpenCL 3.0 驱动
  • clkhrdevice_uuid,用于稳定设备匹配
  • CLQUEUEOUTOFORDEREXECMODE_ENABLE,用于最佳性能。AMD GPU 上不存在
  • clkhrpriorityhintsclkhrthrottlehints,用于队列优先级。已知仅 Intel GPU 上存在
  • 非统一 workgroups,Nvidia GPU 和部分 AMD GPU 上不存在

使用 Chunky 的性能预期

对于原版主世界 1200+ cps 目标:

CPU:现代中端桌面处理器(9700X、9800X3D、245K)

GPU:

  • Nvidia GTX 1060 或更高
  • AMD Radeon RX 6500 XT 或更高
  • Intel Arc B570 或更高(Intel 没有更弱的 GPU,所以就这样)

对于原版主世界 2500+ cps 目标:

CPU:现代旗舰桌面处理器(9950X、9950X3D、285K、270K+)

GPU:

  • Nvidia GTX 1080 Ti 或更高,RTX 4060 Ti 或更高
  • AMD Radeon RX 7600 XT 或更高
  • Intel Arc B570 或更高(Intel 仍然没有更弱的 GPU)

使用方法

Windows

  • 安装 Fabric
  • 安装模组
  • 完成

Linux

由于大多数 linux 发行版不会自带 OpenCL,你需要手动安装。

在 Flatpak 中运行是不受支持的配置

Flatpak 目前只支持 Rusticl(以及大概也支持 NVIDIA)作为 OpenCL 运行时,而这在 Linux 上相当粗糙。请参阅上面的兼容性矩阵。

对于 Nvidia 用户

通常你发行版提供的 nvidia 驱动包已经包含 OpenCL 驱动。你应该可以直接使用。如果没有,请查看以下各发行版的特定设置。

基于 Debian 的发行版(例如 Ubuntu)

所有厂商:安装 ocl-icd-opencl-dev

Nvidia:安装 nvidia-driver-full

AMD:安装 rocm-opencl-icd

Intel:Gen12 及以上安装 intel-opencl-icd,更老的 iGPU 安装 intel-opencl-icd-legacy(不过 Debian 13 上没有,你需要自己编译)

Arch Linux

https://wiki.archlinux.org/title/General-purposecomputingongraphicsprocessing_units#OpenCL

所有厂商:安装 ocl-icd

Nvidia:安装 opencl-nvidia

AMD:安装 rocm-opencl-runtime

Intel:Gen12 及以上安装 intel-compute-runtime,更老的 iGPU 从 AUR 安装 intel-compute-runtime-legacy

基于 Fedora 的发行版

注意:如果你在使用带 AMD GPU 的 Bazzite,你需要改用 Bazzite-DX,而不是按照下面步骤操作。

所有厂商:安装 ocl-icd-devel

Nvidia:https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/fedora.html

AMD:安装 rocm-opencl

Intel:Xe 使用 intel-opencl

使用 Rusticl(非常实验性)

这需要 Mesa 26.1 及以上,并且需要启用 rusticl+fp64

兼容性

数据包兼容性

此功能保证可与能够在原版中加载的数据包一起工作。例如:

  • Stardust Labs 数据包(Terralith、Incedium、...)
  • Tectonic
  • CliffTree
  • ... 以及更多

模组兼容性

大多数非 worldgen 模组都应该可用。

对于 worldgen 模组:

  • 重新打包数据包的模组(也就是:如果重命名为仍可作为数据包工作的 .zip),请参考数据包兼容性。
  • Tectonic 3.0.20+ 作为模组可用
  • 使用自定义密度函数的模组当前不工作。(例如 Enderscape、The Bumblezone)
  • 重新实现整套新世界生成器的模组不工作,而且在没有大量工作前可能永远不会支持。(例如 Big Globe)
  • 一些其他特殊情况:
  • Biomes O' Plenty:会导致生物群系放置完全失败
  • TerraBlender:也会导致生物群系放置完全失败

已知问题:

  • 着色器编译已知会花费一段时间,具体取决于所使用的数据包。
  • 着色器编译时预计会有额外的堆外内存使用
  • 使用 CPU 后端的 PoCL 即使在配置中将 pocl 加入黑名单,也几乎肯定会崩溃。解决方案是直接完全移除它。
  • 直接引用 minecraft:beardifier 密度函数的数据包,在地形形状上可能会出现轻微错误。这里没有计划修复,因为原版不受影响,而且修复会让 GPU 吞吐量减半。

调优建议,给只想让 worldgen 跑得更快的人

感谢 Discord 上的 skillnoob_

模组:

  • ScalableLux(光照引擎优化,高性能区块生成时的瓶颈)
  • Lithium(各类通用优化模组)
  • FerriteCore(内存使用改进)
  • Structure Layout Optimizer(让结构生成更快)
  • zFastNoise(加速 worldgen 中的噪声和表面生成器)

Java/JVM 参数:

  • -XX:+UseCompactObjectHeaders -Dchunky.maxWorkingCount=768-Dchunky.maxWorkingCount=768 仅在你使用 Chunky 时相关)。
  • 如果分配超过 16GB 内存,请使用 -XX:+UseZGC,否则使用 -XX:+UseG1GC -XX:G1HeapRegionSize=16M-XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational

然后在配置文件夹中的 c2me.toml 里,你可以把 globalExecutorParallelism = "default" 选项改成你的线程数,或者稍微低一点。

例如,如果你有一个 16 线程 CPU,就需要把它改成 globalExecutorParallelism = 16

注意:如果你需要 fps 和 tps 稳定性,你需要为系统其余部分保留一些线程。

你还可以在配置中启用 gcFreeChunkSerializer = true,这可以提升区块生成性能。

常见问题

这会使用多个 GPU 吗?

默认情况下,它会对所有能找到的 OpenCL 设备进行“least-busy”调度。

不过,通常瓶颈其实在 CPU。见下文。

所以除非你只有一堆 GT1030,否则不要指望多 GPU 带来提升。

我的 GPU 几乎没在用,而 CPU 已经拉满了。发生了什么?

在一对合理的 CPU 和 GPU 组合下,你会受 CPU 限制。主要原因是目前只实现了噪声阶段和生物群系阶段。

未来可能会实现其他阶段。

我该如何选择 GPU?

你可以在配置文件里指定白名单和黑名单。设备 UUID 可以在日志中找到。

AMD GPU 在日志里显示为 gfx something,而不是它们的营销名称。

voxy 能和这个一起用吗?

可以。

简而言之,要为 voxy 生成渲染距离,请安装 Chunky,运行 /voxy import current,然后启动一个 chunky 任务。

建议加入他们的 Discord 服务器以获取更多信息。

Distant Horizons 能和这个一起用吗?

简短回答:不建议。请改用 Voxy。

长回答:

DH 太慢了,看不出这里带来的收益。

如果你仍然打算使用 DH,请在 DH 中使用 Internal Server / Full - Save Chunks 模式,这样加速才会生效。

即便如此,你也可能看不到提升,因为 LoD 生成本来就是这条链路里最慢的部分。

我遇到了 OpenCL error [-1001]。这是什么意思?

OpenCL ICD loader 无法找到任何 OpenCL 驱动。请检查你的驱动安装。

建议使用 clinfo 工具快速检查。

这在专用服务器上能用吗?

只要驱动就位,它在专用服务器和单人模式下都可用。

专用服务器仅提供 linux x8664、linux arm64 和 windows x8664 二进制文件。

如果初始化失败,能否回退到普通 worldgen?

默认不能。可以在配置文件中通过 openclAccel.allowIncompatibilityFallback 来实现。

我听说 Vulkan 才是正统图形 API。为什么用 OpenCL?

  • 我熟悉它
  • 我在 vulkan 里需要无类型指针,而这直到最近 Vulkan 里都没有

这实际上等同于要求 Vulkan 1.4,会大幅缩小硬件兼容范围

  • Vulkan 并没有明确规定 FP64 精度,只说“至少达到 FP32 的精度”
  • 正确舍入的 fp 除法和 sqrt 在 Vulkan 规范里仍然缺失

为什么不用 CUDA?或者 Rocm?或者 Level0?或者 Metal?

不使用厂商锁定的 API。

我在 AMD RDNA GPU 上,而且在世界生成甚至还没开始前就崩溃了。为什么?

已知 26.5.1 版本驱动会始终崩溃。升级到 26.6.1 的现有安装也可能崩溃。

如果你在 26.6.1 上遇到崩溃,建议先用 DDU 再进行全新驱动安装。

参见平台兼容性矩阵中的脚注 9。

基本信息
模组名称C2ME OpenCL Acceleration Module
作者ishland
下载量102,522
关注数123
支持版本1.21.1 - 26.3-snapshot-3
加载器fabric / neoforge
客户端unsupported
服务端required