任何人都可以总结一下CUDA中不同类型的指令重放的定义和原因吗?
他们是:
这个答案适用于Compute Capability 2.0 - 3.7(Fermi - Kepler)设备.
每个循环每个SM warp调度程序选择一个warp并发出1-2个独立指令.
inst_executed事件是完成的扭曲指令的计数.thread_inst_executed是完成指令的线程计数.
如果SM由于无法完成发布的指令
那么SM调度程序必须多次发出指令.这称为指令重放.值inst_issued == inst_issued2*2 + inst_issued1是完成的指令数+指令重放.
指令重放使用指令发布槽来降低SM的计算吞吐量.
下面列出的_replay_overhead指标可以帮助您确定导致重播的操作类型.该_replay事件可以提供一个量级.
NVPROF/CUPTI事件和度量
EVENT GROUP 1 - 通用指令发布和退休计数
EVENT GROUP 2 - 计算或重播上面列出的特定类型的事件(并非所有事件都有计数)
METRIC GROUP - 效率计算.
Compute Capability 5.x设备(Maxwell)设备将重放从warp调度程序推送到各个单元.这减少了重放延迟并释放了调度程序以发出数学运算.在这些设备上,inst_issued/inst_executed = inst_replay_overhead的比率通常接近于0.
归档时间: |
|
查看次数: |
717 次 |
最近记录: |