CUDA:挂起的代码可以用-g-g编译

CUDA:挂起的代码可以用-g-g编译,cuda,Cuda,我有一个CUDA代码,在某些输入数据上执行时挂起 为了调试它,我用-g-g编译了它,这样我可以用cuda gdb运行它, 但是当使用-g-g编译时,即使在cuda gdb之外,代码也可以正常工作 如何调试代码,可能会出现什么问题 我在多个地方实现了互斥机制。 尝试运行。这是在特斯拉K20 GPU上。你应该考虑使用CUDA原子。是的,这就是我正在使用的。真正的答案可能是“不要用多个地方实现的互斥机制编写代码”。调试版本和非调试版本之间的主要区别在于内核中的共享内存会溢出到本地内存,以便调试器可以对

我有一个CUDA代码,在某些输入数据上执行时挂起

为了调试它,我用-g-g编译了它,这样我可以用cuda gdb运行它, 但是当使用-g-g编译时,即使在cuda gdb之外,代码也可以正常工作

如何调试代码,可能会出现什么问题


我在多个地方实现了互斥机制。

尝试运行。

这是在特斯拉K20 GPU上。你应该考虑使用CUDA原子。是的,这就是我正在使用的。真正的答案可能是“不要用多个地方实现的互斥机制编写代码”。调试版本和非调试版本之间的主要区别在于内核中的共享内存会溢出到本地内存,以便调试器可以对其进行检查。你在内核的任何地方都使用共享内存吗?你是说用共享内存清除吗?我在任何地方都不使用这种内存。我在上面键入了下划线、下划线、共享、下划线、下划线。在使用附加参数编译后,我使用cuda memcheck运行了代码:-G-Xcompiler-rdynamic代码在cuda memcheck中正常完成,并且不会挂起。接下来我该怎么做才能找到问题?也许在互斥实现中存在竞争条件。