Similar presentations:
Параллельное программирование
1.
Парадигмы программирования(с примерами на языке R)
Параллельное программирование
Голубничий А.А.
[email protected]
@Golubnichij
2.
Структура занятия• области применения;
• подходы к разработке параллельных программ;
• множественные потоки команд/данных;
• технологии и подходы;
• ускорение алгоритмов (закон Амдала);
• языки параллельного программирования.
2
3.
Области применения• генетика;
• климатология;
• физика высоких энергий;
• астрономия;
• запросы массового обслуживания
(банковская система);
• и др.
3
4.
Основные понятияПараллельные
вычисления
–
способ
организации
компьютерных
вычислений,
при
котором
программы
разрабатываются,
как
набор
взаимодействующих
вычислительных процессов, работающих асинхронно и при этом
одновременно.
Параллельное
программирование
–
это
техника
программирования,
которая
использует
преимущества
многоядерных или многопроцессорных компьютеров и является
подмножеством более широкого понятия многопоточности
(multithreading).
4
5.
Подходы к параллельному программированию• Последовательное
программирование
с
дальнейшим
автоматическим распараллеливанием.
• Непосредственное формирование потоков параллельного
управления, с учетом особенностей архитектур параллельных
вычислительных систем или операционных систем.
• Описание параллелизма без использования явного управления
обеспечивается заданием только информационных связей.
Предполагается, что программа будет выполняться на
вычислительных системах с бесконечными ресурсами,
операторы будут запускаться немедленно по готовности их
исходных данных.
5
6.
Множественные потоки команд/данныхОдиночный поток данных
(Single Dаtа)
Множество потоков
данных (Multiple Dаtа)
Одиночный поток Множество потоков
команд
команд
(Single Instructiоn) (Multiple Instructiоn)
SISD (ОКОД)
MISD (МКОД)
SIMD (ОКМД)
MIMD (МКМД)
6
7.
Множественные потоки команд/данныхКласс Описание класса
SISD Исполнение одним процессором одного потока команд,
обрабатывающего данные, хранящиеся в одной памяти.
Классические последовательные машины, машины фоннеймановского типа.
SIMD Сохраняется один поток команд, включающий векторные
команды, что позволяет выполнять одну арифметическую
операцию сразу над многими данными – элементами вектора.
MISD Подразумевает наличие в архитектуре многих процессоров,
обрабатывающих один и тот же поток данных.
MIMD В вычислительной системе есть несколько устройств
обработки команд, объединенных в единый комплекс и
работающих каждое со своим потоком команд и данных. 7
8.
Технологии и подходыSSE
OpenMP
MPI
8
9.
SSE (Streaming SIMD Extensions)SSE (потоковое SIMD-расширение процессора) – это SIMD набор
инструкций, разработанный Intel и впервые представленный в
процессорах серии Pentium III как ответ на аналогичный набор
инструкций 3DNow! от AMD
Версия Возможности
1
Восемь 128-битных регистров для 4 чисел по 32
бит (с плавающей точкой)
2
Теперь 2 64-битных числа в регистре
3
13 инструкций
4.1
47 инструкций (ускорение видео)
4.2
54 инструкции (операции со строками)
9
10.
OpenMPOpenMP (Open Multi-Processing) –
открытый стандарт для
распараллеливания программ на языках C, C++ и Fortran. Дает
описание совокупности директив компилятора, библиотечных
процедур и переменных окружения, которые предназначены для
программирования
многопоточных
приложений
на
многопроцессорных системах с общей памятью.
10
11.
MPIMessage Passing Interface (MPI, интерфейс передачи сообщений)
– программный интерфейс (API) для передачи информации, который
позволяет обмениваться
сообщениями между
процессами,
выполняющими одну задачу.
Разработан Уильямом Гроуппом, Эвином Ласком и другими.
11
12.
Закон АмдалаЗакон
Амдала
(1967
год),
описывает
максимальный
теоретический выигрыш в производительности параллельного
решения по отношению к лучшему последовательному
решению.
где S – во сколько раз можно ускорить вычисления (ускорение);
p – количество процессоров (ядер),
a – доля последовательно вычисляемого кода
12
13.
Закон Амдала13
14.
Языки параллельного программированияAlice;
Chapel;
Cilk;
Concurrent ML;
Erlang; Fortress;
Global Arrays;
Intel Cilk Plus;
Linda; Occam;
Oz;
T++;
Unified Parallel C;
X10.
14
15.
Пример программы15