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

Отчет

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

Задача состоит в решении системы линейных уравнений вида:

Матрица А размера (NxN) невырожденная. Для решения используется итеративный метод Якоби. Для этого исходная система заменяется эквивалентной:

В начале делается некоторое начальное предположение X0, обычно равное вектору B=[b1/a11, ... ,bi/aii, ... ,bn/ann], т.е. Х0=В; затем метод генерирует на каждом шаге последовательность аппроксимаций Xk , k=1,2,3,... Для их вычисления используется следующая итеративная формула:

В общем случае итерации могут не сходится, тем не менее если система строго диагонально доминирующая то итерации будут сходится. Критерием окончания итерационного процесса может являться следующая проверка:

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

Оценим трудоемкость рассмотренного параллельного варианта метода Якоби. Пусть, как и ранее, N есть порядок решаемой системы линейных уравнений, а p, p 1) Размер матрицы (Size).
2) Начальное приближение вектора X (x0).
3) Строки матрицы A и элементы вектора b, необходимые для вычисления соответствующего подвектора xk.

После получения необходимой информации каждый процессор будет вычислять соответствующие компоненты вектора X. И передавать их главному процессору. В свою очередь главный процессор при получении очередного приближения решения Xk должен сравнить его с предыдущим приближением Xk-1. И если норма разности этих векторов окажется меньше заданной точности (eps), то вычисления закончатся. В противном случае вектор Xk будет разослан по всем процессам и будет вычисляться очередное приближение решения.

Демонстрация работы параллельного алгоритма

Выполнение k+1-ой итерации происходит по следующей схеме:

Анализ эффективности

Время, затраченное на последовательное выполнение алгоритма, выражается следующей формулой:
T = k * (2*n^2 - n), где k – число выполненных итераций, а n – число уравнений.

Время, затраченное на параллельное выполнение алгоритма на p процессорах без учета затрат на передачу данных, выражается формулой:
T(p) = k/p * (2*n^2 - n)

Тогда ускорение равно:
S = T(1) / T(p) = p

Эффективность:
E = T1 / p*Tp = 1

Разработанный способ параллельных вычислений позволяет достичь идеальных показателей ускорения и эффективности.

Определим время, затрачиваемое на передачу данных. Для этого используем модель Хокни.

Первоначальная рассылка данных требует следующее время:
Tcomm1 = (p-1) * (4*alfa + (n^2 / p + n) / betta), где alfa - латентность, betta - пропускная способность сети

Передача данных, выполняемая в итерационном процессе, затрачивает следующее время:
Tcomm2 = k * (p-1) * (3*alfa + (n / p + n) / betta), где k - количество выполненных итераций

В итоге общее время передачи данных выражается формулой:
Tcomm = (p-1) * (4*alfa + (n^2 / p + n) / betta) + k * (p-1) * (3*alfa + (n / p + n) / betta)

Это время зависит от числа итераций. Как правило, их количество меньше числа уравнений n. Значит время на передачу данных можно оценить величиной:
Tcomm = O(n^2)
В свою очередь и ко времени выполнения алгоритма применима та же оценка:
T = O(n^2)

Если число итераций будет сравнимо с n, то для времени выполнения алгоритма будет справедлива уже другая оценка:
T = O(n^3)

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

Эксперименты проводились на следующей машине:
Intel Core-i5-2410M CPU @ 2.3GHz

Время работы алгортимов и полученные ускорения представлены в таблице1:

Таблица 1. Ускорение вычислений

Размер матрицы

Количество итераций

Последовательный

Параллельный
(2 процесса)

Ускорение
(2 процесса)

Параллельный
(4 процесcа)

Ускорение
(4 процесса)

500 * 500

3662

3.6

1.8

2

1.7

2.1

1000 * 1000

7441

31.4

16.1

1.95

14.4

2.18

2000 * 2000

13991

235.4

118.9

1.97

107.6

2.18

Из полученных данных видно, что параллельная работа алгоритма дает замедление. Это связано с накладными расходами на передачу данных между процессорами.Также при обмене данными требуется синхронизировать работу процессоров, что тоже не улучшает производительность.

В таблице 2 приведены теоретическое и экспериментальное время:

Таблица 2. Сравнение теоретических оценок и экспериментальных данных.

Размер матрицы

Теоретическое время
(2 процесса)

Экспериментальное время
(2 процесса)

Теоретическое время
(4 процесса)

Экспериментальное время
(4 процесса)

500 * 500

1.8

1.8

0.9

1.7

1000 * 1000

15.7

16.1

7.9

14.4

2000 * 2000

117.7

118.9

58.6

107.6

Как видно из приведённых результатов при локальных вычислениях (на одном компьютере) с числом процессов, равным числу ядер ЦП (2 ядра), выигрыш во времени происходит практически сразу и ускорение достаточно близко к идеальному (идеальное ускорение на двух ядрах = 2). При вычислениях в 4 процесса получаем наоборот – замедление. Это связано с дополнительными коммуникационными расходами при передаче данных между большим числом процессов. Из полученных данных видно, что параллельная работа алгоритма дает замедление. Это связано с накладными расходами на передачу данных между процессорами и разделением времени ЦП. Также при обмене данными требуется синхронизировать работу процессоров, что тоже не улучшает производительность.

Об авторах

Рыбчинский Николай и Вайгульт Иван
группа 8409

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012