1

要使用 MATLAB 进行 GPU 并行计算,需要编写一个 .cu 函数或内核,由 MATLAB 脚本调用。有什么方法可以在代码运行时进入 .cu 文件?我现在正在使用 GEDIT 编写 CUDA 内核。有人可以给我一个关于如何逐步调试 .cu 文件的指针吗?我没有为 CUDA 使用那个 mex 的东西。我只是在开发 .CU 文件并直接从 MATLAB 调用。

4

2 回答 2

1

我没有尝试过,但您可以使用 Nsight EE 或 cuds-gdb 附加到 Matlab 进程。一些问题:

  1. 用于 CUDA 调试的设备不应用于显示(例如,您的系统中需要有 2 个 GPU 并将显示连接到 GPU,而不是用于 CUDA 的一个)。
  2. 您应该使用调试信息编译您的 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 回答