Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 ALEA GPU 进行 GPU 编程(C#)。如果我在内核中使用 atomic_add 之类的原子操作,则在内核调试期间,我的变量在 CUDA WarpWatch 窗口中出现“无法解析名称”错误。我看到了 blockIdx.x、blockDim.x、threadIdx.x 和数组的值,但无法解析变量名。内核按预期工作,但在调试期间无法监控变量,因此难以修复任何错误。CUDA 8 Toolkit 已安装,我正在使用 Visual Studio 2015。
有任何想法吗?
发生这种情况是因为 NVIDIA NVVM 后端进行了一些优化,无论它是在调试还是发布模式下编译。它为寄存器分配了一些值,目前没有办法关闭它。CUDA C 的行为非常相似。获得结果的唯一方法是将它们写入全局内存以欺骗寄存器分配,或者像您所做的那样将它们写入内核中的控制台。截至目前,我不知道任何其他方法。