GPU服务器

GPU服务器

这个模组让你可以使用GPU来加速Minecraft服务器,使其运行更快。

游戏机制

GPUmod - Minecraft 的 GPU 服务器加速

这是一个 Minecraft 的服务端 Fabric 模组,使用 OpenCL 将繁重的服务器计算卸载到你的 GPU。无需客户端模组。

功能说明:

该模组将通常由 CPU 逐个执行的各项服务器任务改为在 GPU 上并行运行。

地形生成 - 当创建新区块时,GPU 使用多层 Perlin 噪声生成地形高度图。它会在 GPU 上并行计算大陆、丘陵、山脉和山谷。随后 CPU 根据高度图填充实际的方块。

光照 - 当区块需要计算光照时,GPU 会对区块光照(火把、萤石)和天空光照运行迭代式光照传播。它使用双缓冲传播,最多经过 15 次迭代收敛,同时处理一个区段内的所有 4096 个方块。

矿石放置 - 在区块生成期间,GPU 计算矿石应该生成的位置(煤炭、铁、金、钻石、青金石、红石、绿宝石、铜)。它一次性确定所有矿石类型的位置,然后 CPU 在这些位置放置实际的矿脉。

寻路 - 当生物需要导航时,它们的寻路请求会被批量收集。GPU 不再逐个生物求解路径,而是使用并行 A* 算法一次性求解所有待处理的路径。结果会被缓存,并在下一个游戏刻作为真实路径返回。

爆炸 - TNT 和苦力怕爆炸使用 GPU 光线投射,以球形模式发射 1352 条射线。GPU 同时追踪每条射线穿过爆炸抗性网格,确定哪些方块被摧毁。这完全取代了原版爆炸逻辑。

实体物理 - 当世界中有 16 个或更多实体时,它们的位置和速度更新会被批量发送到 GPU。重力、阻力和速度限制均使用 Structure-of-Arrays 内存布局并行计算,以实现最佳 GPU 性能。

随机刻 - 作物生长、火焰蔓延、冰融化、树苗生长以及其他随机刻事件会在所有已加载的区块区段中批量收集。GPU 使用并行随机数生成一次性处理它们,然后 CPU 应用结果。

碰撞检测 - 当有 16 个或更多实体时,GPU 运行空间哈希宽相碰撞检测,以找出重叠的实体对。结果会被存储,并可由其他系统查询。

红石(实验性,默认关闭) - 一个游戏刻内的红石线更新会被收集起来,整个网络在 GPU 上使用并行信号传播一次性求解,而非原版的顺序更新。

工作原理:

该模组使用 JOCL(Java OpenCL 绑定)与你的 GPU 通信。启动时它会检测你的 GPU,编译 13 个 OpenCL 内核程序,并创建多个命令队列以实现并发执行。它使用带有预分配缓冲区的内存池来避免分配开销。

每个任务都有批量大小阈值。如果待处理的项目不够多(例如物理任务少于 16 个实体),它会跳过 GPU 并让原版处理,因为对于小工作量而言,GPU 调度开销并不划算。

所有 GPU 任务都有 CPU 回退方案。如果 GPU 因任何原因失败,服务器会使用原版逻辑继续正常运行。

配置:

编辑 config/gpumod.properties 以启用/禁用单个任务、设置批量阈值、调整迭代限制,以及启用调试/性能日志记录。

就我而言,它不需要强劲的 GPU,4060 就完全够用了,但如果我说错了请纠正我。

免责声明!!!

这仍处于非常早期的开发阶段,如果发现 bug 请在 Discord 中报告!!!