#8801·taichi

在 AMD RX 7900 XTX 上, Vulkan 后端在精确的网格大小阈值处无限期卡死(不是 VRAM 限制)

作者: c-goodin创建于 2026年8月21日更新于 2026年8月21日

标题: AMD RX 7900 XTX 上的 Vulkan 后端在精确的网格大小阈值处无限期卡死(不是 VRAM 限制)**

系统 ** - GPU: AMD Radeon RX 7900 XTX, 24GB VRAM - 操作系统: Windows 11 - Python: 3.12.0 - Taichi 版本: 1.7.4 - 后端: Vulkan (通过真实执行的内核确认,而不仅仅是成功的 ti.init()) ** 摘要 ** 运行基于 MPM 类型的粒度级仿真(粒子 + 背景网格,标准的 substep()/reset() 规范)正确且高效地运行在大量粒子数量下 - 然后在一个精确可重现的阈值处无限期卡死,没有错误、崩溃或超时消息。这似乎不是内存容量问题 - 失败点的 VRAM 使用量仅占可用资源的一小部分。 ** 重现 ** 使用标准的 2D MPM 内核(粒子数 = 9000 * quality**2, 网格 = 128 * quality),我对 quality 值进行了升级测试,然后在发现失败后对界限进行了二分搜索: | 质量 | 粒子 | 结果 | --- | --- | --- | 1 | 9,000 | OK - 271.7 fps | 4 | 144,000 | OK - 271.8 fps | 16 | 2,304,000 | OK - 279.1 fps | 32 | 9,216,000 | OK - 289.5 fps | 64 | 36,864,000 | OK - 295.4 fps | 72 | 46,656,000 | OK - 283.5 fps | 74 | 49,284,000 | OK - 298.3 fps | 75 | 50,625,000 | 无限期卡死 (>90s,无错误,无崩溃,无完成) | 76 | - | 无限期卡死 | 80 | - | 无限期卡死 | 96 | - | 无限期卡死 | 该界限是精确且可重复的: quality=74(网格 9472x9472)每次都在 ~0.07s 完成,速度约为 298fps。 quality=75(网格 9600x9600)每次都无限期卡死,没有例外,没有驱动崩溃消息,也没有最终完成(在放弃之前测试了 90s 的墙时长)。 ** 为什么这看起来不像是 VRAM 问题 ** 在 quality=75 时,实际内存占用(网格字段 + 粒子字段)约为 2.73 GB - 约为此卡的 24GB 的 11%。性能在粒子/网格数量接近失败点时没有显著下降(在最后一次成功运行之前一直保持 298fps),这与接近内存上限不符。这更像是驱动级别的调度限制、Vulkan 工作组/缓冲区大小限制或特定于此网格维度的代码生成问题 - 而不是资源耗尽。 ** 为什么我认为这值得一看 ** 这可能与 #8572 中已跟踪的 AMD/Vulkan 不稳定性有关("相同的代码在 Nvidia CUDA 上运行但不在 AMD Vulkan 上运行"),尽管此处的特定症状(在精确的硬挂阈值处而不是一般性故障)可能指向不同或更具体的根本原因。我很乐意提供完整的测试脚本、精确的网格维度或运行其他有用的定制测试。

内容来源: taichi-dev/taichi