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

Решение СЛУ методом сопряженных градиентов

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

Множество n линейных уравнений назвается системой линейных уравнений или линейной системой

В матричной форме:

Под задачей решения системы линейных уравнений для заданных матрицы А и вектора b понимается нахождение значения вектора неизвестных x, при котором выполняются все уравнения системы.

 

Метод решения

Метод сопряженных градиентов–один из наиболее известных итерационных методов решения систем линейных уравнений. Он может быть применен для решения системы линейных уравнений с симметричной, положительноопределенной матрицей

-Матрица А называется симетричной если она совпадает со своей транспонированной матрицей

-Матрица А называется положительноопределенной если

После выполнения n итераций метода сопряженных градиентов(n есть порядок решаемой системы линейных уравнений), очередное приближение Xn совпадает с точным решением.

Если матрица А симметричная и положительноопределена, то функция:

имеет единственный минимум который достигается в точке X*, совпадающий с решением системы линейных уравнений.

Итерация метода сопряженных градиентов состоит в вычислении очередного приближения к точному решению

где

- очередное приближение

- приближение, построенное на предыдущем шаге

- скалярный шаг

- вектор направления

Перед выполнением первой итерации Xо и do полагаются равными нулю, а для вектора g0 устанавливается значение -b

Алогритм:

1. Вычисление градиента

2.   Вычисление вектора направления

3.   Вычисление величины смещения по заданному направлению

4.   Вычисление нового приближения

 

Вычислительная сложность алгоритма 

 

Параллельная схема

 Выполнение итераций метода осуществляется последовательно, следовательно наиболее целесообразный подход состоит в распараллеливании вычислений, реализуемых в ходе выполнения отдельных итераций. Основные вычисления, выполняемые в соответствии с методом, состоят в перемножении матрицы А на вектора x и d. Дополнительные вычисления, имеющие меньший порядок сложности представляют собой различные операции обработки векторов( скалярное произведение, сложение и вычитание, умножение на скаляр).

В последовательном алгоритме всего 2 умножения матрицы на вектор на шагах 1 и 3, именно здесь и задействуется параллельная схема. Рассмотрим параллельный вариант умножения матрицы на вектор. Распределение данных- разбиение матрицы на строки

Базовая подзадача для выполнения вычисления должна содержать строку матрицы А и копию вектора b. После завершения вычислений каждая базовая подзадача будет содержать один из элементов ветора результата с. Для объединения результатов расчетов и получения полного вектора с на каждом из процессоров выислительной системы необходимо выполнить операцию обобщенного сбора данных.

Если число процессоров p меньше числа базовых подзадач m,  базовые подзадачи могут быть укрупнены с тем, чтобы каждый процессор выполнял несколько операций умножения строк матрицы А и вектора b. В этом случае, по окончании вычислений каждая базовая подзадача будет содержать набор элементов результирующего вектора с.

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

 

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

Вычислительная сложность параллельных операций умножения матрицы на вектор при использовании схемы ленточного горизонтального разделения матрицы

Как результат, при условии дублирования всех вычислений над векторами общая вычислительная сложность параллельного варианта метода сопряженных градиентов является равной

Общая оценка показателей ускорения и эффективности

С учетом длительности выполняемых вычислительных операций и информационного взаимодействия процессов, время выполнения параллельного варианта метода сопряженных градиентов для решения систем линейных уравнений принимает вид:

 

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

Параметры оборудования:

ПК:

процессор: Intel Core 2 Duo CPU E8500,  3.16 GHz(2 CPUs)

память: 2048MB RAM

OS: Win XP SP3

Компилятор: С++ встроенный в Visual Studio 2005

Длительность τ базовой скалярной операции - 0.0000000015 сек

Параметры передачи между процессами на одной машине: латентность α - 0.000024 сек, пропускная способность β - 267506473 байт/сек

Размер элемента упорядочиваемых данных в байтах w= 4 и соответствует типу int

размерность матрицы

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

2 процесса

ускорение 2 процесса

4 процесса

ускорение 4 процесса

100

0.00398184

0.00579593

0.69

0.0141547

0.28

200

0.0255704

0.0210043

1.22

0.0376483

0.68

300

0.08509408

0.0553403

1.54

0.131018

0.65

400

0.198999

0.116307

1.71

0.184714

1.07

500

0.379677

0.213407

1.78

0.299482

1.28

600

0.658378

0.35659

1.85

0.417103

1.58

700

1.02645

0.590921

1.73

0.678388

1.51

800

1.54995

0.841979

1.84

0.970116

1.59

900

2.38614

1.39978

1.70

1.60877

1.48

1000

3.42194

2.31082

1.48

2.44232

1.4

1500

11.6192

8.9307

1.3

9.577

1.21

2000

27.5323

20.92

1.31

22.15

1.24

3000

94

73.6611

1.28

74.6728

1.26

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

размерность матрицы

2 процесса

4 процесса

 T

 T*

 T

 T*

100

0,00323336253966435

0,00579593

0,00177248594889392

0,0141547

200

0,0249136816010678

0,0210043

0,0130504066803965

0,0376483

300

0,0830409571842104

0,0553403

0,0428337621945078

0,131018

400

0,195615189289092

0,116307

0,100122552491228

0,184714

500

0,380636377915713

0,213407

0,193916777570557

0,299482

600

0,656104523064073

0,35659

0,333216437432494

0,417103

700

1,04001962473417

0,590921

0,52702153207704

0,678388

800

1,55038168292601

0,841979

0,784332061504195

0,970116

900

2,20519069763959

1,39978

1,11414802571396

1,60877

1000

3,0224466688749

2,31082

1,52546942470633

2,44232

1500

10,1754308728776

8,9307

5,11965794140732

9,577

2000

24,0895889899237

20,92

12,1014823276735

22,15

3000

81,2014269631464

73,6611

40,7280387089016

74,6728

На данной конфигурации оборудования оптимальные показатели эффективности будут при запуске на 2 процессах, т.к. у процессора всего два физических ядра.

При небольших размерностях исходной матрицы время выполнения операций вычисления ниже чем время пересылки команд MPI, запуска процессов, из чего следует ,что последовательный алгоритм показывает лучшее время. При высоких размерностях алгоритм сходится к одному и тому же показателю эффективности.

 

Авторы

Нижегородцев А., Михайлова О. группа 8410

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012