Package | Windows10 CUDA10.2 JDK8 环境下安装NVidia Visual Profiler(nvvp)安装Bug笔记

 

背景

最近需要具体分析CUDA程序的GPU占用情况。除了使用常见的clock、gettimeofday计时分析程序的效率之外,还可以使用nvidia推出的nvprof进行具体的GPU指令耗时分析,为了方便分析,可以使用nvidia visual profiler对nvprof生成的分析报告进行可视化。

官方链接:https://developer.nvidia.com/nvidia-visual-profiler

 

实验环境

CUDA实验环境是Ubuntu18.04+Titan GPU,同样可以在windows上配置跑CUDA。

可视化工具nvvp的安装环境是Windows10+笔记本自带nvidia显卡。(因为最近都远程2333,所以可视化只能在笔记本了)

 

实验准备

1. 使用Ubuntu环境下的nvprof工具生成待可视化的目标文件。

假设CUDA程序编译通过后得到可执行文件test,使用nvprof运行test程序,记录gpu使用情况并保存为test_prof,输入如下指令:

nvprof -o test_profile ./test

这个过程可能会遇到bug,我的问题描述无法复现(= =),解决方法是关掉unified-memory-profiling即可,指令如下:

nvprof --unified-memory-profiling off -o test_profile ./test

此时,屏幕上会输出该CUDA程序的一些profile统计的文字表格数据,并且在实验环境中保存了nvprof的记录文件test_profile。

 

2. 下载test_profile到可视化路径。

我的情况是将该文件传到windows上,如果都在ubuntu上做实验,拷贝即可。

 

Nvidia Visual Profiler nvvp安装

这部分坑太多了,必须得单开一个大节来记录。

1. 安装 nvidia visual profiler

搜索引擎输入nvidia visual profiler即可找到官方链接:https://developer.nvidia.com/nvidia-visual-profiler

点击下载Download按钮,即跳转到下载页面,可以发现nvvp是集成在CUDA Toolkit里的,安装CUDA即可。大家根据实际的实验环境选择对应的安装包,我的选项如下:

下载完成后,双击.exe,选定安装目录,一直点击next下一步就行。整个安装过程耗时还挺久的,成功之后可以在菜单栏看见NVIDIA CUDA TOOLKIT文件夹。没有的话也可以直接到安装目录下找。通常默认安装目录是:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2

这么可以看到默认的安装版本是10.2,进入目录即可看到安装的相关库和工具,而nvvp可执行文件就在目录:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp

此时,如果大家双击正常打开了工具,那么祝贺你,可以跳转到第3步骤,没有则继续看第2。

 

2. 安装JDK

双击nvvp可执行文件,跳出弹窗报错:

a java runtime environment or java development kit must be available in order to run nvvp

搜索问题的解决方案,发现很多人是在启动eclipse时遇到这个问题。初步推断是环境里缺少jdk导致的,于是我下载安装了最新的jdk13,然后又遇到了类似的问题,还是java类的报错,查看log文件即可看见报错信息:

java.lang.RuntimeException: Application "com.nvidia.viper.application.application" could not be found in the registry.

查找解决方案是因为版本不匹配导致的,nvvp和jdk8适配。然后重新安装下载jdk8,同学们如果没有安装java环境,建议直接安装jdk8。

jdk8官网链接:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

根据实验环境选择合适的安装包即可。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库路径

到达第3步的朋友,恭喜你,已经快要成功了!

在配置完jdk之后,nvvp已经可以正常打开,但是在点击File -> New Session/Open 的时候会报错,提示:

unable to locate CUDA libraries

沉住气,已经安装了CUDA但是还没有找到,说明配置中出了纰漏。再一次查看系统环境变量,看到CUDA_PATH和CUDA_PATH_V10_2已经自动设置。搜索解决方案,需要在Path变量里增加对CUDA库的搜索路径。

和jdk配置相似,点击Path->编辑->新建,输入路径如下:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\CUPTI\lib64

然后OK/应用,关闭环境配置,重启nvvp。

 

嗒哒,可以正常运行了!(今天语气词有点多,最近被虐的比较惨= =)然后点击File->Open,打开之前下载好的test_profile,即可看见GPU的使用记录了。开始好好分析问题吧!

(图片来自网络,侵删)

 

 

 

题外话:

今天是在家隔离的第32天,又是26日了。过去这段时间发生了太多,看到了很多,思考了很多,凌乱过、慌张过、平静过、疲惫过,但最终,我们还是要重新出发。新的一年,希望大家都身体健康,平平安安。祝好~

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章