Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритмы умножения матриц 
:(
    Опции темы
Vitaly333
Дата 22.3.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 6.11.2006
Где: Volgograd

Репутация: нет
Всего: 2



Цитата

Ещё при использовании такого приёма умножение можно векторизировать (т.е. заюзать SIMD и SSE), выполняя 2-4 умножения за такт. 
А матрицу лучше хранить не строками, а линейно и адресовать как x[i * col + j] 


Попробывал через векторизацию:

Код


int i,j,k,row,col,len;
        
    for (i = 0; i < n; i++) {
        row = i*n;
        len = row+n;
        for (j = row; j < len; j++) {    
            c[j] = 0.0;
            col = j-row;
            for (k = row; k < len; k++) {                
                c[j] += a[k] * b[col];
                col+=n;
            }
        }
    }


Но работает медленнее, чем 2-ой алгоритм с предварительным трансонированием.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0412 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.