🫡Nsight system和Nsight compute

Nsight systems

  1. 对kernel执行和memory进行timeline分析,尝试寻找是否可以优化

  • 隐藏memory access

  • 多流调度

  • 删除冗长的memory access

  • 融合kernel减少kernel launch的overhead

  • CPU与GPU的overlapping

  1. 分析DRAM以及PCIe带宽的使用率 ,可以从中分析到哪些带宽没有被充分利 用,从而进行优化

  1. 分析SM中warp的占用率,可以从中知道一个SM中资源是否被用满

Nsight compute

  1. roofline analysis 对核函数进行roofline analysis, 并且根据baseline进行优化比较

  1. occupancy analysis 对核函数的各个指标进 行估算一个warp的占用率的变化

  1. memory bindwidth analysis 针对核函数中对各个memory的数 据传输的带宽进行分析,可以比较 好的理解memory架构

  1. shared memory analysis 针对核函数中对shared memory访 问以及使用效率的分析

如何使用(推荐使用ssh远程)

  • 方法一:在host端使用Nsight进行ssh远程profiling

  • 方法二:在remote端使用Nsight进行直接profiling

  • 方法三:在remote端通过CUI获取statistics之后传输到 host端进行查看

  • 方法四:在remote端直接使用CUI进行分析

两者的不同

Nsight systems :偏重于可视化application的整体的profiling以及各个细节指标,比如说

  • PCIe bindwidth

  • DRAM bindwidth

  • SM Warp occupancy

  • 所有核函数的调度信息

  • 所有核函数的执行时间,以及占用整体时间的比例

  • 多个Stream之间的调度信息

  • 同一个stream中的多个队列的调度信息

  • CPU和GPU之间的数据传输耗时

  • Application整体上的各个核函数以及操作的消耗时间排序

  • 捕捉同一个stream中的多个event

整体上会提供一些比较全面的信息,我们一般会从这里得到很多信息进而进行优化

Nsight compute :偏重于可视化每一个CUDA kernel的profiling以及各个细节指标,比如说

  • SM中计算吞吐量

  • L1 cache数据传输吞吐量

  • L2 cache数据传输吞吐量

  • DRAM数据传输吞吐量

  • 当前核函数属于计算密集型还是访存密集型 ,Roofline model分析

  • 核函数中的L1 cache的cache hit几率, cache miss几率的多少

  • 核函数中各个代码部分的延迟 ,精确到代码部分进行highlight

  • 核函数的load bandwidth, store bandwith, load次数, store次数

  • L1 cache/shared memory, L2 cache, global memory中的memory access scheduling

  • 设置baseline,来进行核函数的优化前后的效率对比

整体上能够得到一个针对某一个kernel的非常精确的profiling,源码级别的性能捕捉,以及优化推荐。

Last updated