如何测量矩阵乘法核的gflops



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

在NVIDIA论坛的某个地方,我发现了这个"算法",但我不知道,它是多么有效,或者时间2来自哪里。

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

注。请随意更改标签

可以通过在大输入下运行算法并测量执行时间来测量gflop。然后将执行时间和矩阵大小放入公式中。对于大到足以使整个机器忙碌的矩阵大小,FLOPs仅弱依赖于矩阵大小。

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 ('giga')。

相关内容

  • 没有找到相关文章

最新更新