Я пытаюсь запрограммировать умножение матрицы, используя SSE Intrinsic. Я не уверен, если мой код правильно, и я не могу компилятор это либо потому, что я получаю сообщение об ошибке:Матричное умножение с использованием ошибки SSE __m128 to * float conversion?
Error 1 error C2440: 'type cast' : cannot convert from 'float' to '__m128 *
Может кто-то двойное проверить свою программу так, чтобы мое матричное умножение является правильным? Заметим также, что это для квадратной матрицы.
Вот мой код.
void Intrinsics (float * matrix_a, float * matrix_b, float * matrix_result, const int num_row, const int num_col) {
__declspec(align(16)) float * a = matrix_a;
__declspec(align(16)) float * b = matrix_b;
__declspec(align(16)) float * c = matrix_result;
for(int i = 0; i < num_row; ++i)
{
for(int j = 0; j < num_col; ++j)
{
__m128 *m3 = (__m128*)a[i]; // The error is here.
__m128 *m4 = (__m128*)b[j];
float* res;
*(c + (j * num_col + i)) = 0;
for(int k = 0; k < num_col; k += 4)
{
__m128 m5 = _mm_mul_ps(*m3,*m4);
res = (float*)&m5;
*(c + (j * num_col + i)) += res[0]+res[1]+res[2]+res[3];
m3++;
m4++;
}
}
}
}
Хотя код строка ошибка связана с? – ArtemB
обновленный код с линией ошибки –