如何测量矩阵乘法内核的gflops?

时间:2011-07-29 12:26:02

标签: cuda benchmarking gpgpu

在书Programming Massively Parallel Processors中,gflops的数量用于比较不同矩阵乘法核的效率。我如何在自己的机器上为自己的内核计算这个?

在NVIDIA论坛的某个地方,我找到了这个'算法',但我不知道,它有多有效或两次来自哪里。

NumOps = 2 * pow(MatrixSize,3)
gflops = 1.0e-9 * NumOps / ExecutionTime

P.S。请随时更改标签......

1 个答案:

答案 0 :(得分:8)

您可以通过使用大输入运行算法并测量执行时间来测量GFLOP。然后将执行时间和矩阵大小放入该公式中。对于足以使整个机器保持忙碌的矩阵大小,FLOP仅微弱地依赖于矩阵大小。

GPU矩阵乘法算法执行与朴素算法相同数量的浮点运算。

for (i = 0; i < MatrixSize; i++)
  for (j = 0; j < MatrixSize; j++)
    for (k = 0; k < MatrixSize; k++)
      C[j][i] += A[j][k] * B[k][i];

循环体中有2个浮点运算,循环体有MatrixSize * MatrixSize * MatrixSize次迭代,它为您提供NumOps的公式。 GFLOPs只是每秒的操作次数除以10 ^ 9('千兆')。