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

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

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

double A[Size*Size];
double B[Size*Size];
double C[Size*Size];
int i,j,k;

RandInit (A, Size); RandInit (B, Size);
...
for (i=0; i<Size; i++){
  for (j=0; jj<Size;j++) {
    C[i*Size+j]=0;
    for (k=0; k<Size; k++){
      C[i*Size+j] += A[i*Size+k]*B[j*Size+k];
      }
   }
}

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

Поскольку каждый элемент результирующей матрицы есть скалярное произведение строки и столбца исходных матриц, то для вычисления всех элементов матрицы С размером 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