一、定义
- gpu summary 分析
- trace 跟踪视图 分析
- 每个算子用时分析
- gpu 内核利用率分析
- 内存分析
- 内存快照,进行分析
二、实现
https://cloud.tencent.com/developer/article/1878875
https://tensorflow.google.cn/guide/gpu_performance_analysis?hl=zh_cn
- gpu summary 分析
- GPU 利用率:越高越好,但是不准。当 GPU 引擎执行一个工作负载时会出现一个步骤间隔时间 (step interval time)。利用率百分比越高越好。仅通过 GPU 利用率来判断性能瓶颈,结果并不准确。你无法借此得知到底有多少流处理器 (Streaming Multiprocessor) 在运行。
- 预估流处理器效率 (Est. SM Efficiency) 是一个更细化的指标,它表示在跟踪全过程中,正在使用的 SM 的百分比,代表 SM 上至少有一个活动 wrap 的 time 百分比,以及那些空闲 warp。Est. SM Efficiency 也有局限性。如每个区块只有一个线程的内核,无法完全利用所有 SM。只依据 SM Efficiency 无法得知每个 SM 的利用率,只能知道每个 SM 正在进行的操作,这包括等待内存加载结果时的停顿。
- 预估实现的占用率(Est. Achieved Occupancy)比 Est. SM Efficiency 和 GPU 利用率更准确。从经验角度出发,通过将这个指标提高到 15% 或以上,可以获得良好的吞吐量收益。
- Est. Achieve Occupancy 的值越大越好。
- step Time Breakdown 横坐标是模型迭代的轮次,纵坐标是执行的时间。对应的时间与execution Summary 中的值对应。如图cpu执行473538us,其他执行45158us。
分析: gpu 实现利用率为61.68%,仍可提高。 cpu 执行时间较长。
- trace 跟踪视图 分析
- 跟踪视图显示的是一个时间线,表示模型中算子的持续时间,以及是哪个系统执行的操作。这个视图可以帮助你识别高消耗和长执行,是不是由于输入或模型训练引起的。目前,该跟踪视图可显示一个时间线内的 GPU 利用率和 Est