![Page 1: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/1.jpg)
Московский государственный университет им. М.В.Ломоносова
Введение
П а р а л л е л ь н ы е м П а р а л л е л ь н ы е м е т о д ы е т о д ы
ии а л г о р и т м ы а л г о р и т м ы
Якобовский Михаил Владимировичд.ф.-м.н.Институт математического моделирования РАН, Москва
![Page 2: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/2.jpg)
Что происходит?
Вычислительная мощность суперкомпьютеров быстро растет
Примеров успешного полноценного использования суперкомпьютеров немного
В среднем вычислительная мощность суперкомпьютеров используется не более чем на несколько процентов
2
![Page 3: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/3.jpg)
Кто виноват?
Вычислительная мощность суперкомпьютера не более чем прямая сумма мощностей большого числа входящих в его состав процессоров или процессорных ядер
Современные алгоритмы не могут автоматически использовать такую «распределенную» мощность
3
![Page 4: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/4.jpg)
Что делать?
Изучать известные методы анализа и создания параллельных алгоритмов
Создавать новые методы использования многопроцессорных систем для решения актуальных значимых задач
4
![Page 5: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/5.jpg)
Кризис эффективности
Вычислительная мощность суперкомпьютеров велика, но: – Она образована суммой мощностей множества
исполнительных устройств
На протяжении ряда лет увеличение производительность компьютера автоматически означало снижение времени работы существующих программ. Теперь это не так:– Последовательные программы не могут
работать на суперкомпьютерах быстрее
5
![Page 6: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/6.jpg)
Кризис эффективности
Время вычислительных систем, обладающих существенной производительностью и имеющих в своем составе только один процессор прошло, и, по всей видимости, безвозвратно
Автоматическое преобразование последовательных программ в параллельные невозможно
Необходимо знать существующие и развивать новые методы решения задач на многопроцессорных системах
6
![Page 7: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/7.jpg)
Уточнение круга рассматриваемых систем
Системы на основе объединенных сетью типовых вычислительных узлов – системы с распределенной оперативной памятью
Системы с доступом всех процессоров к общей оперативной памяти
Графические ускорители ПЛИС Нейрокомпьютеры Другие …
7
![Page 8: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/8.jpg)
Многопроцессорные системы с распределенной памятью
Процессор 1 Процессор 2 Процессор 3
ЛокальнаяПамять 1
ЛокальнаяПамять 2
ЛокальнаяПамять 3
Router2
Router1
P-Nodes
IO-Nodes
Network концентраторы
Процессорные узлы
8
![Page 9: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/9.jpg)
Многопроцессорные системы с общей памятью
Процессор 1 Процессор 2 Процессор 3
Общая оперативная память
9
![Page 10: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/10.jpg)
Уточнение круга рассматриваемых алгоритмов
Слабо взаимодействующие последовательные процессы
10
![Page 11: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/11.jpg)
При запуске указываем число требуемых процессоров Np и название программы
На выделенных для расчета узлах запускается Np копий указанной программы
– Например, на двух узлах запущены три копии программы. Копия программы с номером 1 не имеет непосредственного доступа к оперативной памяти копий 0 и 2:
Каждая копия программы получает два значения: – Np
– rank из диапазона [0 … Np-1] Любые две копии программы могут непосредственно обмениваться
данными с помощью функций передачи сообщений
Модель программы на распределенной памяти
0 1 2
11
![Page 12: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/12.jpg)
Работа начинается с запуска одной программы При необходимости программа порождает новые
процессы, эти процессы:– Обладают собственными локальными переменными– Имеют доступ к общим глобальным переменнымint a_global; main нить1 нить2
main()
{
int b1_local; запуск нити1
} запуск нити2
fun()
{
int b2_local; ожидание
} окончания работы
Модель программы на общей памяти
12
![Page 13: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/13.jpg)
Свойства канала передачи данных
T(n)=n*Tбайта+ Tлатентности
Gbit Ethernet
Infiniband
13
![Page 14: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/14.jpg)
Свойства канала передачи данных
T(n)=n*Tбайта+ Tлатентности
Gbit Ethernet
Число передаваемых байт
14
![Page 15: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/15.jpg)
Свойства канала передачи данных
T(n)=n*Tбайта+ Tлатентности
Число передаваемых байт
Infiniband
15
![Page 16: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/16.jpg)
Синхронный методSend(адрес данных, размер, номер процессора)
Recv(адрес данных, размер, номер процессора)
Асинхронные методы– Небуферизованный
ASend(адрес данных, размер, номер процессора)
ARecv(адрес данных, размер, номер процессора)
ASync
– Буферизованный
ABSend(адрес данных, размер, номер процессора)
Методы передачи данных
16
![Page 17: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/17.jpg)
A=3 Send(&A) A=5
Синхронный
B=4 Recv(&B) Print(B)
SendRecv
Print(B)A=5
B=4A=3
Результат
3
17
![Page 18: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/18.jpg)
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
![Page 19: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/19.jpg)
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
![Page 20: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/20.jpg)
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
![Page 21: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/21.jpg)
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
![Page 22: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/22.jpg)
Целочисленная неотрицательная переменная Две атомарные операции, не считая инициализации 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
![Page 23: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/23.jpg)
ускорение
параллельного
алгоритма
S(p)=T(1)/T(p)
Ускорение и эффективность параллельных алгоритмов
Ускорение параллельного алгоритма относительно
наилучшего последовательного
S*(p)=T * /T(p)
E *(p)=S *(p)/p
эффективность
использования процессорной мощности
E(p)=S(p)/p
23
![Page 24: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/24.jpg)
Да:– Плохой последовательный алгоритма– Влияние аппаратных особенностей вычислительной
системы
Может ли быть S(p)>p ?
24
![Page 25: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/25.jpg)
Да– Если первый алгоритм позволяет использовать больше
процессоров, чем второй.
Самый эффективный алгоритм – использующий один (1) процессор. – Его эффективность по определению равна 100%, но он
не всегда самый быстрый.
Может ли неэффективный алгоритм работать быстрее эффективного?
25
![Page 26: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/26.jpg)
Все элементарные операции (+ - * / )
выполняются за время с Все операции выполняются точно, результат не
зависит от порядка их выполнения
Определить сумму конечного ряда
26
![Page 27: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/27.jpg)
S=1;
a=1;
for(i=1;i<= n;i++)
{
a=a*x/i;
S=S+a;
}
Последовательный алгоритм
T1= 3nс
27
![Page 28: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/28.jpg)
Параллельный алгоритм
Вычислить для всех i =1,…,n : xi
Вычислить для всех i =1,…,n : i!
Вычислить для всех i =1,…,n : ai =
Вычислить сумму всех членов ai
28
![Page 29: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/29.jpg)
Для вычисления xi воспользуемся методом бинарного умножения
x
1 x2
2 x3 x4
3 x5 x6 x7 x8
4 x9 x10 x11 x12 x13 x14 x15 x16
xi
29
![Page 30: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/30.jpg)
Для вычисления 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
![Page 31: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/31.jpg)
Для вычисления 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
![Page 32: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/32.jpg)
Для вычисления 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
![Page 33: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/33.jpg)
Параллельный алгоритм
Вычислить все 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
![Page 34: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/34.jpg)
p=n
Ускорение и эффективность при p=n
21.5
1.5
34
![Page 35: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/35.jpg)
Определены понятия ускорения и эффективности параллельных алгоритмов
Представлен ряд способов организации взаимодействия последовательных процессов
Представлен алгоритм, обладающий низкой эффективностью, но высоким быстродействием
Заключение
35
![Page 36: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/36.jpg)
Литература…
Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002.
Грегори Р. Эндрюс - Основы многопоточного, параллельного и распределенного программирования. "Вильямс ", 2003
Роберт Седжвик - Фундаментальные алгоритмы на C. Части 1 - 5. Анализ. Структуры данных. Сортировка. Поиск. Алгоритмы на графах
Языки программирования. Редактор Ф.Женюи. Перевод с англ. В.П.Кузнецова. Под ред. В.М.Курочкина. М:."Мир", 1972 Э. Дейкстра. Взаимодействие последовательных процессов.
http://khpi-iip.mipk.kharkiv.edu/library/extent/dijkstra/ewd123/index.html Дональд Э. Кнут Искусство программирования
36
![Page 37: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/37.jpg)
Литература…
Учебные курсы Интернет Университета Информационных технологий Гергель В.П. Теория и практика параллельных вычислений. —
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
![Page 38: Московский государственный университет им. М.В.Ломоносова](https://reader036.vdocuments.site/reader036/viewer/2022062308/56812b97550346895d8fb916/html5/thumbnails/38.jpg)
Литература
Ресурсы Internet
http://parallel.ru http://top500.org http://supercomputers.ru
38