我正在尝试编写C ++代码以使用SIMD进行矩阵乘法,但结果错误 这是我的代码
void mat_sse(DATA m1[][SIZE],DATA m2[][SIZE],DATA mout[][SIZE])
{
DATA prod = 0;
__m128 X,Y,Z,M,N;
for(int i=0; i<SIZE; i=i+1){
Z[0] = Z[1] = Z[2] = Z[3] = 0;
for(int k=0; k< SIZE; k=k+4){
for( int j=0; j<SIZE; j=j+4){
X = _mm_load_ps(&m1[i][k]);
Y = _mm_load_ps(&m2[k][j]);
M = _mm_mul_ps(X,Y);
Z = _mm_add_ps(M,N);
mout[i][j] += Z[0];
mout[i][j+1] += Z[1];
mout[i][j+2] += Z[2];
mout[i][j+3] += Z[3];
}
}
}
return ;
}
其中大小是
const int SIZE = 40;
你能帮忙吗?