【问题标题】:Meaning of the "flop_count_sp" and "inst_fp_32" metric in CUDA ProfilerCUDA Profiler 中“flop_count_sp”和“inst_fp_32”指标的含义
【发布时间】:2020-12-28 03:54:56
【问题描述】:

根据profiler user guide

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

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

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

【问题讨论】:

    标签: cuda gpu profiler nvprof nvvp


    【解决方案1】:

    我想知道这里什么是操作,什么是指令?看起来fma 是一个指令,但两个操作。而addmul 是一个指令和一个操作。

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

    是否有不计入操作的指​​令?

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

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

    是的

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      相关资源
      最近更新 更多