本人计算机小白一枚
现在正在上一门课平行计算(Parallel Computing)需要实现的如下
C := C + A*B
for i = 1 to n
for j = 1 to n
for k = 1 to n
C(i,j) = C(i,j) + A(i,k) * B(k,j)
end
end
end
其中ABC是n x n的矩阵。这种计算需要进行2n^3次浮点运算(floating point operations)。
现在需要用分块(blocked)来优化计算效率 / 提高CPU利用率。以BLAS计算效率为100%。争取可以达到70%即可。
GitHub上有类似解法:https://github.com/greggomann/cs267-spring2014-hw01。
但是效率只达到了BLAS的25-26%。(benchmark-blocked.c)
希望有大神可以帮助我实现更高的运算效率。如需细节请联系我!wx frankswayt