通常的二维矩阵相乘的串行算法实现很常见,如下:
int m;//column of the Matrix
int A[][]; int B[][]; //two matrix used to do the multiplication
int C[][]; //used to strore the final result
int D[][][];//used to store the intermediate result
//通常矩阵相乘的实现算法
for (int k = 0 ; k < m ; k++)
{
for (int i = 0 ; i < m ; i ++)
{
for (int j = 0 ; j < m ; j ++)
{
C[i][j] += A[i][k] * B[k][j];
}
}
}
就是一个三重的for循环;
并行实现的思想如下:
临时三维矩阵Dk, i, j=Ai, k * Bk, j
第一步骤:8个Dk, i, j的计算,
第二步骤:D*, i, j相加,Ci, j:
实现如下:
int m;//column of the Matrix
int A[][]; int B[][]; //two matrix used to do the multiplication
int C[][]; //used to strore the final result
int D[][][];//used to store the intermediate r