1

我在我的 cuda 内核上运行了 cuda-11.2 nsight-compute 。

它报告说 SOL SM 为 79.44%,我认为这非常接近最大值。SOL L1 为 48.38%

当我检查屋顶曲线图时,我发现我的测量结果与峰值性能相差甚远。

达到:4.7 GFlop/s

车顶线峰值93 GFlop/s 左右。

我还看到 ALU 管道利用率为 80+%

那么,如果 ALU 管道被充分利用,为什么根据车顶线图实现的性能会低很多呢?

配置文件结果

请注意,这是在 RTX 3070 上,单精度峰值为 17.6 TFlop/s: 顶峰

更新

我想我知道这里发生了什么……@robert-crovella 让我走上了正确的轨道,表明 ALU 是整数运算,因此不包括在内。而且这些并不是唯一不包括在内的操作!

屋顶线图仅显示 fp32 和 fp64 操作,而不显示 fp16 操作。

我的代码使用半精度浮点数,我怀疑屋顶线图不适用于我的代码。

4

1 回答 1

3

那么,如果 ALU 管道被充分利用,为什么根据车顶线图实现的性能会低很多呢?

因为 ALU 管道与浮点无关,而屋顶线图本质上仅与浮点有关。

如我链接的答案所示,ALU管道处理:

大多数整数指令、位操作指令和逻辑指令

这种管道利用率很可能是限制内核性能的一个因素,因此,您运行的 FLOPs/s 速率/吞吐量比其他方式可能实现的浮点数明智(即车顶线)。

与 (FP32/FP64) 浮点相关的项目是 fma、fmaheavy、fp32 和潜在的 Tensor。这些都处于活跃状态的 40% 左右或以下,因此您不会最大限度地使用这些管道。

于 2021-01-09T05:15:35.813 回答