Презентация проекта - Нижегородский государственный

advertisement
Нижегородский государственный университет
им. Н.И.Лобачевского
Факультет Вычислительной математики и кибернетики
Параллельные численные методы
Применение технологии Cilk для
решения СЛАУ
Кутилов Е., Генералова Е.
Содержание
Постановка задачи
 Разложение Холецкого
 Обратный ход
 Трудоемкость
 Оценка эффективности
 Блочный алгоритм
 Параллельный алгоритм
 Результаты вычислительных экспериментов
 Заключение

Применение технологии Cilk для решения СЛАУ
2
Постановка задачи
Рассмотрим систему из n линейных алгебраических
уравнений вида:
В матричном виде:
А - вещественная матрица размера n x n,
b, x - вектора размерности n.
Применение технологии Cilk для решения СЛАУ
3
Разложение Холецкого
Разложение Холецкого – представление матрицы A в
виде A = LLT, где L — нижняя треугольная матрица со
строго положительными элементами на диагонали (lij >0).
Необходимое условие:
 Матрица A – симметричная:
 Матрица А - положительно-определённая:
Применение технологии Cilk для решения СЛАУ
4
Последовательный алгоритм
Элементы матрицы L вычисляются по следующим
формулам:
, если j < i.
Применение технологии Cilk для решения СЛАУ
5
Обратный ход
Если разложение получено, то решение системы
сводится к последовательному решению двух линейных
систем уравнений с треугольными матрицами:
Ly=b, LTx=y
Решение этих систем находится по формулам обратного
хода метода Гаусса:
Применение технологии Cilk для решения СЛАУ
6
Трудоемкость
Общее время работы метода оценивается кубической
трудоемкостью O(n3).

Обратный ход оценивается квадратичной
трудоемкостью O(n2).

Применение технологии Cilk для решения СЛАУ
7
Оценка эффективности
На практике часто необходимо решить: Ax=B,
где B матрица правых частей.

Матрицу A необходимо факторизовать один раз для
всех правых частей.

После факторизации решение каждой системы
занимает квадратичное время.

Таким образом, трудоемкость становиться близкой к
квадратичной (за счет многократного применения
обратного хода).

Применение технологии Cilk для решения СЛАУ
8
Блочный алгоритм
Недостаток классического алгоритма – плохая
локализация обращения к памяти, как следствие
медленная работа алгоритма.

Избежать это можно использованием блочного
алгоритма работы с матрицами.

Это позволяет добиться большей локализации данных,
что в дальнейшем поможет в распараллеливании
алгоритма.

Применение технологии Cilk для решения СЛАУ
9
Блочный алгоритм
Фактор матрицы A вычисляется по формулам:
, если j < i.
где q = n / r - количество блоков
Извлечение корня соответствует выполнению
разложения Холецкого.
 Операция Ljj-1 соответствует нахождению обратной
матрицы для Ljj.

Применение технологии Cilk для решения СЛАУ
10
Параллельный алгоритм
В основу положен принцип распараллеливания по
данным.
Распараллеливание возможно для следующих
вычислительных процедур:

вычисление диагонального элемента Lii

вычисление элементов i-ой строки

выполнение матричного умножения
Параллельная версия выполнена с использованием
технологии Intel® Cilk Plus.
Применение технологии Cilk для решения СЛАУ
11
Вычисление диагонального элемента L
, где
Распараллеливание:
Применение технологии Cilk для решения СЛАУ
12
Вычисление элементов i-ой строки
, если j < i, где
Распараллеливание:
Применение технологии Cilk для решения СЛАУ
13
Блочное умножение
Пусть дано блочное представление матрицы A и матрицы
B, тогда их произведение C может быть также
представлено в блочном виде:
где
Применение технологии Cilk для решения СЛАУ
14
Выполнение матричного умножения
5
1
2
3
4
6
х
=
7
8
Распараллеливание:
1
х
5
=
1
2
х
6
=
2
- временная матрица,
используемая для хранения
промежуточного результата.
1
=
3
х
7
=
3
4
х
8
=
4
+
Применение технологии Cilk для решения СЛАУ
2
+
3
+
4
15
Сilk_for
Применение технологии Cilk для решения СЛАУ
16
Reducer
Класс Monoid, реализующий моноид, для работы с
редьюсером. Этот класс содержит следующие
функции:
 reduce (T *left, T *right) вычисляет *left = *left OP *right,
 identity (T *p) создаёт нейтральный элемент в области
памяти, на которую указывает p,
 destroy (T *p) вызывает деструктор для объекта, на
который указывает p,
Применение технологии Cilk для решения СЛАУ
17
Сilk_for
Применение технологии Cilk для решения СЛАУ
18
Reducer
Базовый тип, определяющий необходимые параметры
для исходной матрицы, - класс MyStruct.
Применение технологии Cilk для решения СЛАУ
19
Reducer
Реализация функции reduce (T *left, T *right)
Применение технологии Cilk для решения СЛАУ
20
Reducer
Класс – оболочка, для упрощенной работы с
редьюсером, содержит :
cilk::reducer< myMonoid > * imp
Методы доступа и изменения:
reducerAddMatrix ( int size_A, double* &A );
void Op ( int sizeBlock, int startIndexA,
int numberRowsA, int numberColumnsA, double* temp_A );
Применение технологии Cilk для решения СЛАУ
21
Reducer
Объявление и начальная инициализация редьюсера:
reducerAddMatrix C(size, A);
Применение технологии Cilk для решения СЛАУ
22
Reducer
Реализация функции Op ():
Применение технологии Cilk для решения СЛАУ
23
Reducer
Использование редьюсера на примере нахождения
диагонального элемента матрицы L:
Применение технологии Cilk для решения СЛАУ
24
Результаты
экспериментов
Применение технологии Cilk для решения СЛАУ
25
Тестовая инфраструктура
Процессор
Intel Core 2 Quad Q6600
Память
4 GB
Операционная система
Microsoft Windows 7
Среда разработки
Microsoft Visual Studio 2008
Компилятор,
профилировщик, отладчик
Intel Parallel Studio XE
Библиотеки
Intel® MKL
Intel® Cilk Plus
Применение технологии Cilk для решения СЛАУ
26
Методы тестирования
программной реализации
Анализ корректности разработанной программной
реализации разложения Холецкого производится путем
сравнения с эталонной версией из библиотеки Intel
Kernel Library (MKL).

Оценкой производительности является общее время
решения поставленной задачи.

Применение технологии Cilk для решения СЛАУ
27
Результаты вычислительных экспериментов
Сравнение последовательного алгоритма с блочным
алгоритмом при различных размерах блоков с использованием
умножения матриц по определению.
Время выполнения
160
140
Cholesky
120
Размер блока
Холецкого:
100
50
80
60
150
40
20
250
0
1000
2000
3000
4000
5000
6000
7000
8000
Размер матрицы
Применение технологии Cilk для решения СЛАУ
28
Результаты вычислительных экспериментов
Сравнение последовательного алгоритма с блочным
алгоритмом (размер блока 50) с использованием блочного
алгоритма умножения матриц при различных размерах блоков.
180
Время выполнения
160
Cholesky
Размер блока:
140
10
120
100
20
80
30
60
40
40
20
50
0
1000
2000
3000
4000
5000
Размер матрицы
6000
Применение технологии Cilk для решения СЛАУ
7000
8000
29
Результаты вычислительных экспериментов
Сравнение последовательной и параллельных версий.
80
MKLSeq
Время выполнения
70
60
CholeskyBlock
(choleskyBlock = 50,
multBlock = 50)
50
CholeskyParallel
(choleskyBlock = 50,
multBlock = 50)
40
30
CholeskyMultParallel
(choleskyBlock = 375,
multBlock = 50)
20
10
0
1000
2000
3000
4000
5000
Размер матрицы
6000
Применение технологии Cilk для решения СЛАУ
7000
8000
CholeskyParallelAND
MultParallel
(choleskyBlock = 100,
multBlock = 50)
30
Результаты вычислительных экспериментов
Ускорение лучшей параллельной реализации алгоритма
относительно последовательного алгоритма на размере
8000.
12
11,37
10
Ускорение
8
5,7
6
4
4
2
1,83
1
0
Cholesky
CholeskyBlock
CholeskyParallel
(choleskyBlock = 50, (choleskyBlock = 100,
multBlock = 50)
multBlock = 50)
Применение технологии Cilk для решения СЛАУ
MKLSeq
MKLParallel
31
Заключение
В ходе работы изучены расширенные возможности
технологии Cilk Plus – создание собственных
редьюсеров данных.

Реализовано несколько программных модификаций
алгоритма разложения Холецкого.

Для параллельной модификации алгоритма Холецкого
разработаны собственные редьюсеры.

Наиболее эффективная реализация алгоритма
показала отставание от MKL в 3 раза.

Применение технологии Cilk для решения СЛАУ
32
Вопросы ?
Применение технологии Cilk для решения СЛАУ
33
Download