Misc. bug: Intel UHD 770 graphics crashes on Vulkan TOP_K unit test

Misc. bug: Intel UHD 770 graphics crashes on Vulkan TOP_K unit test 通常发生在集成显卡(2 Xe 核心)运行 llama.cpp 的 Vulkan 后端 TOP_K 单元测试(k=1023 最坏情况)时,因执行时间过长触发 Wind

快速结论:Misc. bug: Intel UHD 770 graphics crashes on Vulkan TOP_K unit test 通常发生在集成显卡(2 Xe 核心)运行 llama.cpp 的 Vulkan 后端 TOP_K 单元测试(k=1023 最坏情况)时,因执行时间过长触发 Windows TDR(超时检测与恢复)导致设备丢失。优先排查 iGPU 驱动版本并增加 TdrDelay 注册表值。

适用环境:工具:test-backend-ops(llama.cpp 内置测试);操作系统:Windows 11 25H2(build 26200.8875);CPU:i9-13900K;显卡:Intel UHD Graphics 770(iGPU 驱动 32.0.101.7088);主显卡:Intel Arc A770(dGPU 驱动 32.0.101.8860,测试正常)。

最快修复方案:将 Windows TDR 延迟值(TdrDelay)增加至 10 秒并重启系统(已验证可解决该设备崩溃问题)。

注意事项:该方案仅绕过了超时限制,并未优化 shader 执行效率;对于慢速 GPU,长耗时测试仍可能触发 TDR,建议在集成显卡上跳过此特定测试(k=1023)或仅运行低 k 值的 TOP_K 测试。

问题场景

用户使用 llama.cpp 的 test-backend-ops 工具,在 Vulkan 后端执行 TOP_K 单元测试,参数为 TOP_K(type=f32,ne=[524299,1,2,1],k=1023,ties=1)。该测试在 Intel Arc A770 独立显卡上正常通过,但在同一系统的 Intel UHD Graphics 770 集成显卡上导致程序崩溃,且无正常日志输出。

报错原文

# 不带验证模式的输出:直接崩溃,无错误日志
# 带验证模式(validation enabled)的输出:
Validation Warning: [ BestPractices-Error-Result ] | MessageID = 0x53c1342f
vkGetFenceStatus(): Returned error VK_ERROR_DEVICE_LOST.
Objects: 1
    [0] VkDevice 0x1d7ec203028

# 同时伴随 SPIR-V 废弃警告(非直接原因):
Validation Warning: [ BestPractices-SpirvDeprecated_WorkgroupSize ] | MessageID = 0xd8a870c
vkCreateComputePipelines(): pCreateInfos[0].stage is using the SPIR-V Workgroup built-in ...

原因分析

k=1023 是 TOP_K 算子的最坏情况(当前实现下),需要大量计算且执行时间极长。Intel UHD Graphics 770 仅有 2 个 Xe 核心(共享内存 32KB),处理该测试时耗时远超 Windows 默认 TDR 超时(一般为 2 秒),导致 Vulkan 设备丢失(VK_ERROR_DEVICE_LOST)。该问题在更高规格的 iGPU(如 8 Xe 核心)上未重现,但在其他 2 Xe 核心的 iGPU 上同样可能发生。

环境排查

  • 确认集成显卡型号:Intel UHD Graphics 770(规格,2 Xe 核心)
  • 确认 iGPU 驱动版本是否 ≥ 32.0.101.7088(问题中出现版本)
  • 确认 dGPU 驱动版本不影响(仅 iGPU 触发)
  • 检查 Windows TDR 相关注册表值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\TdrDelay(默认 2 秒)
  • 确认 llama.cpp 版本:10158(f87067841)
  • 确认测试命令:test-backend-ops.exe -o "TOP_K(type=f32,ne=[524299,1,2,1],k=1023,ties=1)"

解决步骤

  1. 修改 TDR 延迟值(已验证,可优先尝试

    参考来源

    ggml-org/llama.cpp #26219

    GamsGo AI

    AI 工具推荐

    想把多个 AI 模型放在一个入口?

    GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

    了解 GamsGo AI

    推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

    这个方案解决了吗?

celebrityanime
celebrityanime
文章: 15751

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注