🫡Nsight system和Nsight compute
Last updated
Last updated
对kernel执行和memory进行timeline分析,尝试寻找是否可以优化
隐藏memory access
多流调度
删除冗长的memory access
融合kernel减少kernel launch的overhead
CPU与GPU的overlapping
分析DRAM以及PCIe带宽的使用率 ,可以从中分析到哪些带宽没有被充分利 用,从而进行优化
分析SM中warp的占用率,可以从中知道一个SM中资源是否被用满
roofline analysis 对核函数进行roofline analysis, 并且根据baseline进行优化比较
occupancy analysis 对核函数的各个指标进 行估算一个warp的占用率的变化
memory bindwidth analysis 针对核函数中对各个memory的数 据传输的带宽进行分析,可以比较 好的理解memory架构
shared memory analysis 针对核函数中对shared memory访 问以及使用效率的分析
方法一:在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,源码级别的性能捕捉,以及优化推荐。