如何在Linux平台下的MATLAB中调试.CU文件

Posted

技术标签:

【中文标题】如何在Linux平台下的MATLAB中调试.CU文件【英文标题】:How one can debug .CU file in MATLAB under linux platform 【发布时间】:2013-04-23 08:24:19 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

    不应将用于 CUDA 调试的设备用于显示(例如,您的系统中需要有 2 个 GPU 并将显示连接到 GPU,而不是用于 CUDA 的那个)。 您应该使用调试信息编译您的 CU 文件(将 -g -G 传递给 NVCC)

【讨论】:

【参考方案2】:

正如 Eugene 所说,编译你的 *.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 选项。否则会出现段错误。

【讨论】:

以上是关于如何在Linux平台下的MATLAB中调试.CU文件的主要内容,如果未能解决你的问题,请参考以下文章

使用VS+VisualGDB编译调试Linux程序

RK3399平台开发系列讲解(内核调试篇)9.30如何在Linux kernel代码中获取当前进程的信息

tvm在linux环境下的安装与编译及vscode如何配置tvm的远程连接调试环境

tvm在linux环境下的安装与编译及vscode如何配置tvm的远程连接调试环境

tvm在linux环境下的安装与编译及vscode如何配置tvm的远程连接调试环境

linux下gdb调试