使用NVIDIA visual profiler对MATLAB mex CUDA应用程序进行性能剖析

5
我正在尝试对嵌入在mex文件中、从MATLAB调用的CUDA代码进行性能分析。在运行于win7 x64机器上,MATLAB r2014b版本。
该代码的结构如下:
 MATLAB   test.m
    ->contains some standard code generating variables (and calling 1 or 2 minor own MATLAB fucntions)
    -> calls testcuda.mex
        ->contains small, standard, no library C++ code
        -> calls either test1.cu or test2.cu
              ->.cu files end in cudaDeviceReset();
           

我按照互联网上多个地方的说法进行了以下操作:
  1. 编译mex文件。测试它们。它们能工作。
  2. 在test.m的结尾添加exit
  3. 启动NVIDIA Visual Profiler。文件->新建会话。
  4. 添加Matlab可执行文件的完整路径,例如C:\Program Files\MATLAB\R2014b\bin\matlab.exe
  5. 工作目录: 添加Matlab .m文件的完整路径。C:\CUDA_MATLABtests\MyToolbox
  6. 参数:-nojvm -nosplash -r test

然而,当我运行分析器时,出现了以下错误:

======== Warning: No CUDA application was profiled, exiting

仅此而已。

我错过了一些指示吗?

是否有任何特定的代码结构会使分析器无法分析?


我认为在第4步中,您必须使用C:\ Program Files \ MATLAB \ R2014b \ bin \ win64 \ matlab.exe。或者尝试使用-wait选项。 - Daniel
@Daniel 确实...win64文件夹,多么愚蠢的错误。由于MATLAB已经在Program Files而不是Program Files x86中,我以为它已经是64位版本了。考虑回答这个问题。 - Ander Biguri
1个回答

5

Matlab安装包含两个二进制文件,一个是在<matlabroot>\bin目录下的启动器,另一个是在<matlabroot>\bin\<arch>目录下的主应用程序。后者是可执行文件,还会在其地址空间中执行mex函数。

  • 当调试工具需要直接启动应用程序时,您必须启动<matlabroot>\bin\<arch>中的应用程序。
  • 当调试工具自动附加到子进程时,通常只需启动<matlabroot>\bin中的二进制文件,并设置-wait参数。看到启动器应用程序终止,调试工具通常会停止。

除非必须,否则不要直接使用<matlabroot>\bin\<arch>目录下的二进制文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接