我正在使用ALEA GPU进行GPU编程(C#)。如果我在内核中使用像atomic_add这样的原子操作,在内核调试期间,我在CUDA WarpWatch窗口中为我的变量得到“无法解析名称”错误。我看到了be Idx.x、be Dim.x、threadIdx.x和数组的值,但变量名无法解析。内核按预期工作,但在调试期间无法监控变量,因此很难修复任何错误。CUDA 8工具包已安装,我正在使用Visual Studio 2015。
有什么想法吗?
发布于 2017-01-08 22:41:41
这是因为NVIDIA NVVM后端进行了一些优化,无论它是在调试模式还是发布模式下编译的。它将一些值分配给寄存器,但目前还没有办法将其转换为。CUDA C的行为非常相似。获得结果的唯一方法是将它们写入全局内存以欺骗寄存器分配,或者像您所做的那样将它们写入内核中的控制台。到目前为止,我不知道有任何其他方法。
https://stackoverflow.com/questions/41520838
复制相似问题