2016-03-08 82 views
4

我试图剖析嵌入到mex文件中的CUDA代码,这些代码是从MATLAB调用的。使用NVIDIA可视化剖析器剖析MATLAB mex CUDA应用程序

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(); 

我做了以下内容,作为在互联网上several places说:

  1. 编译MEX文件运行Win7的X64机器上,如下MATLAB r2014b

    的代码结构。测试他们。他们工作。

  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 

仅此而已。

我错过了一些说明?

是否有任何特殊的代码结构,可以使配置文件不配置文件?

+0

我想在第4步中,您必须使用'C:\ Program Files \ MATLAB \ R2014b \ bin \ win64 \ matlab.exe'。或者尝试使用'-wait'选项。 – Daniel

+0

@丹尼尔确实.... win64文件夹,多么愚蠢的错误。 MATLAB已经在Program Files中,而不是在Program Files x86中,我认为它已经是64位版本。考虑回答这个问题。 –

回答

4

Matlab安装附带两个二进制文件,<matlabroot>\bin中的启动程序和<matlabroot>\bin\<arch>中的主应用程序。后者是在其地址空间中执行mex函数的可执行文件。

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

除非必须,否则千万不要直接使用<matlabroot>\bin\<arch>中的二进制。