0

我正在使用 ALEA GPU 进行 GPU 编程(C#)。如果我在内核中使用 atomic_add 之类的原子操作,则在内核调试期间,我的变量在 CUDA WarpWatch 窗口中出现“无法解析名称”错误。我看到了 blockIdx.x、blockDim.x、threadIdx.x 和数组的值,但无法解析变量名。内核按预期工作,但在调试期间无法监控变量,因此难以修复任何错误。CUDA 8 Toolkit 已安装,我正在使用 Visual Studio 2015。

有任何想法吗?

4

1 回答 1

1

发生这种情况是因为 NVIDIA NVVM 后端进行了一些优化,无论它是在调试还是发布模式下编译。它为寄存器分配了一些值,目前没有办法关闭它。CUDA C 的行为非常相似。获得结果的唯一方法是将它们写入全局内存以欺骗寄存器分配,或者像您所做的那样将它们写入内核中的控制台。截至目前,我不知道任何其他方法。

于 2017-01-08T14:41:41.143 回答