NVIDIA nvprof / nvvp工具安装和使用介绍

您所在的位置:网站首页 英伟达inspector怎么用 NVIDIA nvprof / nvvp工具安装和使用介绍

NVIDIA nvprof / nvvp工具安装和使用介绍

2024-03-19 19:33| 来源: 网络整理| 查看: 265

前言

在这里插入图片描述

NVIDIA nvprof / nvvp工具是英伟达N卡GPU编程中用于观察的利器。全称是NVIDIA Visual Profiler,是由2008年起开始支持的性能分析器。交互性好,利于使用。其中记录运行日志时使用命令nvprof,可视化显示日志时使用命令nvvp。

该工具的官方介绍如下: 在这里插入图片描述

不过在最近几年,英伟达官方推出了新的性能分析工具NSight,官方更加建议使用新的工具,给出的原因是NSight运行时消耗的资源更少,统计的数据更加贴近实际运行情况的数据。相比之下使用nvprof/nvvp方式运行时消耗资源较多,数据统计容易不准确。

在这里插入图片描述

除此以外,英伟达还给出了其他的工具,如果希望深入GPU编程,那么这些工具都是傍身利器。

在这里插入图片描述

安装与使用 Linux & Windows

在带有N卡的Linux和Windows机器环境下,在安装好CUDA Toolkit后则自带了nvprof / nvvp等工具。且一般会有相应的应用图标(NVIDIA Visual Profiler 和 NSight),可以直接点击图标打开。 在这里插入图片描述

也可以通过命令行方式打开。

在这里插入图片描述 以Linux系统命令行方式为例,说明使用方法。

直接打印跟踪日志 $ nvprof --print-gpu-trace python test.py 生成nvvp日志文件 $ nvprof -o prof_name.nvvp python test.py 打开nvvp日志文件 $ nvvp prof_name.nvvp

最开始打开日志时显示如下,可以初步看到整个程序运行时的耗时情况: 在这里插入图片描述 X轴是时间轴,表示了程序运行的时间。Y轴分为两个大块,包括进程号模块和显卡卡号模块。其中进程号下又细分为线程模块,其下又分为Runtime API和Driver API耗时。而显卡模块下分为Context模块,其下又细分为MemCpy、Compute和Stream模块。MemCpy展示了显存拷贝的耗时情况,Compute展示了实际CUDA Kernel运行时消耗,Stream展示了流上的时间消耗情况。需要注意的是子模块的信息是可以投射回父模块的时间轴上的。可以通过放大缩小来查看某个关注周期内的时间消耗情况。 在这里插入图片描述 一般在使用时,如果是多个循环,可以先找出某个代表性循环周期,在时间轴上标记处这一周期,然后再仔细查看Compute部分的耗时情况,保证时间消耗不要浪费在内存开辟和释放上,主要花在核函数运行上。优良的CUDA程序从Stream轴看起来是比较连续的,不会出现大量的空白区间。另外还可以关注某些大量耗时的核函数,考虑优化核函数的设计。

nvprof和nvvp还有更多的特性,例如多进程跟踪支持,核函数调用和运行情况统计等。详细使用可以参考官方文档。

MacOS

Mac自从不再支持英伟达显卡后,只能使用nvvp工具查看profile文件。

要使Mac能查看nvvp日志,需要安装JDK环境和nvvp工具包。安装过程参考官网:https://developer.nvidia.com/nvidia-cuda-toolkit-developer-tools-mac-hosts

适用于macOS 系统版本11以下

下载nvidia-visual-profiler-mac-11.1-28936279.dmg(官网或者CSDN资源)

下载zulu8.23.0.3-jdk8.0.144-macosx_x64.zip(官网或者CSDN资源)

解压放至某文件夹(如/users/name/test/) 在这里插入图片描述

注: ①JDK可以不用安装,解压放在nvvp文件夹下即可。 ②JDK如果不是上述版本,可能会出现无法使用的问题(弹出workspace选择界面后卡死)。

使用 初次使用可能会被Mac系统拦截,这是由于安全性设置导致的。可以在下面的页面允许jdk相关程序运行(会调用jdk的bin目录下8个左右程序),也可以关闭该安全性设置(参考资料[6])。 在这里插入图片描述

cd nvvp ./bin/nvvp -vm /users/name/test/nvvp/jdk8/bin/java

需要注意-vm后的路径需为绝对路径。如不指定则自动寻找环境变量中的java。

Mac下打开nvvp文件显示如下,使用方式参考上述“打开nvvp日志文件”部分: 在这里插入图片描述

适用于macOS 系统版本11(Big Sur) 及以上

下载nvidia-visual-profiler-mac-11.1-28936279.dmg(官网或者CSDN资源)

下载zulu8.23.0.3-jdk8.0.144-macosx_x64.dmg(官网或者CSDN资源)

点击zulu8.23.0.3-jdk8.0.144-macosx_x64.dmg安装jdk 在这里插入图片描述

建立libjvm.dylib的软链接

sudo ln -s /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/lib/libserver.dylib 使用 cd nvvp ./bin/nvvp

需要注意在MacOS11及以上的版本无需再指定-vm参数。

初次使用可能会遇到'lib.dylib' cannot be allowed to run because its origin cannot be verified的报错,说明jdk运行时被Mac系统拦截,这是由于安全性设置导致的。打开系统安全性设置点击允许(‘System Preferences’ → ‘Security & Privacy’ → ‘General’)。 在这里插入图片描述

在这里插入图片描述

参考资料

[1] Nvidia Developer - Performance Analysis Tools [2] NVIDIA Visual Profiler [3] [腾讯机智] tensorflow profiling工具简介——nvprof和nvvp [4] CUDA Toolkit v11.1.1 Doc - Profiler - Visual Profiler [5] NVIDIA CUDA Toolkit - Developer Tools for macOS [6] macOS Catalina(10.15)解决阻止程序运行“macOS无法验证此App不包含恶意软件” [7] How to use NVIDIA profiler [8] Understanding the Visualization of Overhead and Latency in NVIDIA Nsight Systems [9] NVIDIA Nsight Systems [10] Does calling a CUDA kernel multiple times affect execution speed?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3