快速结论:这个报错通常出现在 Linux 下用 CUDA 后端编译 llama.cpp 的时候,触发点是 ggml/src/ggml-cuda/fattn.cu 里 flash attention 的 MMA 模板实例化失败,导致整个编译中断在 96 个错误。最优先排查的是你当前 checkout 的 commit 是否正好落在已知的 CUDA flash attention 编译回归区间,以及是否能用上游对应的修复 PR 替换。
适用环境:Issue 中确认的信息:Linux(Linux Mint 22.3,基于 Ubuntu 24.04)、GGML 后端为 CUDA、显卡为 NVIDIA Tesla V100 32GB(Volta 架构)、编译的 commit 为 6f41ac59e0a49a00483a316a22ada6b04edd2950。Python、CUDA Toolkit、驱动、CMake 具体版本 Issue 未给出。
最快修复方案:采用 Issue 评论中给出的修复 PR(ggml-org/llama.cpp #29224),切换到该 PR 的代码后重新编译,Issue 中说明 “The issue should be fixed by this PR”,可作为优先尝试。
注意事项:该 Issue 的标签为 bug-unconfirmed,正文没有给出构建成功的后续确认输出;PR #29224 是评论中给出的修复指向,但是否覆盖所有 Volta + CUDA 组合仍需自行验证。不要盲目改动 mma.cuh 的模板签名来绕过报错,可能引入静默的性能或数值问题。
问题场景
用户在 Linux 上以 CUDA 后端编译 llama.cpp 指定 commit,构建过程中在编译 ggml/src/ggml-cuda/fattn.cu 时失败。报错发生在 flash attention 的 MMA 路径模板实例化阶段,涉及 DKQ=576、DV=512、use_logit_softcap=true、is_fixup=true 等实例组合,与 Volta 架构(Tesla V100)上的 load_ldmatrix 模板推导失败相关。整个构建在 96 个错误后终止。
报错原文
/home/lemonzest/Temp/llama.cpp/ggml/src/ggml-cuda/mma.cuh(877): note #3327-D: candidate function template "ggml_cuda_mma::load_ldmatrix(ggml_cuda_mma::tile &, const T *, int, int, int)" failed deduction
void load_ldmatrix(
^
detected during:
instantiation of "void flash_attn_ext_f16_iter<DKQ,DV,ncols1,ncols2,nwarps,use_logit_softcap,V_is_K_view,use_sparse,needs_fixup,is_fixup,last_iter,oob_check,T_A_KQ,T_B_KQ,T_C_KQ,T_A_VKQ,T_B_VKQ,T_C_VKQ>(...)" at line 1398
instantiation of "void flash_attn_ext_f16_process_tile<...>(...) [with DKQ=576, DV=512, ncols1=2, ncols2=4, nwarps=2, use_logit_softcap=true, V_is_K_view=true, use_sparse=false, needs_fixup=false, is_fixup=true]" at line 1999
instantiation of "void flash_attn_ext_f16<DKQ,DV,ncols1,ncols2,use_logit_softcap,V_is_K_view,use_sparse>(...) [with DKQ=576, DV=512, ncols1=2, ncols2=4, use_logit_softcap=true, V_is_K_view=true, use_sparse=false]" at line 2105
instantiation of "void ggml_cuda_flash_attn_ext_mma_f16_case<DKQ,DV,ncols1,ncols2>(ggml_backend_cuda_context &, ggml_tensor *) [with DKQ=576, DV=512, ncols1=2, ncols2=4]" at line 160 of /home/lemonzest/Temp/llama.cpp/ggml/src/ggml-cuda/fattn.cu
instantiation of "void ggml_cuda_flash_attn_ext_mma_f16_switch_ncols1<DKQ,DV,ncols2>(ggml_backend_cuda_context &, ggml_tensor *) [with DKQ=576, DV=512, ncols2=4]" at line 362 of /home/lemonzest/Temp/llama.cpp/ggml/src/ggml-cuda/fattn.cu
96 errors detected in the compilation of "/home/lemonzest/Temp/llama.cpp/ggml/src/ggml-cuda/fattn.cu".
原因分析
最可能的原因是该 commit 在 CUDA flash attention 的 MMA 实现上存在模板推导/特化缺失:ggml_cuda_mma::load_ldmatrix<swz,T,dl> 对 ggml_cuda_mma::tile<16, 8, T, dl> 的候选模板在实例化时无法完成推导,因而 flash_attn_ext_f16 的一系列实例(DKQ=576、DV=512、ncols 组合、use_logit_softcap=true 等)全部编译失败并累积成 96 个错误。由于用户在 Volta(Tesla V100)上编译,可能与特定架构下的 ldmatrix / swizzle 特化分支有关。Issue 评论指出 PR #29224 修复该问题,说明这是一段可复现的回归,而非用户本地环境独有的问题。
环境排查
- 确认当前 git commit 是否为
6f41ac59e0a49a00483a316a22ada6b04edd2950,以及工作区是否有本地改动影响ggml/src/ggml-cuda下的文件。 - 确认 GGML 后端配置中启用了 CUDA。
- 确认 GPU 计算能力对应的架构:Tesla V100 为 Volta(SM 70)。
- 确认 CUDA Toolkit 与 NVIDIA 驱动版本是否满足当前 llama.cpp 对 CUDA 后端的最低要求(Issue 未给出具体版本,需按你自己环境的发行版文档核对)。
- 确认 CMake 版本与编译参数是否与当前仓库文档一致,尤其是 CUDA 相关开关。
- 如果使用了
GGML_CUDA_FA_QUANTS、GGML_VULKAN、GGML_CUDA_NCCL等额外开关,可先临时精简为仅 CUDA 以缩小报错范围。
解决步骤
- 记录当前 commit 与构建目录,便于回退和对比:确认
6f41ac59e0a49a00483a316a22ada6b04edd2950就是你正在构建的版本。 - 可优先尝试:按 Issue 评论中的指引,获取修复 PR ggml-org/llama.cpp #29224 对应的代码,替换当前 checkout 后重新编译。
- 如果该 PR 已合并进上游,改为同步上游主分支到包含该修复的提交,然后重新执行你的原有构建流程。
- 在重试前清理旧的构建目录,避免 CMake 缓存继续引用失败 commit 下的中间产物。
- 若切换代码后仍然报同一处
mma.cuh模板推导错误,按“环境排查”逐项确认 CUDA Toolkit / 架构设置,并在 Issue 中补充完整的编译日志与工具链版本。
验证方法
重新编译时不再出现 “96 errors detected in the compilation of …/ggml/src/ggml-cuda/fattn.cu”,并且 ggml/src/ggml-cuda/fattn.cu 对应的目标文件成功生成、整个构建以成功退出为止。保险起见,可在构建完成后跑一次带 flash attention 的推理任务,确认 CUDA 后端在 Volta 上能正常加载并执行,而不是只在编译层面通过。
参考来源
ggml-org/llama.cpp #29223(含评论中指向的修复 PR #29224)
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: Databricks non-GPT models 400 with reasoning_effort must be a string when reasoning.summary is set](https://www.chat-gpts.plus/wp-content/uploads/2026/09/42347-6e601b9c-768x403.jpg)
![[Bug]: Admin UI model edit persists derived pricing; price-map reload then records Azure spend as $0`](https://www.chat-gpts.plus/wp-content/uploads/2026/09/40649-99c03ccc-768x403.jpg)
![[Bug]: Streaming responses broken since 0.14.0 for ContextChatEngine and similar classes](https://www.chat-gpts.plus/wp-content/uploads/2026/09/22749-8310a4fe-768x403.jpg)