0 / 0 / 0
Регистрация: 06.05.2022
Сообщений: 11
|
||||||
1 | ||||||
Векторизация20.05.2022, 21:59. Показов 467. Ответов 3
Есть программа, которая задает 3 квадратную матрицу путем умножения 2-х других квадратных матриц. Задача использовать векторизацию для помощи компилятору в его вычислениях. Как это можно реализовать?
0
|
20.05.2022, 21:59 | |
Ответы с готовыми решениями:
3
Векторизация кода Векторизация вычислений Как производится векторизация BITMAP? Векторизация |
34 / 22 / 13
Регистрация: 20.05.2022
Сообщений: 403
|
|
20.05.2022, 23:14 | 2 |
Vaarga, вместо int М[2][3], пишешь vector <vector<int>> m; не сразу понял вопрос, я думал переписать с использованием векторов. В спойлеров ссылка по векторизации. Там вполне развёрнутый вопрос. Если что непонятно, спрашивай
Кликните здесь для просмотра всего текста
0
|
0 / 0 / 0
Регистрация: 06.05.2022
Сообщений: 11
|
||||||
24.05.2022, 21:38 [ТС] | 3 | |||||
Я прочитал статейку, но так и не понял как это грамотно реализовать в коде. Даже примеры не дали конкретной ясности. Дополнительно также обратился к этому видео ролику: https://youtu.be/x9Scb5Mku1g , и кое-что перенял оттуда, но тем не менее на этапе реализации всего этого в моем коде я получил кучу ошибок (видимо я все очень плохо понял).
E0167 аргумент типа "int *" несовместим с параметром типа "const double *" MatrixVec строка: 20 E0167 аргумент типа "int *" несовместим с параметром типа "const double *" MatrixVec строка: 40 E0020 идентификатор "m1" не определен MatrixVec строка: 63 E0020 идентификатор "m2" не определен MatrixVec строка: 63 C4700 использована неинициализированная локальная переменная "_M2" MatrixVec строка: 57 C4700 использована неинициализированная локальная переменная "_M1" MatrixVec строка: 57 И 2 предупреждения: C6001 Использование неинициализированной памяти "_M1". MatrixVec строка: 57 C6001 Использование неинициализированной памяти "_M2". MatrixVec строка: 57 Вероятно ошибки очень глупые, но мне они совсем не очевидны.
0
|
1487 / 1414 / 240
Регистрация: 19.02.2010
Сообщений: 3,915
|
|
25.05.2022, 01:35 | 4 |
Ты в код пихаешь ассемблерные команды (ну, или интринсики в данном случае), предназначенные для работы с упакованными double-величинами. А у матрицы - целочисленный тип данных. Обычное несоответствие типов (это что касается первых двух ошибок).
А ошибки для строки 63 - потому, что переменные m1, m2 ранее были объявлены внутри тушек циклов (и область видимости у них поэтому оказалась ограничена тушками циклов). Ну и интринсик в строке 63 тоже надо будет поправить на соответствующий перемножению целочисленных данных. PS. Не верю, что справишься. Ибо при размерах матрицы, некратных числу укладываемых в векторный регистр данных (а при 5*5 это именно так) - придётся к векторным вычислениям добавлять ещё и скалярную "добивку" некратных "хвостов". Т.е. если "хвосты" считать тоже на ассемблере/интринсиках - то в 2 раза больше работы выходит по изучению нового. Бросай это дело
0
|
25.05.2022, 01:35 | |
25.05.2022, 01:35 | |
Помогаю со студенческими работами здесь
4
Векторизация НЕ работает ВЕКТОРИЗАЦИЯ Векторизация цикла Векторизация массива в numpy Векторизация массива numpy Векторизация растровых контуров Векторизация множественно выполняющейся операции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |