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

Содержание работы

Постановка задачи

Для выполнения задачи необходимо:

1. Реализовать последовательный алгоритм умножения матриц;

2. Реализовать алгоритм умножения матриц Кэннона, используя MPI для обеспечения параллелизма выполнения;

3. Выполнить теоретические оценки ускорения;

4. Провести серийные эксперименты, из которых рассчитать реальное ускорение (замедление) алгоритма.

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

Пусть поставлена задача перемножения матриц А и В: C = A * B , где C,A,B — квадратные матрицы размером n*n.

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

При последовательной реализации используется формула

Блочный алгоритм перемножения матриц

В блочном алгоритме матрицы разбиваются на блоки, представляющие собой подматрицы исходных матриц. При этом каждый блок Сij матрицы C определяется как произведение соответствующих блоков матриц A и B.

Алгоритм Кэннона перемножения матриц

Алгоритма Кэннона — блочный. Идея алгоритма состоит в изменении схемы начального распределения блоков перемножаемых матриц между процессорами вычислительной системы. Начальное расположение блоков в алгоритме Кэннона подбирается таким образом, чтобы располагаемые блоки на процессорах могли бы быть перемножены без каких-либо дополнительных передач данных между процессорами. При этом подобное распределение блоков может быть организовано таким образом, что перемещение блоков между процессорами в ходе вычислений может осуществляться с использованием более простых коммуникационных операций. Этап инициализации алгоритма Кэннона включает выполнение следующих операций передач данных:

1. на каждый процессор pij передаются блоки Aij, Bij;

2. для каждой строки i процессорной решетки блоки матрицы A сдвигаются на (i-1) позиций влево;

3. для каждого столбца j процессорной решетки блоки матрицы B сдвигаются на (j-1) позиций вверх.

Отсюда следует, что для корректной работы алгоритма потребуется n*n=p процессов. Основной этап алгоритма Кэннона представляет из себя цикл, в котором производятся вычисления блоков матрицы С, а основные коммуникационные операции: циклический сдвиг влево блоков матрицы A и циклический сдвиг вверх блоков матрицы В. В итоге алгоритм Кэннона выглядит следующим образом:

1.1 Для всех строк, кроме первой, производится циклический сдвиг влево блоков матрицы A

1.2 Для всех столбцов, кроме первого, производится циклический сдвиг вверх блоков матрицы В.

2.1 Вычисляется C(i,j) = C(i,j) + A(i,j) * B(i,j)

2.2 Осуществляется цикл для i от 0 до n–1: для всех строк производится циклический сдвиг влево блоков матрицы A; для всех столбцов производится циклический сдвиг вверх блоков матрицы В; вычисляется C(i,j) = C(i,j) + A(i,j) * B(i,j).

Демонстрация

Схема перераспределения блоков матриц А и В

Теоретические оценки эффективности

Из уже выведеных оценок алгоритма определим:

Временные затраты на перемножение блоков:

Временные затраты на передачу блока:

Временные затраты всего параллельного алгоритма:

Ускорение:

Эффективность алгоритма:

Результаты вычислительных экспериментов

1. Конфигурация системы: Intel Core 2 Duo E740 2.8GHz 3.25GB (ОС Windows XP Professional SP3 x86)

2. Конфигурация системы: Mobile QuadCore Intel Core i5 2540M 2.6GHz 4GB (ОС Windows 7 x64)

Об авторе

Работу выполнил студент группы 83_03 Овсюхно Андрей

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012