从 Nvprof 和 GPGPUsim 了解 IPC 指标
Understanding the IPC metric from Nvprof and GPGPUsim
一个 Pascal SM 每个 SM 有 4 个调度程序,当我们得到类似 3 作为 IPC 的东西时,是否意味着 SM 在一个周期中调度了 3 条指令?
此外,NVPROF 是否考虑该内核的所有 SM 的平均 IPC 并报告它?
如果一个 SM 的 IPC 为 3,那么具有 2 个 SM 的 GPU 应该给我们一个 IPC 6,对吗?
此外,我正在使用一个名为 GPGPU sim 的模拟器,它报告更高范围内的 IPC (80-120)
我假设他们正在计算每个内核的 IPC 并将指标缩放到整个模拟 GPU,但我不确定。
有人可以验证 IPC 指标吗?
NVPROF ipc 指标计算为 SUM(sm_inst_executed) / SUM(sm_active_cycles)
这样得出单个SM的平均IPC。 Maxwell/Pascal SM 的最大 SM IPC 为 6。Volta/Turing SM 的最大 SM IPC 为 4。
sm_inst_executed - 在指令必须完成时计算的执行的 warp 指令数(由于推测执行不能回滚)。计算完全断言指令。
sm_active_cycles - SM 至少有 1 active/resident 扭曲的周期数。
NVIDIA Perfworks 提供以下指标:
sm[sp]__inst_executed_{avg, sum}per{active, elapsed}_cycle.
_sum 变体是总 IPC(最大值为 SM_COUNT * SM_MAX_IPC)
_avg 变量是平均 IPC (SUM(sm__inst_executed) / SUM(sm__{active, elapsed}_cycle))
elapsed_cycles 变体包括 SM 未激活的周期。
一个 Pascal SM 每个 SM 有 4 个调度程序,当我们得到类似 3 作为 IPC 的东西时,是否意味着 SM 在一个周期中调度了 3 条指令? 此外,NVPROF 是否考虑该内核的所有 SM 的平均 IPC 并报告它?
如果一个 SM 的 IPC 为 3,那么具有 2 个 SM 的 GPU 应该给我们一个 IPC 6,对吗?
此外,我正在使用一个名为 GPGPU sim 的模拟器,它报告更高范围内的 IPC (80-120) 我假设他们正在计算每个内核的 IPC 并将指标缩放到整个模拟 GPU,但我不确定。
有人可以验证 IPC 指标吗?
NVPROF ipc 指标计算为 SUM(sm_inst_executed) / SUM(sm_active_cycles)
这样得出单个SM的平均IPC。 Maxwell/Pascal SM 的最大 SM IPC 为 6。Volta/Turing SM 的最大 SM IPC 为 4。
sm_inst_executed - 在指令必须完成时计算的执行的 warp 指令数(由于推测执行不能回滚)。计算完全断言指令。
sm_active_cycles - SM 至少有 1 active/resident 扭曲的周期数。
NVIDIA Perfworks 提供以下指标:
sm[sp]__inst_executed_{avg, sum}per{active, elapsed}_cycle.
_sum 变体是总 IPC(最大值为 SM_COUNT * SM_MAX_IPC) _avg 变量是平均 IPC (SUM(sm__inst_executed) / SUM(sm__{active, elapsed}_cycle)) elapsed_cycles 变体包括 SM 未激活的周期。