• nividia-cuda-visual-profiler可视化监控GPU,CPU等性能。


    第一步:服务器端先下载cuda的tookit等工具。主要使用到了nvprof这一工具。

    当我们模型在训练or预测时,使用如下命令行完成此任务的监控并将GPU,CPU,内存显存交换等信息存储。

    nvprof --metrics all -o train.nvvp python3 run_sequence_tagging.py

    参数介绍:

    1. metrics: 选择的监控参数,可以特定选择某些指标监控,如果需要监控所有,选择all即可。
    2. -o: output。输出到train.nvvp。
    3. 后面的为训练or预测时候python的命令及文件参数。

    训练or预测完毕后,在当前目录下生成train.nvvp文件。

    第二步:

    因为我们的模型常常是运行在远端的服务器上,我们需要把输出的监测数据拷贝至本地查看。对于nvprof生成的`.nvvp`文件来说,需要在本地使用nvvp或nsight eclipse进行查看。这两者也都是cuda toolkit中自带的。需要强调的是,即使本地电脑没有N卡也是可以安装cuda toolkit的https://developer.nvidia.com/cuda-toolkit-archive

    打开上述网址,选择10.1进行下载。下载过程尽量关闭360。下载完毕后选择稍后重启即可。

     

       

     

    我们的cuda最终会安装在如下路径中。

    C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.1

    环境变量:

     

     

    第三步:

    需要下载java8。注意必须是8。java8以上的版本目前不支持cuda的工具包。自行百度下载并配置环境变量。

     

    第四步:命令行输入nvvp以打开nvvp的可视化分析界面。此界面类似eclipse,选择一个work_space即可。File->Import后选择CUDA->nvprof,下一步后按照具体情况选择是single session还是multiple session,下一步在timeline data file处点击browse,选择已经传到本地的.nvvp文件即可。

     

     

    教程使用:

    Python

    开始步骤

    nvvp支持远程连接服务端完成某个程序的测试;也支持程序测试落地的nvvp文件解析;

    连接服务端测试

    第一步:File->new Session

    先选择连接的服务器userpassword

     

    第二步:指定服务器端的cuda的目录

     

    第三步:选择我们要运行的程序。本次我们运行的是python程序,因此我们需要找到python.exe的路径。(当然,我们可以去分析其他exe程序).

     

    第四步:

    Python这边需要指定参数,我们需要运行哪个python脚本。

     

    之后默认即可。

     nvvp文件分析

    File->Import后选择CUDA->nvprof

     

     

    界面分析

    本次采用本地的nvvp文件分析。(ctrl+滚轮可以对时间轴缩小或放大)

     

      

    分别点击主机到设备、设备到主机、设备到设备,观察GPU details,通过开始时间和持续时间分布,总结可以得出“主机到设备”是python程序将数据读取到内存。“设备到设备”是内存和显存的交换,“设备到主机”是内存到主机。

      

    常用功能介绍

    ①点击conpute,可以看到properties的信息。

     

    也可以点击时间轴中的块,对每一个块查看对应的属性。

    ②点击左下的Analysis,可以对结果进行分析。

    例如点击

     

    可以看出低内存拷贝/计算交叠率(一点都没有交叠,完全是拷贝——计算——拷贝);低内核并发;低存储拷贝吞吐率;低拷贝交叠率(完全是拷贝、传输、拷贝..)。

    针对这些弊端可以制定对应的措施。

    例如,点击第二项,low kernel concurrency,此时左边的显卡对应条亮起,我们点击more,获取解析信息,分析得出除了默认流外的其他流可以执行多个内核。

     

     

    ③点击显卡,观察GPU Details的信息。首先是初始化、之后是数据的转移,然后是一些核函数的运行状态分析。

     

    主要有每个核函数执行时间,以及线程格、线程块尺寸,占用寄存器个数,静态共享内存、动态共享内存大小等参数,以及内存拷贝函数的执行情况

     

     

  • 相关阅读:
    Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏
    Oracle学习笔记:外连接(+)的用法
    Oracle学习笔记:with as子查询用法
    Oracle学习笔记:a inner join b与from a,b where a.x=b.x的差异
    oracle查看表,索引,视图,存储过程的定义
    oracle查看监听状态
    由sock引起的感想
    xargs
    oracle知识点小结1
    Oracle系统权限列表
  • 原文地址:https://www.cnblogs.com/dhName/p/14570675.html
Copyright © 2020-2023  润新知