
Misc. bug: HIP CI is currently broken, likely by 23862
快速结论:此报错发生在 llama.cpp 的 HIP CI 构建过程中,主要由 PR #23862 引入的编译错误导致。优先排查是否启用了 -ffast-math 并缺少 -fno-finite-math-only 选项。
问题场景
在 llama.cpp 项目的 HIP CI 流程中,使用 ROCm 工具链编译 ggml-hip 目标时触发问题。用户可能在使用 AMD GPU 进行推理时,通过 Docker 或直接编译的方式运行构建。
报错原文
error: use of undeclared identifier 'INFINITY'
原因分析
可能原因是 PR #23862 的提交 d06ddd35896e2748fc95ccdb46fb260c5af2c029 在 CMake 编译选项中启用了 -ffast-math,该选项会抑制 INFINITY 宏的定义。当 HIP 编译器使用 -ffast-math 时,会导致 INFINITY 未声明,从而引发编译失败。
环境排查
- 确认 ROCm 版本(建议使用 7.2.1 或 7.2.4)。
- 确认 llama.cpp 的 Git 提交版本是否为
d06ddd35896e2748fc95ccdb46fb260c5af2c029。 - 确认编译器命令行中是否包含
-ffast-math选项。 - 确认是否在 Docker 环境下使用
rocm/dev-ubuntu-22.04:7.2.1镜像。
解决步骤
- 定位到文件
ggml/src/ggml-hip/CMakeLists.txt。 - 在已有的
-ffast-math编译选项后添加-fno-finite-math-only,确保INFINITY宏被正确声明。 - 重新运行 CMake 配置和构建命令。
- 或者,直接参考 PR #25373 中的修复内容,该 PR 已将此修复合并到主分支。
验证方法
成功完成构建,无 INFINITY 相关的编译错误。可通过运行 cmake --build build --target ggml-hip -j"$(nproc)" 来确认。



