HWOPT (Hardware Optimization) 是一个 Minecraft 优化模组,使用 C++ 重写原版算法,通过 Java 25 FFM API 实现低开销本地调用,并利用 GPU(SYCL/DPC++)加速游戏性能。
- pd34429710 (QQ 频道)
正在开发中... GPU 加速(SYCL)及其他优化仍在开发中。
| 名称 | 类别 | 状态 | 模块版本 | 备注 |
|---|---|---|---|---|
| 地形生成优化 | 优化 | 已完成 | 26.1 | 优化原版区块生成速度 |
| 实体碰撞优化 | 优化 | 已完成 | 26.1 | 批量 AABB 碰撞检测 |
| 实体渲染剔除优化 | 优化 | 已完成 | 26.1 | 遮挡在墙后的实体/方块实体不渲染,支持 Tick 剔除 |
| 实体 AI 优化 | 优化 | 已完成 | 26.1 | 寻路重算添加 5 tick 冷却 |
| 粒子优化 | 优化 | 已完成 | 26.1 | 异步 Tick + 光照缓存 + 碰撞优化 |
| 网络数据包压缩 | 优化 | 已完成 | 26.1 | 减少网络流量,出站约为原版 13% |
| 村庄出生点 | 辅助 | 已完成 | 26.1 | 世界出生点自动设为村庄 |
| 异步日志 | 优化 | 已完成 | 26.1 | 日志异步写入 |
| 生物消失优化 | 优化 | 已完成 | 26.1 | 捡过物品的生物也能正常消失,消失时掉落身上物品 |
| 更多优化开发中... | 未完待续 |
- 模块版本号为
年份/修订版本
| 游戏版本 | MOD版本 | NeoForge | Forge | Fabric |
|---|---|---|---|---|
| 26.2 | 26.1.x | ✓ | ✕ | ✕ |
- mod 不向下支持旧版本,跟随游戏更新脚步采用滚动更新策略。新版本发布后,旧版本不再维护。
| MOD版本 | Windows | Linux | Intel CPU | Intel iGPU | Intel dGPU | AMD CPU | AMD iGPU | AMD dGPU | NVIDIA dGPU |
|---|---|---|---|---|---|---|---|---|---|
| 26.1.x | ≥10 19H1 | ✕ | AVX2 | 11th Gen+ | ✓ | AVX2 | ✕ | ✕ | CUDA 12.0+* |
Intel 11代及更早/AMD/NVIDIA无硬件平台进行测试,表格内容仅为相关文档资料参考- 基础功能 CPU 满足任意条件即可
- SYCL/DPC++ (GPU加速) 需要硬件、驱动、运行时支持,详情参见 Intel oneAPI 系统要求
- MOD版本号为
年份/功能版本/修订版本 - 预编译二进制仅提供 Windows x64;自行编译可支持 Linux 及其他 GPU 后端
*NVIDIA/AMD GPU 后端基于 Codeplay 插件,该插件已停止分发,后续更新可能受影响
- 为什么更适合
iGPU而不是dGPU?
- 在 SYCL 编程模型中,内存模型分为三类:
host内存(即系统内存)、device内存(即显存/VRAM)和shared内存(由驱动自动迁移,但仍存在隐式拷贝)。多数 GPU 加速方案使用device内存,需要反复在系统内存与显存之间拷贝数据,开销较大;shared内存虽简化了编程,但底层仍依赖驱动进行数据迁移,无法彻底消除拷贝。本模组统一使用host内存,彻底省去了这部分拷贝开销,因此对"内存即显存"的iGPU(核显)尤为友好。现代iGPU通常通过Ring Bus总线(而非PCIE)与 CPU 相连,并配备大容量缓存,可直接访问系统内存(部分型号还带有L3/L4缓存),无需额外拷贝。而dGPU(独显)通过PCIE连接,延迟较高且必须频繁拷贝数据,该方案并不适合。
- 为什么选择 SYCL 而不是 Vulkan 计算着色器?
- SYCL 是单源 C++ 编程模型,可直接在 C++ 代码中编写 GPU 核函数,无需学习 GLSL/HLSL 等着色器语言,代码复用和移植成本更低。Vulkan 计算着色器需要管理复杂的管线状态、内存屏障和描述符集,开发效率较低。SYCL 的 C++ 集成度和性能显著优于 Vulkan。
- Native DLL 使用 Intel C++ 编译器编译相较于 MSVC 有什么优势吗?
- 在对 Clang、GCC、MSVC 等编译器的多项基准测试中,Intel C++ 编译器(ICX)均取得了优秀的表现,尤其在 Intel 硬件上能够更充分地发挥 SIMD 指令集的潜力。此外,本模组的 native 层重度依赖 Intel oneAPI 生态(DPC++、oneTBB 等),使用 ICX 可以确保各组件间 ABI 一致,避免跨编译器链接带来的兼容性问题。参考: 腾讯使用Intel® oneAPI工具提升MySQL性能最高达85%
- SYCL 相较于 Vulkan 有项目性能优势吗?
-
是。 同硬件基准测试中,SYCL + Level Zero 在 Intel iGPU 上的 f32 吞吐达 55,556 次/s,是 Vulkan f32 (10,183 次/s) 的 5.4 倍。
-
测试环境: Intel Core Ultra 9 285K (iGPU) + Intel oneAPI 2026.0 (SYCL) / Vulkan 1.4.350
-
数据量: 32³(32768 点)× 10000 次迭代
组合 设备 精度 内存 总耗时 每次 吞吐 Vulkan Ultra 9 285K (iGPU) f32 系统 982 ms 98.2 μs 10,183 次/s SYCL + Level Zero Ultra 9 285K (iGPU) f32 系统 180 ms 18.0 μs 55,556 次/s SYCL + Level Zero Ultra 9 285K (iGPU) f64 系统 695 ms 69.5 μs 14,388 次/s Vulkan AMD RX 6600 f32 系统 941 ms 94.1 μs 10,627 次/s -
复现: 测试代码见
CPP/hwopt/hwopt-benchmark/MathBenchmark.cpp,具备对应硬件和工具链者可自行复测。
- 未来会考虑使用 Vulkan 兼容更多硬件吗?
- 可能会。Vulkan 后端开发优先级不高,但如果有社区需求且有人力投入,可以评估。SYCL 在性能上仍然是首选。
- 为什么 mod 体积如此巨大?
- mod 体积主要来自
native/下的 30+ 个 DLL,其中 SYCL JIT 编译器(sycl-jit.dll186MB +common_clang64.dll145MB)、Intel GPU 编译器(intelocl64.dll106MB)、OpenMP 卸载运行时(omptarget.dll66MB)等合计约 542MB。
- Java 25
- NeoForge 26.1.2.75(Minecraft 26.1.2)
- Windows x64(原生 DLL 预编译为 win64;其他平台需要自行编译 C++)
cd JAVA
./gradlew build原生 DLL(hwopt.dll、hwopt-sycl.dll、Fortran.dll 等)存放于 src/main/resources/native/win64/,构建时自动打包。
C++ 开发者:
- Visual Studio 2026
- Intel® oneAPI Base Toolkit 2026.0
- Intel VTune (可选)
- Intel Advisor (可选)
[崩溃/错误/建议/...] 内容描述
- latest.log(压缩为 zip 上传)
- Mod 版本 — 请注明版本号
- 复现步骤 — 配置选项、地图种子等
- 是否安装其他 Mod — 是/否
- 设备信息
- CPU / GPU 具体型号
- 操作系统版本 (如 Windows 11 25H2 26200.8655)
- 系统是否未经过修改(原版镜像,未修改 GPU 型号、未使用游戏优化工具及系统相关 patch 工具,其他情况请说明)
- 是否安装/更新硬件驱动
无过多要求,提交 PR 前请确认以下条件:
- 是否通过本地编译
- 是否能够正常运行游戏
- 是否对修改/添加部分进行简单游戏测试
- 分支无冲突(非强制)
- 是否有 AI 参与开发
- 是否对 AI 生成代码进行验证/测试
- 是否对 AI 生成代码进行检查/可读性修改/可维护性修改
