Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab环境下使用Nvidia可视轮廓对CUDA进行轮廓_Matlab_Cuda_Profiler - Fatal编程技术网

如何在Matlab环境下使用Nvidia可视轮廓对CUDA进行轮廓

如何在Matlab环境下使用Nvidia可视轮廓对CUDA进行轮廓,matlab,cuda,profiler,Matlab,Cuda,Profiler,我需要从Matlab中分析我的CUDA代码。为了提高性能,我一直在将一些matlab代码转换为CUDA。我通过调用调用CUDA的mexFunction来实现这一点。matlab feval函数没有提供足够的控制。我可以通过VS运行mexFunction来调试它,但我也需要调试内核,因为我相信这就是问题所在 所以,我的问题是,在执行调用CUDA的matlab函数时,如何通过分析器运行CUDA代码 将所有输入的值硬编码到CUDA函数中是不实际的 我在windows 7 64位上运行Matlab 20

我需要从Matlab中分析我的CUDA代码。为了提高性能,我一直在将一些matlab代码转换为CUDA。我通过调用调用CUDA的mexFunction来实现这一点。matlab feval函数没有提供足够的控制。我可以通过VS运行mexFunction来调试它,但我也需要调试内核,因为我相信这就是问题所在

所以,我的问题是,在执行调用CUDA的matlab函数时,如何通过分析器运行CUDA代码

将所有输入的值硬编码到CUDA函数中是不实际的


我在windows 7 64位上运行Matlab 2012a 64位,带有特斯拉C2050 GPU卡

NVIDIA Nsight Visual Studio Edition 2.2应该能够评测您的内核

  • Nsight |新的分析活动
  • 将Activity Type设置为Profile CUDA进程树(matlab可以启动另一个可执行文件)
  • 要运行的实验设置为“全部”
  • Nsight Visual Studio CUDA Profiler有两个功能可以实现这一点:

  • 活动配置文件CUDA流程树将配置CUDA流程和已启动流程的所有子流程。这很重要,因为我认为Matlab的默认实现是启动32位变量,如果在64位系统上,则启动64位可执行文件,因此仅启动Matlab是不够的

  • Nsight profiler支持应用程序内核内重播,它支持在应用程序的一次执行中使用相同的输入多次运行内核


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

    如果您需要评测性能,而不是Nsight也提供的调试功能,您可以使用以下技巧在VisualProfiler上运行matlab程序,而无需使用test main函数生成exe:

    使用创建批处理文件

    matlab -nojvm -nodesktop -wait -sd "yourBaseFolder" -r "theMFunctionYouWantToRun;exit;"
    

    然后运行英伟达可视化剖析器上的脚本。< /P>


    我使用的是feval CUDA API,因此它还有一个额外的优点,就是向您展示了Matlab实际上在做什么。我想在使用MEX的时候也应该可以,但是从来没有试过。让我知道它是否对MEX文件也有作用。

    < P>你可以使用下面的过程使用英伟达可视化剖析器来配置Matlab MexFixes,包括CUDA代码。
  • 按照中的指导原则编写包含CUDA代码的MEX文件
  • 在MEX函数的末尾添加
    cudaDeviceSet()
  • 编写Matlab.m文件,在其末尾添加
    exit
  • 启动NVIDIA可视档案器。文件->新建会话
  • 文件:添加Matlab可执行文件的完整路径,例如C:\Program Files\Matlab\R2012b\bin\win64\Matlab.exe
  • 工作目录:添加Matlab.m文件的完整路径
  • 参数:-nojvm-nosplash-r文件名(不带扩展名)
  • 下一步->完成,就这样
    VS2010 lite没有可用的Nsight,我还没有找到一个有信誉的网站下载它。您知道我可以从哪里下载它吗?另外,我是否正确地假设可以将它与VS2010 lite一起使用。我也有完整的VS2005专业版,如果这有什么不同的话。Nsight Visual Studio Edition(以前是并行Nsight)需要Visual Studio版本来支持插件。Microsoft在Visual Studio Expression版本上禁用插件包。Nsight支持Visual Studio 2008 SP1和2010 SP1专业版及更高版本。您可以从developer.nvidia.com下载Nsight。您可以在CUDA 5.0 RC中使用nvprof命令行探查器进行评测。nvprof的输出可以加载到Visual Profiler中。