Post on 30-Dec-2015
description
Московский государственный университет им. М.В.Ломоносова
Введение
П а р а л л е л ь н ы е м П а р а л л е л ь н ы е м е т о д ы е т о д ы
ии а л г о р и т м ы а л г о р и т м ы
Якобовский Михаил Владимировичд.ф.-м.н.Институт математического моделирования РАН, Москва
Что происходит?
Вычислительная мощность суперкомпьютеров быстро растет
Примеров успешного полноценного использования суперкомпьютеров немного
В среднем вычислительная мощность суперкомпьютеров используется не более чем на несколько процентов
2
Кто виноват?
Вычислительная мощность суперкомпьютера не более чем прямая сумма мощностей большого числа входящих в его состав процессоров или процессорных ядер
Современные алгоритмы не могут автоматически использовать такую «распределенную» мощность
3
Что делать?
Изучать известные методы анализа и создания параллельных алгоритмов
Создавать новые методы использования многопроцессорных систем для решения актуальных значимых задач
4
Кризис эффективности
Вычислительная мощность суперкомпьютеров велика, но: – Она образована суммой мощностей множества
исполнительных устройств
На протяжении ряда лет увеличение производительность компьютера автоматически означало снижение времени работы существующих программ. Теперь это не так:– Последовательные программы не могут
работать на суперкомпьютерах быстрее
5
Кризис эффективности
Время вычислительных систем, обладающих существенной производительностью и имеющих в своем составе только один процессор прошло, и, по всей видимости, безвозвратно
Автоматическое преобразование последовательных программ в параллельные невозможно
Необходимо знать существующие и развивать новые методы решения задач на многопроцессорных системах
6
Уточнение круга рассматриваемых систем
Системы на основе объединенных сетью типовых вычислительных узлов – системы с распределенной оперативной памятью
Системы с доступом всех процессоров к общей оперативной памяти
Графические ускорители ПЛИС Нейрокомпьютеры Другие …
7
Многопроцессорные системы с распределенной памятью
Процессор 1 Процессор 2 Процессор 3
ЛокальнаяПамять 1
ЛокальнаяПамять 2
ЛокальнаяПамять 3
Router2
Router1
P-Nodes
IO-Nodes
Network концентраторы
Процессорные узлы
8
Многопроцессорные системы с общей памятью
Процессор 1 Процессор 2 Процессор 3
Общая оперативная память
9
Уточнение круга рассматриваемых алгоритмов
Слабо взаимодействующие последовательные процессы
10
При запуске указываем число требуемых процессоров Np и название программы
На выделенных для расчета узлах запускается Np копий указанной программы
– Например, на двух узлах запущены три копии программы. Копия программы с номером 1 не имеет непосредственного доступа к оперативной памяти копий 0 и 2:
Каждая копия программы получает два значения: – Np
– rank из диапазона [0 … Np-1] Любые две копии программы могут непосредственно обмениваться
данными с помощью функций передачи сообщений
Модель программы на распределенной памяти
0 1 2
11
Работа начинается с запуска одной программы При необходимости программа порождает новые
процессы, эти процессы:– Обладают собственными локальными переменными– Имеют доступ к общим глобальным переменнымint a_global; main нить1 нить2
main()
{
int b1_local; запуск нити1
} запуск нити2
fun()
{
int b2_local; ожидание
} окончания работы
Модель программы на общей памяти
12
Свойства канала передачи данных
T(n)=n*Tбайта+ Tлатентности
Gbit Ethernet
Infiniband
13
Свойства канала передачи данных
T(n)=n*Tбайта+ Tлатентности
Gbit Ethernet
Число передаваемых байт
14
Свойства канала передачи данных
T(n)=n*Tбайта+ Tлатентности
Число передаваемых байт
Infiniband
15
Синхронный методSend(адрес данных, размер, номер процессора)
Recv(адрес данных, размер, номер процессора)
Асинхронные методы– Небуферизованный
ASend(адрес данных, размер, номер процессора)
ARecv(адрес данных, размер, номер процессора)
ASync
– Буферизованный
ABSend(адрес данных, размер, номер процессора)
Методы передачи данных
16
A=3 Send(&A) A=5
Синхронный
B=4 Recv(&B) Print(B)
SendRecv
Print(B)A=5
B=4A=3
Результат
3
17
A=3 АSend(&A) A=5
Асинхронные
B=4 АRecv(&B) Print(B)
Send
ASend
Recv
ARecv
Print(B)A=5
B=4
Результат
3 ? 4 ? 5
A=3
18
A=3 АSend(&A) Async() A=5
Асинхронные
B=4 АRecv(&B) Print(B)
ASync
Send
ASend
Recv
ARecv
Print(B)
A=5
B=4
Результат
3 ? 4
A=3
19
A=3 АSend(&A) Async() A=5
Асинхронные
B=4 АRecv(&B) Async() Print(B)
Результат
3
ASync
SendASend
ASyncRecv
ARecv
Print(B)A=5
A=3B=4
20
A=3 АBSend(&A) A=5
Асинхронные буферизованные
B=4 АRecv(&B) Async() Print(B)
Результат 3
Send(&buf)
ABSend
ASyncRecv
ARecv
Print(B)
A=5
buf=A
A=3
B=4
21
Целочисленная неотрицательная переменная Две атомарные операции, не считая инициализации V(S)
– Увеличивает значение S на 1
P(S)– Если S положительно, уменьшает S на 1– Иначе ждет, пока S не станет больше 0
Семафор
Языки програмирования. Редактор Ф.Женюи. Перевод с англ В.П.Кузнецова. Под ред. В.М.Курочкина. М:."Мир", 1972 Э. Дейкстра.
Взаимодействие последовательных процессов. http://khpi-iip.mipk.kharkiv.edu/library/extent/dijkstra/ewd123/index.html
22
ускорение
параллельного
алгоритма
S(p)=T(1)/T(p)
Ускорение и эффективность параллельных алгоритмов
Ускорение параллельного алгоритма относительно
наилучшего последовательного
S*(p)=T * /T(p)
E *(p)=S *(p)/p
эффективность
использования процессорной мощности
E(p)=S(p)/p
23
Да:– Плохой последовательный алгоритма– Влияние аппаратных особенностей вычислительной
системы
Может ли быть S(p)>p ?
24
Да– Если первый алгоритм позволяет использовать больше
процессоров, чем второй.
Самый эффективный алгоритм – использующий один (1) процессор. – Его эффективность по определению равна 100%, но он
не всегда самый быстрый.
Может ли неэффективный алгоритм работать быстрее эффективного?
25
Все элементарные операции (+ - * / )
выполняются за время с Все операции выполняются точно, результат не
зависит от порядка их выполнения
Определить сумму конечного ряда
26
S=1;
a=1;
for(i=1;i<= n;i++)
{
a=a*x/i;
S=S+a;
}
Последовательный алгоритм
T1= 3nс
27
Параллельный алгоритм
Вычислить для всех i =1,…,n : xi
Вычислить для всех i =1,…,n : i!
Вычислить для всех i =1,…,n : ai =
Вычислить сумму всех членов ai
28
Для вычисления xi воспользуемся методом бинарного умножения
x
1 x2
2 x3 x4
3 x5 x6 x7 x8
4 x9 x10 x11 x12 x13 x14 x15 x16
xi
29
Для вычисления i! воспользуемся
аналогичным методом
4 12 34 56 78910 1112 1314 1516=16!
3 12 34 56 78 910 1112 1314 1516
2 12 34 56 78 910 1112 1314 1516
1 12 34 56 78 910 1112 1314 1516
i!
30
Для вычисления i! воспользуемся
аналогичным методом
4 12 34 56 78910 1112 =12!
3 12 34 56 78 910 1112 1314 1516
2 12 34 56 78 910 1112 1314 1516
1 12 34 56 78 910 1112 1314 1516
12!
31
Для вычисления i! воспользуемся
аналогичным методом
4 12 34 56 78910 1112 1314=14!
3 12 34 56 78 910 1112 1314
2 12 34 56 78 910 1112
1 12 34 56 78 910 1112 1314 1516
14!
32
Параллельный алгоритм
Вычислить все xi :
Вычислить все i! : Вычислить все ai : - надо n
процессоров
Вычислить сумму всех ai :a1 a2 a3 a4 a5 a6 a7 a8 a1+a2 a3+a4 a5+a6 a7+a8
a1+a2+a3+a4 a5+a6+a7+a8
a1+a2+a3+a4+a5+a6+a7+a8
2
33
p=n
Ускорение и эффективность при p=n
21.5
1.5
34
Определены понятия ускорения и эффективности параллельных алгоритмов
Представлен ряд способов организации взаимодействия последовательных процессов
Представлен алгоритм, обладающий низкой эффективностью, но высоким быстродействием
Заключение
35
Литература…
Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002.
Грегори Р. Эндрюс - Основы многопоточного, параллельного и распределенного программирования. "Вильямс ", 2003
Роберт Седжвик - Фундаментальные алгоритмы на C. Части 1 - 5. Анализ. Структуры данных. Сортировка. Поиск. Алгоритмы на графах
Языки программирования. Редактор Ф.Женюи. Перевод с англ. В.П.Кузнецова. Под ред. В.М.Курочкина. М:."Мир", 1972 Э. Дейкстра. Взаимодействие последовательных процессов.
http://khpi-iip.mipk.kharkiv.edu/library/extent/dijkstra/ewd123/index.html Дональд Э. Кнут Искусство программирования
36
Литература…
Учебные курсы Интернет Университета Информационных технологий Гергель В.П. Теория и практика параллельных вычислений. —
http://www.intuit.ru/department/calculate/paralltp/
Лекции в форме видео-конференций Гергель В.П. Основы параллельных вычислений. —
http://www.hpcu.ru/courses/15/ Немнюгин С.А. Основы параллельного программирования с использованием
MPI . — http://www.hpcu.ru/courses/14/ Крюков В.А., Бахтин В.А. Параллельное программирование с OpenMP . —
http://www.hpcu.ru/courses/16/
Дополнительные учебные курсы: Воеводин В.В. Вычислительная математика и структура алгоритмов. —
http://www.intuit.ru/department/calculate/calcalgo/
37
Литература
Ресурсы Internet
http://parallel.ru http://top500.org http://supercomputers.ru
38