我想执行块矩阵乘法(将matirix分成多个sxs矩阵并乘以相应的块)。我已经按照Hennesy的体系结构书的示例代码编写了代码:块矩阵乘法
for(int jj=0;jj<=(n/s);jj += s){
for(int kk=1;kk<=(n/s);kk += s){
for(int i=1;i<=(n/s);i++){
for(int j = jj; j<=((jj+s-1)>(n/s)?(n/s):(jj+s-1)); j++){
temp = 0;
for(int k = kk; k<=((kk+s-1)>(n/s)?(n/s):(kk+s-1)); k++){
temp += b[i][k]*a[k][j];
}
c[j][i] += temp;
}
}
}
}
这里,nxn是原始矩阵的大小。 a,b矩阵大小相同。我将a,b矩阵分成大小为sxs的块。在我的程序中,我已经给出了块大小为4.我把a,b的所有元素设置为5,常量和n = 1000。但是,我的结果中出现错误的值。我在这里做错了什么?从过去的2小时中吸取了这一点。如果可能的话,你们可以帮忙吗?在书中的参考码是这样的:
for (jj = 0; jj <= size; jj += N) {
for (kk = 1; kk <= size; kk += N) {
for (i = 1; i <= size; i++) {
for (j = jj; j <= findMin(jj+N-1, size); j++) {
temp = 0;
for (k = kk; k <= findMin(kk+N-1, size); k++) {
temp += B[i][k] * A[j][k];
}
C[j][i] += temp;
}
}
}
}
在此,S = N和大小= N/S
你能提炼成一个小示例代码用输入产生问题并解释你期望的答案是什么? – 2013-04-20 02:07:14
投票结束为什么不是此代码工作。 – 2016-03-31 10:50:43