主要内容

调试CUDA MEX函数

可以调试生成的CUDA®MEX函数使用MATLAB®或CUDA调试器。要在MATLAB中调试CUDA MEX函数,请使用dispfunction来检查MEX函数变量的内容。你不能使用保存调试MEX函数变量,因为代码生成不支持它。的代码生成不支持声明保存外在。你也可以用function来检查MEX函数变量的内容。

使用调试器调试CUDA MEX函数

这个例子展示了如何使用调试器调试CUDA MEX函数。

  1. 考虑一个入口点函数喷火它对矩阵的每个元素进行平方x并将结果按×的倍数缩放1 / (i + j),在那里我,我是行索引和列索引。

    函数[y] = foo (x)% # codegeny = coder.nullcopy(0(大小(x)));coder.gpu.kernelfun ();i = 1:尺寸(x, 1)J = 1:size(x,2) y(i, J)=(x(i, J)^2)/(i+ J);结束结束结束
  2. 要构建一个包含调试符号的CUDA MEX函数,请设置MEX配置对象属性EnableDebugging1

    cfg = coder.gpuConfig (墨西哥人的);cfg。EnableDebugging = 1;输入=兰德(32);codegen配置cfgarg游戏{输入}喷火
    或者,你也可以通过执行以下命令来调试MEX函数:

    codegen- garg游戏{输入}喷火

可以调试生成的CUDA MEX (foo_mex)使用Visual Studio®Windows上的CUDA调试器®或者CUDA GNU®调试器cuda-gdb在Linux上®系统。

在调试微软窗户平台

这个例子展示了调试的一般步骤foo_mex使用NVIDIA®Nsight Visual Studio Edition CUDA调试器。关于使用Nsight VSE的具体信息,请参考NVIDIA文档。

  1. 生成CUDA MEX函数后,启动Visual Studio。不要退出你的MATLAB会话。

  2. 通过选择将调试器附加到正在运行的MATLAB进程调试>连接到过程或按Ctrl + Alt + p在Visual Studio。有关更多信息,请参考您的Visual Studio文档。

  3. 在代码中设置断点。选择调试>新断点在Visual Studio。有关更多信息,请参考您的Visual Studio文档。

  4. 打开MATLAB和类型:

    = foo_mex(输入);

    foo.cu在Visual Studio CUDA调试器的第一个断点处打开。

  5. 如果您选择调试>继续,代码执行完成,并可在MATLAB中验证结果。

在调试Linux平台

CUDA GNU调试器cuda-gdb,作为CUDA Toolkit安装的一部分,可用于Linux系统,它提供了完整的源代码调试,包括设置断点、检查变量和逐行执行源代码的功能。

在本程序中,MATLAB命令提示符>>在MATLAB命令前显示,而linux >表示Linux提示符;您的系统可能会显示不同的提示符。调试器提示符为< cuda-gdb >

  1. 调试与cuda-gdb,在Linux提示符下,启动cuda-gdb调试器使用matlab函数- d选择。

    linux > matlab -Dcuda-gdb
  2. 告诉cuda-gdb停止以进行调试。

     handle SIGSEGV SIGBUS nostop noprint  handle SIGUSR1 stop print
  3. 启动MATLAB而不使用Java®虚拟机(JVM™),使用-nojvm启动标志。

    < cuda-gdb > -nojvm运行
  4. 在MATLAB中,启用调试dbmex函数并运行你的二进制MEX文件。

    >> dbmex on >> out = foo_mex(rand(32));
  5. 您已经准备好开始调试。

    设置断点通常很方便mexFunction所以你在入口例行程序的开始就停止了。

     break mexFunction  r
  6. 一旦遇到一个断点,就可以充分利用调试器提供的任何命令来检查变量、显示内存或检查寄存器。

    要从断点开始,输入:

    < cuda-gdb >继续
  7. 在最后一个断点停止后,输入:

    < cuda-gdb >继续

    代码执行完毕,结果可在MATLAB上进行验证。

  8. 在MATLAB提示符中,您可以输入以下命令将控制权返回到调试器:

    > > dbmex停止

    或者,如果你已经运行完MATLAB,输入:

    > >退出

    当你用完调试器后,输入:

    < cuda-gdb >退出

    返回Linux提示符。

关于CUDA调试器的更多信息,请参考NVIDIA文档。

另请参阅

||||

相关的话题

Baidu
map