SSE перемножение матриц
Все привет, есть код перемножения матриц на с++:
for(int j = 0; j < SIZE ; j++)
{
for(int i = 0; i < SIZE; i++)
{
for(int t = 0; t < SIZE; t++)
{
temp += A[j][t]*B[t];
}
file_result << temp;
file_result << " ";
temp = 0;
}
file_result << endl;
}
Подскажите пожалуйста, как оптимизировать с помощью SSE .
Прочитал про саму концепцию , про функции intrinsics , но в упор не вижу как это оптимизировать. Есть 8 регистров XMM по 128 бит , возможно загрузить 4 данных в 4 части ( по 32 бита) в один из MMX и как то работать. Для матрицы 4*4 всё понятно, загружаем один раз и перемножаем с чем угодно сколько потребуется. А тут как ? Хотя бы на пальцах объясните.
Все привет, есть код перемножения матриц на с++:
for(int j = 0; j < SIZE ; j++)
{
for(int i = 0; i < SIZE; i++)
{
for(int t = 0; t < SIZE; t++)
{
temp += A[j][t]*B[t];
}
file_result << temp;
file_result << " ";
temp = 0;
}
file_result << endl;
}
Подскажите пожалуйста, как оптимизировать с помощью SSE .
Прочитал про саму концепцию , про функции intrinsics , но в упор не вижу как это оптимизировать. Есть 8 регистров XMM по 128 бит , возможно загрузить 4 данных в 4 части ( по 32 бита) в один из MMX и как то работать. Для матрицы 4*4 всё понятно, загружаем один раз и перемножаем с чем угодно сколько потребуется. А тут как ? Хотя бы на пальцах объясните.