nvidia profier工具
nvprof的Python项目详细描述
有助于处理nvprof sqlite文件的工具,特别是 分析脚本以训练深度学习模型。文件可能很大 因此对scp和在nvvp中的工作比较慢。这个工具瞄准 提取重要信息的小块并在 NVVP更快。
你可以删除大量不重要的事件,花一点时间 切片,以便可以将sqlite数据库缩小几mbs。
- 作者:波乌米尔·扎梅契克bohumir.zamecnik@gmail.com, Rossum
- 许可证:麻省理工学院
在nvvp中切片nvp
安装
安装软件包nvprof-只需使用即可:
$ pip install nvprof
…或用于开发:
$ pip install -e .
功能
$ nvprof_tools --help usage: nvprof_tools [-h] {info,truncate,slice} ... NVIDIA Profiler tools positional arguments: {info,truncate,slice} optional arguments: -h, --help show this help message and exit
$ nvprof_tools slice --help usage: nvprof_tools slice [-h] [-s START] [-e END] db_file positional arguments: db_file optional arguments: -h, --help show this help message and exit -s START, --start START start time (sec) -e END, --end END end time (sec)
文件摘要
它可以显示:
- 总时间(可用于决定在nvvp中采用哪个时间段)
- 表中按最高值排序的事件数
- 计算利用率
- GPU数
$ nvprof_tools info foo.sqlite Number of GPUs: 1 Compute utilization: 10.07 % Total time: 6.659 sec Total number of events: 516874 Events by table: CUPTI_ACTIVITY_KIND_RUNTIME : 348080 CUPTI_ACTIVITY_KIND_CONCURRENT_KERNEL : 63792 CUPTI_ACTIVITY_KIND_DRIVER : 48279 CUPTI_ACTIVITY_KIND_SYNCHRONIZATION : 19741 CUPTI_ACTIVITY_KIND_CUDA_EVENT : 17860 CUPTI_ACTIVITY_KIND_MEMCPY : 15974 CUPTI_ACTIVITY_KIND_MEMSET : 2816 CUPTI_ACTIVITY_KIND_OVERHEAD : 309 CUPTI_ACTIVITY_KIND_STREAM : 12 CUPTI_ACTIVITY_KIND_DEVICE_ATTRIBUTE : 8 CUPTI_ACTIVITY_KIND_NAME : 1 CUPTI_ACTIVITY_KIND_CONTEXT : 1 CUPTI_ACTIVITY_KIND_DEVICE : 1
如果有多个GPU,则计算每个GPU的计算利用率 设备:
Number of GPUs: 4 Compute utilization (mean): 43.04 % GPU 0: 42.86 % GPU 1: 42.34 % GPU 2: 43.42 % GPU 3: 43.55 % Total time: 35.041 sec Total number of events: 5670557
删除不必要的事件
通常80%的事件是运行时/驱动程序CUDA调用,而不是 对分析深度学习脚本至关重要。我们把它们移走。
注意:它将覆盖输入文件。
$ nvprof_tools truncate foo.sqlite
我们把一个数据库从29MB缩减到8MB。
仅在很小的时间范围内切片
# keep only events between 5 and 6 seconds $ nvprof_tools slice foo.sqlite -s 5.0 -e 6.0