背景:
分析CUDA程序的GPU占用情况。除了使用常见的clock、gettimeofday计时分析程序的效率之外,还可以使用nvidia推出的nvprof进行具体的GPU指令耗时分析,为了方便分析,可以使用nvidia visual profiler对nvprof生成的分析报告进行可视化。
官方链接:https://developer.nvidia.com/nvidia-visual-profiler
准备:
Window 10环境下的nvprof工具生成待可视化的目标文件(*.nvvp文件)。
指令:nvprof -o test_profile ./test
Nvidia Visual Profiler nvvp安装
这部分坑太多了,详细记录。
1. 安装 nvidia visual profiler
nvvp在安装CUDA Toolkit的时候会自带安装,在%CUDA_PATH%\Development\libnvvp下。
本人的是自带的,直接点击.exe就能运行。
如果没有,到官方链接:https://developer.nvidia.com/nvidia-visual-profiler
点击下载Download按钮,即跳转到下载页面,可以发现nvvp是集成在CUDA Toolkit里的,安装CUDA即可,参考选项如下:
2. 安装JDK(坑一)
双击nvvp可执行文件,跳出弹窗报错:
a java runtime environment or java development kit must be available in order to run nvvp
问题,在启动eclipse时遇到这个问题,是环境里缺少jdk导致的,于是我下载安装了最新的jdk17,然后又遇到了类似的问题,还是java类的报错,查看log文件即可看见报错信息:
java.lang.RuntimeException: Application "com.nvidia.viper.application.application" could not be found in the registry.
查找解决方案是因为版本不匹配导致的,nvvp和jdk8适配。然后重新安装下载jdk8,同学们如果没有安装java环境,建议直接安装jdk8。
根据实验环境选择合适的安装包即可。windows下的好处就是直接双击就能安装了。默认的安装路径:
C:\Program Files\Java\jdk1.8
注意:此时还需要配置一下windows系统环境变量。
打开控制面板,找到系统,点击编辑系统环境变量,点击环境变量,则可以看见用户的环境变量和系统的环境变量。
我们需要对系统的环境变量进行修改,增加jdk的路径。点击系统变量里的Path(库路径),点击编辑或者双击。
点击右侧的新建new,将java的bin路径粘贴进去,我的情况即是在Path里新建一条内容如下:
C:\Program Files\Java\jdk1.8\bin
然后点击确认/应用,等等。此时jdk就配置完成了,然后重启双击nvvp,或者在powershell里输入./nvvp.exe重新启动也行。
3. 设置CUDA库路径 (坑二)
在配置完jdk之后,nvvp已经可以正常打开,但是在点击File -> New Session/Open 的时候会报错,提示:
unable to locate CUDA libraries
已经安装了CUDA Toolkit但是还没有找到,说明配置中出了纰漏。再一次查看系统环境变量,看到CUDA_PATH和CUDA_PATH_V11_1已经自动设置。需要在Path变量里增加对CUDA库的搜索路径。
和jdk配置相似,点击Path->编辑->新建,输入路径如下:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\CUPTI\lib64
(注:cupti: CUDA profiling tools interface)
然后OK/应用,关闭环境配置,重启nvvp,可以正常运行了。
然后点击File->Open,打开之前生成的*.nvvp文件,即可看见GPU的使用记录了。
感谢:https://blog.csdn.net/iLOVEJohnny/article/details/104526042