小编Ran*_*ker的帖子

使用向量化C ++的矩阵乘法

我正在尝试编写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 ;

}
Run Code Online (Sandbox Code Playgroud)

const int SIZE = 40; …

c++ sse simd matrix-multiplication

0
推荐指数
1
解决办法
75
查看次数

标签 统计

c++ ×1

matrix-multiplication ×1

simd ×1

sse ×1