Новости
О Центре
Кластер
Обучение
Основной курс по параллельному программированию
Учебные курсы
Магистратура
Дополнительное образование
Работы студентов
Библиотека
Исследования
Конференции
Полезные ссылки
NVIDIA
Контакты
О сайте
Имя:
Пароль:
запомнить:
Забыли пароль? Регистрация

Последовательный алгоритм

Этот алгоритм предполагает выполнение m*n*l операций умножения и столько же операций сложения элементов исходных матриц. При умножении квадратных матриц размера n*n количество выполненных операций имеет порядок O(n^3).

Последовательный алгоритм умножения матриц представляется тремя вложенными циклами:

double MatrixA[Size][Size];
double MatrixB[Size][Size];
double MatrixC[Size][Size];
int i,j,k;
for (i=0; i < Size; i++)
{
   for (j=0; j < Size; j++)
   {
     MatrixC[i][j] = 0;
     for (k=0; k < Size; k++)
     {
        MatrixC[i][j] = MatrixC[i][j] + MatrixA[i][k] * MatrixB[k][j];
     }
   }
}

Этот алгоритм является итеративным и ориентирован на последовательное вычисление строк матрицы С. Действительно, при выполнении одной итерации внешнего цикла (цикла по переменной i) вычисляется одна строка результирующей матрицы.

Поскольку каждый элемент результирующей матрицы есть скалярное произведение строки и столбца исходных матриц, то для вычисления всех элементов матрицы С размером n*n необходимо выполнить (n^2)*(2n-1) скалярных операций и затратить время T1 = (n^2)*(2n-1)*t, где t есть время выполнения одной элементарной скалярной операции.

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012