在书Programming Massively Parallel Processors
中,gflops的数量用于比较不同矩阵乘法核的效率。我如何在自己的机器上为自己的内核计算这个?
在NVIDIA论坛的某个地方,我找到了这个'算法',但我不知道,它有多有效或两次来自哪里。
NumOps = 2 * pow(MatrixSize,3)
gflops = 1.0e-9 * NumOps / ExecutionTime
P.S。请随时更改标签......
答案 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('千兆')。