2016-03-08 83 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>中的二進制。