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

Описание алгоритма

        Последовательный алгоритм представляется тремя вложенными циклами и ориентирован на последовательное вычисление строк результирующей матрицы С .

double *MatrixA=new double [n*n];
double *MatrixB=new double [n*n];
double *MatrixC=new double [n*n];

MatrixInit(MatrixA,n);

MatrixInit(MatrixB,n);

for(i=0;i

{

       for(k=0;k

       {

             sum=0;

             for(j=0;j

             {

                  sum+=MatrixA[i*n+j]*MatrixB[j*n+k];

             }

             MatrixC[i*n+k]=sum;

       }

}

         Вычисление всех элементов матрицы С может быть выполнено независимо друг от друга. Поэтому возможный подход для организации параллельных вычислений состоит в использовании в качестве  подзадачи определение одного элемента матрицы С. Для проведения вычислений каждая подзадача должна содержать по одной строке матрицы А и одному столбцу матрицы В . Общее количество получаемых при таком подходе подзадач оказывается равным n^2 (по числу элементов матрицы С ). Обычно такое количество сформированных подзадач превышает число имеющихся процессоров(ядер процессора) и делает неизбежным укрупнение подзадач. Для дальнейшего рассмотрения определим в качестве подзадачи возьмем процедуру вычисления всех элементов одной из строк матрицы С . Этот подход снижает количество подзадач до величины n . Для выполнения вычислений подзадаче должны быть доступны одна из строк матрицы A и все столбцы матрицы B. 

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012