Cuda 如何度量矩阵乘法核的gflops?

Cuda 如何度量矩阵乘法核的gflops?,cuda,benchmarking,gpgpu,Cuda,Benchmarking,Gpgpu,在《大规模并行处理器编程》(Programming Massive Parallel Processor)一书中,GFLOP的数量用于比较不同矩阵乘法内核的效率。我如何在自己的机器上为自己的内核计算这个呢 在英伟达论坛的某个地方,我发现了这个“算法”,但我不知道它是多么有效,或者是从哪里来的。 NumOps = 2 * pow(MatrixSize,3) gflops = 1.0e-9 * NumOps / ExecutionTime p、 请随意更改标记…您可以通过使用大量输入运行算法并测量

在《大规模并行处理器编程》(Programming Massive Parallel Processor)一书中,GFLOP的数量用于比较不同矩阵乘法内核的效率。我如何在自己的机器上为自己的内核计算这个呢

在英伟达论坛的某个地方,我发现了这个“算法”,但我不知道它是多么有效,或者是从哪里来的。
NumOps = 2 * pow(MatrixSize,3)
gflops = 1.0e-9 * NumOps / ExecutionTime

p、 请随意更改标记…

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

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

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];
(i=0;i 对于(j=0;j
循环体中有2个浮点运算,循环体的迭代次数为
MatrixSize*MatrixSize*MatrixSize
。GFLOPs只是每秒的操作数除以10^9('giga')。

+1。让我补充一下,在内置FMAD(fused multiply and add)指令的硬件上,包括所有最新的nvidia GPU,人们会争论是否在MatrixSize^3项前使用因子2。只要你始终如一地做,那就没什么大不了的。