NVIDIA Nsight Visual Studio版似乎无法同时调试CPU(主机代码)和GPU(CUDA代码)。使用Nsight Eclipse版(或cuda-gdb)就很简单了,例如,您可以从主机执行中“步进”到CUDA内核。如何在Visual Studio中实现相同的功能?
NVIDIA Nsight Visual Studio版似乎无法同时调试CPU(主机代码)和GPU(CUDA代码)。使用Nsight Eclipse版(或cuda-gdb)就很简单了,例如,您可以从主机执行中“步进”到CUDA内核。如何在Visual Studio中实现相同的功能?
因此,要调试CUDA应用程序,请按以下步骤操作:使用单独的 Visual Studio 实例来调试目标应用程序的主机部分。如果您希望在 CUDA 调试器附加的情况下调试 CUDA 应用程序的主机部分,则必须使用不同的 Visual Studio 实例进行附加。将同一实例的 Visual Studio 附加到目标应用程序的主机部分和设备部分进行调试会导致调试器冲突。结果是,本地调试器的操作将阻止目标应用程序和 CUDA 调试器,从而导致其挂起。
额外奖励:远程调试CUDA应用程序的步骤。
注意:看起来VS的远程CPU调试不如其本地CPU调试功能强大。例如,当您将鼠标悬停在CPU变量上时,在进行本地调试时值会像您期望的那样显示,但在进行远程调试时则不会。
仍未解答: 在触发CUDA断点之前,是否可以开始调试主机代码?似乎只能在第一个CUDA内核后才能调试主机代码,这是一个很大的限制。如果您希望在第一个CUDA内核之前调试主机代码怎么办?