如何使用Nvidia Visual Profile和Matlab对CUDA进行性能分析

3
我需要用Matlab来分析我的CUDA代码。为了提高性能,我已经将一些Matlab代码转换成了CUDA。我通过调用mexFunction来调用CUDA完成这个过程。但是,matlab的feval函数无法提供足够的控制。我可以通过VS运行mexFunction进行调试,但是我也需要调试内核,因为我认为问题就出在那里。
所以,我的问题是如何在执行调用它的Matlab函数时通过分析器运行CUDA代码?
将所有输入的值硬编码到CUDA函数中是不现实的。
我正在运行Matlab 2012a 64位,在Windows 7 64位上使用Tesla C2050 GPU卡。
3个回答

5
如果你所需要的只是性能分析而不是 nSight 所提供的调试功能,那么你可以使用我使用的以下技巧,在可视化分析器上运行 matlab 程序,而无需创建一个带有测试主函数的 exe 文件:
创建一个批处理文件,其中包含以下内容:
matlab -nojvm -nodesktop -wait -sd "yourBaseFolder" -r "theMFunctionYouWantToRun;exit;"

然后在nVidia Visual Profiler上运行脚本。

我正在使用feval CUDA API,这有一个额外的优点,可以显示Matlab实际在做什么。我猜当使用MEX时也应该可以工作,但从未尝试过。如果对于MEX文件也起作用,请告诉我。


4
您可以按照以下步骤,使用NVIDIA Visual Profiler对包含CUDA代码的Matlab mex文件进行性能分析。
1.根据使用Visual Studio编译CUDA mex文件的指南编写您的mex文件,其中包括CUDA代码。
2.在mexfunction的结尾添加cudaDeviceReset()
3.编写您的Matlab .m文件,并在其结尾添加exit
4.启动NVIDIA Visual Profiler。选择“文件”- >“新建会话”。
5.文件:添加Matlab可执行文件的完整路径,例如C:\Program Files\MATLAB\R2012b\bin\win64\MATLAB.exe。
6.工作目录:添加Matlab .m文件的完整路径
7.参数:-nojvm -nosplash -r文件名(无.m扩展名)
8.下一步->完成,就这样!

1

NVIDIA Nsight Visual Studio Edition 2.2应该能够对您的内核进行分析。

  1. Nsight | 新建分析活动
  2. 将活动类型设置为Profile CUDA Process Tree(matlab可以启动另一个可执行文件)
  3. 要运行的实验设置为全部

Nsight Visual Studio CUDA Profiler具有两个功能,这些功能应该可以实现:

  1. 活动“Profile CUDA Process Tree”将对CUDA进程及其启动进程的所有子进程进行分析。这很重要,因为我认为Matlab的默认实现是启动32位版本,如果在64位系统上,则启动64位可执行文件,因此仅启动Matlab是不足够的。

  2. Nsight分析器支持应用程序内核重放,支持在一次应用程序执行中多次使用相同输入运行内核。

NVIDIA Visual Profiler通过多次运行应用程序来收集结果。它不支持启动器应用程序。这可以通过直接启动正确版本的Matlab.exe来克服。由于应用程序重放机制,如果您可以自动运行mexFunction,则可以使用Visual Profiler进行分析。我没有尝试过使用Visual Profiler对Matlab进行分析,但我知道Nsight团队过去已经测试过这一点。


VS2010 lite没有可用的Nsight,我找不到可靠的网站从中下载。您知道我可以从哪里下载它吗?另外,我是否正确地假设它可以与VS2010 lite一起使用?如果有必要,我也有完整的专业版VS2005可用。 - Beau Bellamy
Nsight Visual Studio Edition(以前称为Parallel Nsight)需要Visual Studio版本支持插件。Microsoft禁用了Visual Studio Expression Editions上的插件包。Nsight支持Visual Studio 2008 SP1和2010 SP1 Profession版本及更高版本。您可以在developer.nvidia.com上下载Nsight。 - Greg Smith
您可以使用CUDA 5.0 RC中的nvprof命令行分析器进行性能分析。 nvprof的输出可以加载到Visual Profiler中。 - Greg Smith

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