如何在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文件的主要内容,如果未能解决你的问题,请参考以下文章
RK3399平台开发系列讲解(内核调试篇)9.30如何在Linux kernel代码中获取当前进程的信息
tvm在linux环境下的安装与编译及vscode如何配置tvm的远程连接调试环境
tvm在linux环境下的安装与编译及vscode如何配置tvm的远程连接调试环境