0

根据分析器用户指南

flop_count_sp:非谓词线程执行的单精度浮点运算数(加法、乘法和乘法累加)。每个乘法累加操作都会为计数贡献 2。该计数不包括特殊操作。

inst_fp_32:非谓词线程(算术、比较等)执行的单精度浮点指令数

我有一个带有探查器输出的内核,可以添加到以下内容:

flop_count_sp = flop_count_sp_add + flop_count_sp_mul + 2 * flop_count_sp_fma
inst_fp_32 = flop_count_sp_add + flop_count_sp_mul + flop_count_sp_fma

鉴于这些指标中的数字,我想知道这里的操作是什么,指令是什么?似乎 afma是一个指令,但是两个操作。而addandmul是一个指令和一个操作。由于 SASS 程序集由分析器计算。是否有任何指令不计为操作?或相反亦然。我只想知道 nvprof 和 nvvp 指标的上下文。

另外,当我们谈论 TFLOP/s 的峰值性能时,OP这里对应于我猜的操作?如果我想估计诸如计算到全局内存访问(CGMA)之类的东西,我应该使用flop_count_sp而不是inst_fp_32计算部分吗?提前致谢。

4

1 回答 1

4

我想知道什么是操作,这里的指令是什么?似乎 afma是一个指令,但是两个操作。而addandmul是一个指令和一个操作。

是,对的。Fused-Multiply-Add 指令算作 2 个操作(一个乘法,加上一个加法)。乘法或加法指令计为一次操作。

是否有任何指令不计为操作?

是的,任何不使用单精度(例如双精度flop_count_dp)功能单元的指令在 SM 中都不会对这些度量(inst 或 op)贡献任何操作。例如,整数指令或加载或存储指令不会影响这些指标。我不相信任何可能具有某种浮点性质(例如转换为/从浮点)但不包含加法或乘法运算的指令都不会影响运算指标。

另外,当我们谈论 TFLOP/s 的峰值性能时,这里的 OP 对应于我猜的操作?

是的

如果我想估计诸如计算到全局内存访问 (CGMA) 之类的东西,我应该使用 flop_count_sp 而不是 inst_fp_32 作为计算部分吗?

我认为这可能是一个见仁见智的问题。我会使用说明。如前所述,融合乘加指令算作 2 次操作,但它不会“加倍”浮点单元的压力。因此,在比较代码以查看全局内存加载/存储活动与计算“压力”之间的平衡时,我会使用指令。再次,可能是意见问题。

于 2020-09-09T17:47:22.837 回答