GPU上所需的内存计算比率(OP / B)

问题描述 投票:0回答:1

我试图了解GPU的体系结构以及我们如何评估GPU上程序性能的方法。我知道该应用程序可以是:

  • Compute-bound:性能受FLOPS速率限制。处理器的核心已得到充分利用(总是有工作要做)
  • [Memory-bound:性能受内存限制带宽。处理器的核心经常处于空闲状态,因为内存无法足够快地提供数据

    下图显示了每个微体系结构的FLOPS速率,峰值内存带宽和所需的计算与内存之比,用(OP / B)标记。

  • enter image description here

我也有一个如何计算此OP / B指标的示例。示例:以下是用于应用矩阵矩阵乘法的CUDA代码的一部分

for(unsigned int i = 0; i < N; ++i) {
  sum += A[row*N + i]*B[i*N + col];
}

以及用于此矩阵矩阵乘法的OP / B的计算方法如下:

  • 矩阵乘法执行0.25 OP / B
  • 每加载2个FP值(8B),就添加1个FP和1个FP mul
  • 忽略商店
  • 并且如果我们想利用这个:

  • 但是矩阵乘法具有重用的潜力。对于NxN矩阵:
    • 加载的数据:(2个输入矩阵)×(N ^ 2个值)×(4 B)= 8N ^ 2 B
    • 操作:(N ^ 2个点积)(N个加+ N个muls)= 2N ^ 3个OP
    • 潜在的计算内存比:0.25N OP / B

因此,如果我清楚地理解了这一点,我将遇到以下问题:

  • 通常情况下,OP / B越大越好?
  • 我们怎么知道我们有多少FP操作?是加法还是乘法
  • 我们如何知道每个FP操作加载了多少字节?

我试图了解GPU的体系结构以及我们如何评估GPU上程序性能的方法。我知道该应用程序可以是:计算范围:性能受FLOPS限制...

performance cuda gpu metrics
1个回答
0
投票

通常情况下,OP / B越大越好?

© www.soinside.com 2019 - 2024. All rights reserved.