要使用 MATLAB 进行 GPU 并行计算,需要编写一个 .cu 函数或内核,由 MATLAB 脚本调用。有什么方法可以在代码运行时进入 .cu 文件?我现在正在使用 GEDIT 编写 CUDA 内核。有人可以给我一个关于如何逐步调试 .cu 文件的指针吗?我没有为 CUDA 使用那个 mex 的东西。我只是在开发 .CU 文件并直接从 MATLAB 调用。
问问题
551 次
2 回答
1
我没有尝试过,但您可以使用 Nsight EE 或 cuds-gdb 附加到 Matlab 进程。一些问题:
- 用于 CUDA 调试的设备不应用于显示(例如,您的系统中需要有 2 个 GPU 并将显示连接到 GPU,而不是用于 CUDA 的一个)。
- 您应该使用调试信息编译您的 CU 文件(将 -g -G 传递给 NVCC)
于 2013-04-29T16:56:23.060 回答
0
正如尤金所说,在*.cu
启用调试的情况下编译你的
nvcc -g -G <insertName>.cu
然后传递cuda-gdb
给 MATLAB 的调试选项:
matlab -Dcuda-gdb
这将执行调试器。从调试器提示:
(cuda-gdb) set cudamemcheck on
(cuda-gdb) run -nodesktop -nojvm
启用cudamemcheck
是可选的,但对于识别内存访问违规非常有用。“运行”命令执行 MATLAB,我总是在没有 GUI ( -nodesktop
) 和 java 虚拟机 ( -nojvm
) 的情况下执行此操作。如果您使用 GUI 尝试此操作,则为 YMMV。
此时,您处于 MATLAB 环境中,可以继续运行任何引起问题的 (CUDA) 程序。您将需要学习cuda-gdb
命令。
编辑:根据我的经验,-nojvm
必须使用该选项。否则有段错误。
于 2015-11-27T14:06:50.550 回答