nvprof

1. 使用nvprof输出kernel timeline数据

Kernel Timeline 输出的是以gpu kernel 为单位的一段时间的运行时间线,我们可以通过它观察GPU在什么时候有闲置或者利用不够充分的行为,更准确地定位优化问题。nvprof是nvidia提供的用于生成gpu timeline的工具,其为cuda toolkit的自带工具。使用方法如下:

nvprof -o out.nvvp -f --csv --profile-from-start off python3 mnist.py

-o用于输出 .nvvp 文件,-f 用于强制覆盖, --csv可是在console输出除 timeline 以外数据的时候以逗号分隔数据,方便拷贝至csv文件。我们需要重点讲一下--profile-from-start 。

往往我们只需要监测中间模型运行的部分,忽略掉预处理的部分,让生成的timeline短一些。所以需要让nvprof不要从程序一开始就运行,而是在代码中手动设置开启。设置开启的方法是先在代码中插入如下函数:

import ctypes
_cudart = ctypes.CDLL('libcudart.so')

def cu_prof_start():
  ret = _cudart.cudaProfilerStart()
  if ret != 0:
    raise Exception('cudaProfilerStart() returned %d' % ret)


def cu_prof_stop():
  ret = _cudart.cudaProfilerStop()
  if ret != 0:
    raise Exception('cudaProfilerStop() returned %d' % ret)

然后在对应位置插入:

for epoch in range(EPOCHS): 
   ...
   flag = False
   cu_prof_start() 
   for images, labels in train_ds:
     if flag:
        cu_prof_stop()
     flag =  True
     train_step(images, labels) 
   ...

这样我们就可以只监测一个迭代步了。

nvprof的其余flag信息可见

CUDA Toolkit Documentation​docs.nvidia.com图标

 

https://docs.nvidia.com/cuda/profiler-users-guide/index.html#nvprof-overview

2 使用nvvp或nsight eclipse edition查看nvprof输出

因为我们的模型常常是运行在远端的服务器上,我们需要把输出的监测数据拷贝至本地查看。对于nvprof生成的`.nvvp`文件来说,需要在本地使用nvvp或nsight eclipse进行查看。这两者也都是cuda toolkit中自带的。需要强调的是,即使本地电脑没有N卡也是可以安装cuda toolkit的(最新版本macOS除外,详情见文末注意事项)。

2.1 安装

以下安装指在用来查看数据的电脑上装。运行代码的机器只需要配置好cuda就可以了。

  • 安装cuda

请从官网下载安装包,对于没有n卡的机子只需要安装toolkit就可以了。目前cuda 10.1测试通过,10.2的nvvp在打开时会卡死。同样的错误请见

https://devtalk.nvidia.com/default/topic/1062968/nsight-eclipse-edition/nsight-does-not-start-workspace-selection-window-freezes/​devtalk.nvidia.com

 

安装后运行nvcc --version测试是否成功。

  • 安装jdk

对于jdk的版本,nsight文档中说只支持到151,但是本地安装现在最新的241版本测试成功。

安装后运行java -version测试是否成功。并运行nsightnvvp测试是否可以正常打开nsight或nvcc。注意,这里的nsight指nsight eclipse plugin edition(不需要安装eclipse)。

2.2 打开并查看文件

命令行输入nvvp以打开,File->Import后选择CUDA->nvprof,下一步后按照具体情况选择是single session还是multiple session,下一步在timeline data file处点击browse,选择已经传到本地的.nvvp文件即可。使用nsight类似。下图为使用nvvp的一个样例:

3 注意事项

因为在macOS 10.15之后无法安装cuda toolkit,以上工具会无法正常使用(无法用mac电脑查看数据)。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值