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

Решение СЛАУ методом Якоби

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

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

Особенностью параллельной реализации метода Якоби в отличие от последовательной версии является разбиение преобразованной матрицы А на части, которые передаются процессам-потомкам от родительского. Каждый процесс-потомок производит расчеты лишь со своей частью матрицы, вычисляя часть вектора xk+1, которая затем передается родительскому процессу с целью проверки критерия останова. Если критерий останова не выполнился, то обновленное приближение решения передается всем процессам-потомкам и они выполняют следующую итерацию алгоритма. Такая схема позволяет более эффективно расходовать системную память и уменьшает количество пересылаемых данных.

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

Выполнение 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)

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

Эксперименты проводились на следующей конфигурации:
Processor: AMD Turion(tm) X2 Dual-Core Mobile RM-70 2.00GHz
RAM: 3 Gb
OS: Windows 7 Ultimate x86

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

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

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

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

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

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

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

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

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

512 * 512

10000

10.6055

7.71639

1.37

12.0014

0.88

1024 * 1024

10000

41.6292

29.6758

1.4

14.4

2.18

2048 * 2048

10000

179.711

123.396

1.46

152.437

1.18

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

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

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

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

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

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

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

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

512 * 512

5.3027

7.71639

2.6513

12.0014

1024 * 1024

20.8146

29.6758

10.4073

43.9385

2048 * 2048

89.855

123.396

44.927

152.437

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

Об авторах

Заикин А., Роменский С., группа 8410.

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012