
gpu-servers
这个模组旨在让我的世界服务器利用GPU进行部分处理,从而可将服务器速度提升高达60%。
GPUmod - 为我的世界提供GPU服务器加速
这是一个服务端Fabric模组,利用OpenCL将繁重的服务器计算任务卸载到你的GPU上执行。无需安装客户端模组。
它的功能:
该模组获取通常由CPU逐一处理的服务器任务,改为在GPU上并行运行它们。
地形生成 - 当创建新区块时,GPU使用多层Perlin噪声生成地形高度图。它会在GPU上并行计算生成大陆、丘陵、山脉和山谷。然后CPU根据高度图填充实际的方块。
光照计算 - 当需要计算区块光照时,GPU运行迭代式光照传播,处理方块光照(火把、萤石)和天空光照。它使用双缓冲传播,最多15次迭代即可收敛,同时处理区块内的全部4096个方块。
矿物分布 - 在区块生成期间,GPU计算矿物应该生成的位置(煤炭、铁、金、钻石、青金石、红石、绿宝石、铜)。它一次性确定所有矿物类型的位置,然后CPU在这些位置放置实际的矿脉。
寻路 - 当生物需要导航时,它们的寻路请求会被批量收集。GPU不是逐个处理生物寻路,而是使用并行A-star算法一次性解决所有待处理的路径。结果会被缓存,并在下一个游戏刻作为实际路径返回。
爆炸 - 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,RTX 4060就足够了,但如果我说错了,请纠正我。
免责声明!!!此模组仍处于非常早期的开发阶段,如果发现Bug,请在Discord中报告!!!
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。