![Page 1: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/1.jpg)
Курносов Михаил Георгиевич
E-mail: [email protected]: www.mkurnosov.net
Курс «Высокопроизводительные вычислительные системы»Сибирский государственный университет телекоммуникаций и информатики (Новосибирск)Осенний семестр, 2015
Лекция 5Основы параллельного программирования(Parallel programming introduction)
![Page 2: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/2.jpg)
Параллельные вычисления (Parallel Computing)
Цели использования многопроцессорных вычислительных систем (ВС):
решение задачи за меньшее время на нескольких процессорах
решение задачи с большим объёмом входных данных –использование распределенной памяти нескольких вычислительных узлов
решение задачи с большей вероятностью получения корректного решения (дублирование вычислений – параллельный пересчет)
5 октября 2015 г. 2
![Page 3: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/3.jpg)
Архитектура
вычислительных систем
с распределенной памятью
5 октября 2015 г. 3
![Page 4: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/4.jpg)
Вычислительные системы с распределенной памятью
5 октября 2015 г. 4
CPU0
Коммуникационная сеть (Interconnect, Communication network)
Cache
Разделяемая память (Shared memory)
CPU1
Cache
CPU2
Cache
CPU3
Cache
CPU0
Cache
Разделяемая память (Shared memory)
CPU1
Cache
CPU2
Cache
CPU3
Cache
Вычислительная система с распределенной памятью (Distributed memory computer system) –совокупность вычислительных узлов, взаимодействие между которыми осуществляется через коммуникационную сеть (InfiniBand, Gigabit Ethernet, Cray Gemeni, Fujitsu Tofu, …)
Каждый узел имеет множество процессоров/ядер, взаимодействующих через разделяемую память (Shared memory)
Процессоры могут быть многоядерными, ядра могут поддерживать одновременную многопоточность (SMT)
http://www.top500.org
http://www.green500.org
http://www.graph500.org
http://top50.supercomputers.ru
![Page 5: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/5.jpg)
Вычислительные системы с распределенной памятью
5 октября 2015 г. 5
CPU0
Коммуникационная сеть (Interconnect, Communication network)
Cache
Разделяемая память (Shared memory)
CPU1
Cache
CPU2
Cache
CPU3
Cache
CPU0
Cache
Разделяемая память (Shared memory)
CPU1
Cache
CPU2
Cache
CPU3
Cache
Вычислительная система с распределенной памятью (Distributed memory computer system) –совокупность вычислительных узлов, взаимодействие между которыми осуществляется через коммуникационную сеть (InfiniBand, Gigabit Ethernet, Cray Gemeni, Fujitsu Tofu, …)
Каждый узел имеет множество процессоров/ядер, взаимодействующих через разделяемую память (Shared memory)
Процессоры могут быть многоядерными, ядра могут поддерживать одновременную многопоточность (SMT)
http://www.top500.org
http://www.green500.org
http://www.graph500.org
http://top50.supercomputers.ru
ILP ILP ILP ILP ILP ILP ILP ILP
TLP/PLP (Message Passing)
TLP/PLP TLP/PLP
![Page 6: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/6.jpg)
Вычислительные кластеры (Computer cluster)
Вычислительные кластеры строятся на базе свободно доступных компонентов
Вычислительные узлы: 2/4-процессорные узлы, 1 – 8 GiB оперативной памяти на ядро (поток)
Коммуникационная сеть (сервисная и для обмена сообщениями)
Подсистема хранения данных (дисковый массивы, параллельные и сетевые файловые системы)
Система бесперебойного электропитания
Система охлаждения
Программное обеспечение: GNU/Linux (NFS, NIS, DNS, …), MPI (MPICH2, Open MPI), TORQUE/SLURM
5 октября 2015 г. 6
Сеть InfiniBand (вычислительная сеть)
Общая память
Ядро
Процессор
Ядро Ядро
Процессор
Ядро
Общая память
Ядро
Процессор
Ядро Ядро
Процессор
Ядро
Общая память
Ядро
Процессор
Ядро Ядро
Процессор
Ядро
Общая память
Ядро
Процессор
Ядро Ядро
Процессор
Ядро
Compute node 1 Compute node 2 Compute node 3 Compute node 4
Общая память
Ядро
Процессор
Ядро Ядро
Процессор
Ядро
Frontend (login node)
Сеть Gigabit Ethernet (сервисная сеть: NFS, DNS, DHCP, ssh, …)
![Page 7: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/7.jpg)
Гибридные вычислительные узлы
5 октября 2015 г. 7
CPU1
Core1 Core2 Core3 Core4
GPU1
Cores
GPU Memory
Memory (DDR3)
CPU2
Core1 Core2 Core3 Core4
Memory (DDR3)
QPI
I/O Hub
QPI QPI
PCI Express
GPU2
Cores
GPU Memory
![Page 8: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/8.jpg)
Коммуникационные сети (Interconnect)
С фиксированной структурой (статической топологией) –графом связей вычислительных узлов
Каждый вычислительный узел имеет сетевой интерфейс (маршрутизатор) с несколькими портами, через который он напрямую соединён с другими узлами
С динамической структурой – на базе коммутаторов
Каждый вычислительный узел имеет сетевой интерфейсс несколькими портами
Порты интерфейсов подключены к коммутаторам, через которые происходит взаимодействие узлов
5 октября 2015 г. 8
![Page 9: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/9.jpg)
Сети с фиксированной структурой
Структура сети (топология) – это граф
узлы – машины (вычислительные узлы, computer nodes)
ребра – линии связи (links)
Показатели эффективности структур:
диаметр (максимальное из кратчайших расстояний)
средний диаметр сети
бисекционная пропускная способность (bisectional bandwidth)
Примеры структур
kD-тор (3D, 4D, 5D): Cray Titan (#2) 3D torus, IBM Sequoia 5D torus (#3), Fujitsu 6D torus (#4)
Гиперкуб
Решетка, кольцо, графы Кауца, циркулянтные структуры, …
5 октября 2015 г. 9
3D-тор
![Page 10: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/10.jpg)
Сети с динамической структурой
Вычислительные узлы связаны через активные устройства –сетевые коммутаторы (network switches)
Коммутатор имеет фиксированное число портов (24, 48, 96, 324)
Как объединить в сеть тысячи узлов?
Топология “толстого дерева” (fat tree)Charles E. Leiserson. Fat-trees: universal networks for hardware-efficient supercomputing //IEEE Transactions on Computers, Vol. 34, No. 10, 1985
Сетевые технологии
Gigabit Ethernet
10 Gigabit Ethernet
InfiniBand DDR/QDR/FDR
5 октября 2015 г. 10
Fat tree
![Page 11: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/11.jpg)
Показатели эффективности коммуникационных сетей
Пропускная способность (Bandwidth) – бит/сек. (10 – 54 Gbps – Giga bit per second)
Латентность (Latency) – сек. (10 us – 100 ns)
Бисекционная пропускная способность (Bisectional bandwidth)
5 октября 2015 г. 11
![Page 12: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/12.jpg)
Классификация архитектур ВС
Классификация Флинна (M. J. Flynn, 1966)
По организации памяти: с общей памятью (SMP/NUMA), с распределенной памятью
По типу поддерживаемых операндов: скалярные и векторные системы
По доступности компонентов, из которых строится система: проприетарные (заказные), на основе общедоступного аппаратного обеспечения (commodity computing, проект Beowulf)
…5 октября 2015 г. 12
Flynn's taxonomy
Single instruction Multiple instruction
Single data SISD MISD
Multiple data SIMD MIMD
![Page 13: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/13.jpg)
Классификация Флинна
5 октября 2015 г. 13
Современные ВС нельзя однозначно классифицировать по Флинну – современные системы мультиархитектурны (SIMD + MIMD)
Процессор – скалярные + векторные инструкции (SIMD)
Вычислительный узел –SMP/NUMA-система на базе многоядерных процессоров (MIMD) + графические процессоры(SIMD)
Совокупность нескольких вычислительных узлов – MIMD
![Page 14: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/14.jpg)
Рейтинги мощнейших ВС
1. www.top500.org – решение системы линейных алгебраических уравнений методом LU-факторизации (High-Performance Linpack, FLOPS – Floating-point Operations Per Seconds)
2. www.graph500.org – алгоритмы на графах (построение графа, обход в ширину, TEPS – Traversed Edges Per Second)
3. www.green500.org – главный критерий – энергоэффективност (объем потребляемой эленктроэнергии, kW)
4. http://top50.supercomputers.ru – рейтинг мощнейших вычислительных систем СНГ (тест High-Performance Linpack)
5. Как создать свой тест производительности?
5 октября 2015 г. 14
![Page 15: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/15.jpg)
www.top500.org (Июнь 2015)
5 октября 2015 г. 15
Среднее количество вычислительных ядер в системе: 50 464
Среднее количество ядер на сокет (процессор): 10 (4, 6, 8, 10, 12, 14, 16)
Среднее энергопотребление: 866 kW
Коммуникационная сеть: Infiniband (52%), 10G (16%), Custom (14%), Gigabit Ethernet (13%), Cray (3%), …
Процессоры: Intel (~ 86%), IBM Power, AMD Opteron, SPARC64, ShenWei, NEC
Ускорители (~ 17% систем): NVIDIA Kepler (6.6%), Intel Xeon Phi (6.2%), NVIDIA Fermi (3%), ATI Radeon (0.8%), PEZY-SC (0.6%)
Операционная система: GNU/Linux & Unix (~97%), IBM AIX (9 шт.), Cray Microsoft (1 шт.)
![Page 16: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/16.jpg)
www.top500.org (Июнь 2015)
5 октября 2015 г. 16
Среднее количество вычислительных ядер в системе: 50 464
Среднее количество ядер на сокет (процессор): 10 (4, 6, 8, 10, 12, 14, 16)
Среднее энергопотребление: 866 kW
Коммуникационная сеть: Infiniband (52%), 10G (16%), Custom (14%), Gigabit Ethernet (13%), Cray (3%), …
Процессоры: Intel (~ 86%), IBM Power, AMD Opteron, SPARC64, ShenWei, NEC
Ускорители (~ 17% систем): NVIDIA Kepler (6.6%), Intel Xeon Phi (6.2%), NVIDIA Fermi (3%), ATI Radeon (0.8%), PEZY-SC (0.6%)
Операционная система: GNU/Linux & Unix (~97%), IBM AIX (9 шт.), Cray Microsoft (1 шт.)
Новосибирская ГЭС – 460 МВт
Новосибирская ТЭЦ-5 – 1200 МВт
![Page 17: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/17.jpg)
Мультиархитектура современных ВС
17
Разработка эффективных параллельных программ для мультиархитектурных ВС требует владения стеком технологий
Internode communications:MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, Coarray Fortran, Global Arrays
Multithreading: OpenMP, Intel TBB/Cilk Plus, C11/C++11 Threads
GPU: NVIDA CUDA, OpenCL, OpenACC, OpenMP 4.0
Vectorization (SIMD): SSE/AVX, AltiVec
2 nodes Cray XK7
AMD Opteron Interlagos (16 cores)
![Page 18: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/18.jpg)
Мультиархитектура современных ВС
18
Разработка эффективных параллельных программ для мультиархитектурных ВС требует владения стеком технологий
Internode communications:MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, Coarray Fortran, Global Arrays
Multithreading: OpenMP, Intel TBB/Cilk Plus, C11/C++11 Threads
GPU: NVIDA CUDA, OpenCL, OpenACC, OpenMP 4.0
Vectorization (SIMD): SSE/AVX, AltiVec
2 nodes Cray XK7
AMD Opteron Interlagos (16 cores)
SSE/AVX
![Page 19: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/19.jpg)
Мультиархитектура современных ВС
19
Разработка эффективных параллельных программ для мультиархитектурных ВС требует владения стеком технологий
Internode communications:MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, Coarray Fortran, Global Arrays
Multithreading: OpenMP, Intel TBB/Cilk Plus, C11/C++11 Threads
GPU: NVIDA CUDA, OpenCL, OpenACC, OpenMP 4.0
Vectorization (SIMD): SSE/AVX, AltiVec
2 nodes Cray XK7
AMD Opteron Interlagos (16 cores)
SSE/AVXOpenMP, Intel TBB, Cilk, POSIX Threads
![Page 20: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/20.jpg)
Мультиархитектура современных ВС
20
Разработка эффективных параллельных программ для мультиархитектурных ВС требует владения стеком технологий
Internode communications:MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, Coarray Fortran, Global Arrays
Multithreading: OpenMP, Intel TBB/Cilk Plus, C11/C++11 Threads
GPU: NVIDA CUDA, OpenCL, OpenACC, OpenMP 4.0
Vectorization (SIMD): SSE/AVX, AltiVec
2 nodes Cray XK7
AMD Opteron Interlagos (16 cores)
SSE/AVXOpenMP, Intel TBB, Cilk, POSIX Threads
NVIDIA CUDA, OpenCL, OpenACC
![Page 21: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/21.jpg)
Мультиархитектура современных ВС
21
Разработка эффективных параллельных программ для мультиархитектурных ВС требует владения стеком технологий
Internode communications:MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, Coarray Fortran, Global Arrays
Multithreading: OpenMP, Intel TBB/Cilk Plus, C11/C++11 Threads
GPU: NVIDA CUDA, OpenCL, OpenACC, OpenMP 4.0
Vectorization (SIMD): SSE/AVX, AltiVec
2 nodes Cray XK7
AMD Opteron Interlagos (16 cores)
SSE/AVXOpenMP, Intel TBB, Cilk, POSIX Threads
NVIDIA CUDA, OpenCL, OpenACC
MPI, Cray Chapel, Shmem, Coarray Fortran, Unified Parallel C
![Page 22: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/22.jpg)
Многопроцессорные ВС с общей памятью (SMP, NUMA)
Плюсы
Привычная модель программирования (потоки, процессы)
Высокая скорость обмена данными между потоками/процессами
Минусы
Синхронизация при доступе к общим данным (критические секции)
Когерентность кэшей, ложное разделение данных
Относительно низкая масштабируемость(как правило, 4 – 16 процессоров на узле)
Трудоемкая организация эффективного использование памяти в NUMA-системах
5 октября 2015 г. 22
![Page 23: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/23.jpg)
Многопроцессорные ВС с распределенной памятью
Плюсы
Высокая масштабируемость (сотни, тысячи и миллионы процессорных ядер)
Меньше проблем с синхронизацией (у каждого узла/сервера своя память)
Декомпозиция на крупные подзадачи
Минусы
Необходимость использования передачи сообщений (message passing)
Высокие временные задержки и низкая пропускная способность(все взаимодействия по сети – Gigabit Ethernet, Infiniband)
Неоднородность, отказы узлов
5 октября 2015 г. 23
![Page 24: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/24.jpg)
Теоретические основы
параллельных вычислений
5 октября 2015 г. 24
![Page 25: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/25.jpg)
Параллельные вычисления (Parallel Computing)
Разработка параллельного алгоритма
Поиск параллелизма в известном последовательном алгоритме, его модификация или создание нового алгоритма
Декомпозиция задачи на подзадачи, которые могут выполняться параллельно
Анализ зависимостей между подзадачами
Параллельная версия самого эффективного последовательного алгоритма решения задачи необязательно будет самой эффективной параллельной реализацией
5 октября 2015 г. 25
![Page 26: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/26.jpg)
Параллельные вычисления (Parallel Computing)
Реализация параллельного алгоритма в виде параллельной программы
Распределение подзадач между процессорами (task mapping, load balancing)
Организация взаимодействия подзадач (message passing, shared data structures)
Учет архитектуры целевой вычислительной системы
Запуск, измерение и анализ показателей эффективности параллельной программы
Оптимизация программы
5 октября 2015 г. 26
![Page 27: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/27.jpg)
Показатели эффективности параллельных алгоритмов
5 октября 2015 г. 27
Коэффициент ускорения (Speedup)
Коэффициент эффективности (Efficiency)
Коэффициент накладных расходов
Показатель равномерности загруженности параллельных ветвей
(процессов, потоков)
![Page 28: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/28.jpg)
Коэффициент ускорения (Speedup)
5 октября 2015 г. 28
Введем обозначения:
𝑻(𝒏) – время выполнения последовательной программы (sequential program)
𝑻𝒑(𝒏) – время выполнения параллельной программы (parallel program)
на p процессорах
Коэффициент Sp(n) ускорения параллельной программ (Speedup):
𝑺𝒑 𝒏 =𝑻(𝒏)
𝑻𝒑(𝒏)
Коэффициент ускорения 𝑆𝑝 𝑛 показывает во сколько раз параллельная программа
выполняется на p процессорах быстрее последовательной программы при обработке одних и тех же входных данных размера n
Как правило
𝑆𝑝 𝑛 ≤ 𝑝
![Page 29: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/29.jpg)
Коэффициент ускорения (Speedup)
5 октября 2015 г. 29
Введем обозначения:
𝑻(𝒏) – время выполнения последовательной программы (sequential program)
𝑻𝒑(𝒏) – время выполнения параллельной программы (parallel program)
на p процессорах
Коэффициент Sp(n) ускорения параллельной программ (Speedup):
𝑺𝒑 𝒏 =𝑻(𝒏)
𝑻𝒑(𝒏)
Цель распараллеливания – достичь линейного ускорения на максимально большом числе процессоров
𝑺𝒑 𝒏 ≈ 𝒑 или 𝑺𝒑 𝒏 = 𝛀(𝒑) при 𝒑 → ∞
![Page 30: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/30.jpg)
Коэффициент ускорения (Speedup)
5 октября 2015 г. 30
Какое время брать за время выполнения последовательной программы?
o Время лучшего известного алгоритма (в смысле вычислительной сложности)?
o Время лучшего теоретически возможного алгоритма?
Что считать временем выполнения 𝑻𝒑 𝒏 параллельной программы?
o Среднее время выполнения потоков программы?
o Время выполнения потока, завершившего работу первым?
o Время выполнения потока, завершившего работу последним?
![Page 31: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/31.jpg)
Коэффициент ускорения (Speedup)
5 октября 2015 г. 31
Какое время брать за время выполнения последовательной программы?
o Время лучшего известного алгоритма или время алгоритма, который подвергается распараллеливанию
Что считать временем выполнения 𝑻𝒑 𝒏 параллельной программы?
o Время выполнения потока, завершившего работу последним
![Page 32: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/32.jpg)
Коэффициент ускорения (Speedup)
5 октября 2015 г. 32
Коэффициент относительного ускорения (Relative speedup) – отношения времени выполнения параллельной программы на k процессорах к времени её выполнения на p процессорах (k < p)
𝑺𝑹𝒆𝒍𝒂𝒕𝒊𝒗𝒆 𝒌, 𝒑, 𝒏 =𝑻𝒌(𝒏)
𝑻𝒑(𝒏)
Коэффициент эффективности (Efficiency) параллельной программы
𝑬𝒑 𝒏 =𝑺𝒑(𝒏)
𝒑=
𝑻(𝒏)
𝒑𝑻𝒑(𝒏)∈ [𝟎, 𝟏]
Коэффициент накладных расходов (Overhead)
𝜺 𝒑, 𝒏 =𝑻𝑺𝒚𝒏𝒄(𝒑, 𝒏)
𝑻𝑪𝒐𝒎𝒑(𝒑, 𝒏)=𝑻𝑻𝒐𝒕𝒂𝒍 𝒑, 𝒏 − 𝑻𝑪𝒐𝒎𝒑(𝒑, 𝒏)
𝑻𝑪𝒐𝒎𝒑(𝒑, 𝒏)
𝑻𝑺𝒚𝒏𝒄(𝒑, 𝒏) – время создания, синхронизации и взаимодействия p потоков
𝑻𝑪𝒐𝒎𝒑(𝒑, 𝒏) – время вычислений в каждом из p потоков
![Page 33: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/33.jpg)
Коэффициент ускорения (Speedup)
5 октября 2015 г. 33
0
5
10
15
20
25
30
35
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32
S
p
Linear (ideal)
N = 60 * 2^20
N = 40 * 2^20
N = 20 * 2^20
Ускорение программы может расти с увеличением размера входных данных
Время вычислений превосходит накладные расходы на взаимодействия потоков (управление потоками, синхронизацию, обмен сообщениями, …)
Зависимость коэффициента ускорения Sпараллельного алгоритма X от количества p процессоров
![Page 34: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/34.jpg)
Коэффициент ускорения (Speedup)
5 октября 2015 г. 34
0
5
10
15
20
25
30
35
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32
S
p
Linear (ideal)
N = 60 * 2^20
N = 40 * 2^20
N = 20 * 2^20
Ускорение программы может расти с увеличением размера входных данных
Время вычислений превосходит накладные расходы на взаимодействия потоков (управление потоками, синхронизацию, обмен сообщениями, …)
Зависимость коэффициента ускорения Sпараллельного алгоритма X от количества p процессоров
Линейное ускорение
Sp(n) = 4/5 * p = Ω(p)
Линейное ускорение
Sp(n) = 1/5 * p = Ω(p)
![Page 35: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/35.jpg)
Коэффициент ускорения (Speedup)
5 октября 2015 г. 35
Параллельная программа (алгоритм) коэффициент ускорения, которой линейной растет с увеличением p называется линейно масштабируемой или просто масштабируемой (scalable)
Масштабируемая параллельная программа допускает эффективную реализацию на различном числе процессоров
![Page 36: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/36.jpg)
Коэффициент ускорения (Speedup)
5 октября 2015 г. 36
0
5
10
15
20
25
30
35
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32
S
p
Spee
du
p
Processors
Linear (ideal)
Зависимость коэффициента ускорения Sпараллельных алгоритмов Y и Z от количества p процессоров
Логарифмическое ускорение
Sp(n) = log2p = Ω(logp)
𝑺𝒑 𝒏 = 𝒑 = Ω( 𝒑)
![Page 37: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/37.jpg)
Суперлинейное ускорение (Superlinear speedup)
5 октября 2015 г. 37
Параллельная программа может характеризоваться суперлинейным ускорением (Superlinear speedup) – коэффициент ускорения Sp(n) принимает значение больше p
𝑺𝒑 𝒏 > 𝒑
Причина: иерархическая организация памяти: Cache – RAM – Local disk (HDD/SSD) – Network storage
Последовательная программ выполняется на одном процессоре и обрабатывает данные размера n
Параллельная программа имеет p потоков на p процессорах, каждый поток работает со своей частью данных, большая часть которых может попасть в кеш-память, в результате в каждом потоке сокращается время доступа к данным
Тот же самый эффект можно наблюдать имя два уровня иерархической памяти: диск – память
![Page 38: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/38.jpg)
Суперлинейное ускорение (Superlinear speedup)
5 октября 2015 г. 38
http://phycomp.technion.ac.il/~pavelba/Comp_Phys/Project/Project.html
Parallel Molecular Dynamic Simulation MPI, Spatial decomposition; Cluster nodes: 2 x AMD Opteron Dual Core; InfiniBand network
Superlinear speedup(relative)
𝑺𝟖 =𝑻𝟒𝑻𝟖
= 𝟐. 𝟑𝟐
![Page 39: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/39.jpg)
Равномерность распределения вычислений
5 октября 2015 г. 39
По какому показателю оценивать равномерность времени выполнения потоков/процессов параллельной программы?
Известно время выполнения потоков t0, t1, …, tp-1
Коэффициент V вариации
𝑽 =𝝈[𝒕𝒊]
𝝁[𝒕𝒊]
Отношение min/max
𝑴 =𝐦𝐢𝐧{𝒕𝒊}
𝐦𝐚𝐱{𝒕𝒊}
Jain’s fairness index
𝒇 =σ𝒊=𝟎𝒑−𝟏
𝒕𝒊𝟐
𝒏 σ𝒊=𝟎𝒑−𝟏
𝒕𝒊𝟐∈ [𝟎, 𝟏]
![Page 40: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/40.jpg)
“Последовательные” части в программах
5 октября 2015 г. 40
Инициализация и завершение работы
Чтение входных данных и запись
Инициализация данных
Синхронизация, критические секции
Пул потоков обрабатывает независимые задания
Извлечение заданий из очереди
Обработка результатов
Запись результатов в общую структуру данных
Слияние результатов из локальных структур данных
![Page 41: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/41.jpg)
Закон Дж. Амдала (Amdahl’s law)
5 октября 2015 г. 41
Пусть имеется последовательная программа c временем выполнения T(n)
Обозначим:
𝒓 ∈ [𝟎, 𝟏] – часть программы, которая может быть распараллелена (perfectly parallelized)
𝒔 = 𝟏 − 𝒓 – часть программы, которая не может быть распараллелена (purely sequential)
Время выполнения параллельной программы на p процессорах
(время каждого потока) складывается из последовательной части s и параллельной r:
𝑻𝒑 𝒏 = 𝑻 𝒏 𝒔 +𝑻(𝒏)
𝒑𝒓
Вычислим значение коэффициент ускорения (по определению)
𝑺𝒑 𝒏 =𝑻(𝒏)
𝑻𝒑 𝒏=
𝑻(𝒏)
𝑻 𝒏 𝒔 +𝑻(𝒏)𝒑
𝒓=
𝟏
𝒔 +𝒓𝒑
=𝟏
(𝟏 − 𝒓) +𝒓𝒑
Полученная формула по значениям r и s позволяет оценить максимальное ускорение
s
r
![Page 42: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/42.jpg)
Закон Дж. Амдала (Amdahl’s law)
5 октября 2015 г. 42
Пусть имеется последовательная программа c временем выполнения T(n)
Обозначим:
𝒓 ∈ [𝟎, 𝟏] – часть программы, которая может быть распараллелена (perfectly parallelized)
𝒔 = 𝟏 − 𝒓 – часть программы, которая не может быть распараллелена (purely sequential)
Закон Дж. Амдала (Gene Amdahl, 1967) [1]:
Максимальное ускорение Sp программы на p процессорах равняется
𝑺𝒑 =𝟏
𝟏 − 𝒓 +𝒓𝒑
𝑺∞ = lim𝑝→∞
𝑆𝑝 = lim𝑝→∞
1
1 − 𝑟 +𝑟𝑝
=1
1 − 𝑟=𝟏
𝒔
Amdahl Gene. Validity of the Single Processor Approach to Achieving Large-Scale Computing Capabilities // AFIPS Conference Proceedings, 1967, pp. 483-485, http://www-inst.eecs.berkeley.edu/~n252/paper/Amdahl.pdf
s
r
![Page 43: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/43.jpg)
Закон Дж. Амдала (Amdahl’s law)
5 октября 2015 г. 43
Зависимость коэффициента Sp ускоренияпараллельной программы от количества p процессоров
0
2
4
6
8
10
12
14
16
18
20
2 4 8
16
32
64
12
8
25
6
51
2
10
24
20
48
40
96
81
92
16
38
4
32
76
8
65
53
6
13
10
72
26
21
44
52
42
88
10
48
576
r = 95%
r = 75%
r = 50%
Имеет ли смысл создавать системы с количеством процессоров > 1024?
Sp
p
![Page 44: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/44.jpg)
Пример
5 октября 2015 г. 44
Пусть для определенности, цикл do завершается после k итераций
Цикл for можно эффективно распараллелить
𝑇𝑠𝑒𝑞 𝑛 = 𝒏 + 𝑘 + 𝑘𝑛
𝑇𝑝𝑎𝑟 𝑛 = 𝒏 + 𝑘 + 𝑘𝑛/𝑝
𝑠 =𝑛+𝑘
𝑛+𝑘+𝑘𝑛, 𝑟 =
𝑘𝑛
𝑛+𝑘+𝑘𝑛
// Последовательная часть: инициализацияx = (int *)calloc(n, sizeof(int));
// Распараллеливаемая частьdo {
for (i = 0; i < n; i++) { x[i] = f(i); // O(1)
}
// Проверка сходимости done = ... ; // O(1)
} while (!done)
Тогда доля последовательного кода при 𝑛 → ∞:
lim𝑛→∞
𝑠 = lim𝑛→∞
𝑛 + 𝑘
𝑛 + 𝑘 + 𝑘𝑛=
1
1 + 𝑘
Ускорение 𝑺∞ = 𝟏/𝒔 = 𝟏 + 𝒌
![Page 45: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/45.jpg)
Пример
5 октября 2015 г. 45
Пусть для определенности, цикл do завершается после k итераций
Цикл for можно эффективно распараллелить
𝑇𝑠𝑒𝑞 𝑛 = 𝟏 + 𝑘 + 𝑘𝑛
𝑇𝑝𝑎𝑟 𝑛 = 𝟏 + 𝑘 + 𝑘𝑛/𝑝
𝑠 =1+𝑘
1+𝑘+𝑘𝑛, 𝑟 =
𝑘𝑛
1+𝑘+𝑘𝑛
// Последовательная часть: инициализацияx = (int *)malloc(n * sizeof(int));
// Распараллеливаемая частьdo {
for (i = 0; i < n; i++) { x[i] = f(i); // O(1)
}
// Проверка сходимости done = ... ; // O(1)
} while (!done)
Ускорение 𝑺 → 𝒑, при 𝒏 → ∞
![Page 46: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/46.jpg)
Допущения закона Дж. Амдала (Amdahl’s law)
5 октября 2015 г. 46
Последовательный алгоритм является наиболее оптимальным способом решения задачи
Возможны ситуации когда параллельная программа (алгоритм) эффективнее решает задачу (может эффективнее использовать кеш-память, конвейер, SIMD-инструкции, …)
Время выполнения параллельной программы оценивается через время выполнения последовательной, однако потоки параллельной программы могут выполнятся эффективнее
𝑻𝒑 𝒏 = 𝑻 𝒏 𝒔 +𝑻(𝒏)
𝒑𝒓, на практике возможна ситуация
𝑻(𝒏)
𝒑> 𝑻𝒑 𝒏
Ускорение Sp(n) оценивается для фиксированного размера n данныхпри любых значениях p
В реальности при увеличении числа используемых процессоров размер n входных данных также увеличивают, так как может быть доступно больше памяти
![Page 47: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/47.jpg)
Закон Дж. Амдала (Amdahl’s law)
5 октября 2015 г. 47
На что потратить ресурсы – на увеличение доли r параллельной части в программе или увеличение числа процессоров, на которых запускается программа?
0
10
20
30
40
50
60
70
80
90
2 4 8 16 32
r = 30%
r = 60%
r = 90%
p
Зависимость времени Tp(n) выполнения параллельной программы от количества p процессоров и доли r распараллеленного кода (время в % от времени T1(n))
Tp(n), %
![Page 48: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/48.jpg)
Закон Дж. Амдала (Amdahl’s law)
5 октября 2015 г. 48
На что потратить ресурсы – на увеличение доли r параллельной части в программе или увеличение числа процессоров, на которых запускается программа?
0
10
20
30
40
50
60
70
80
90
2 4 8 16 32
r = 30%
r = 60%
r = 90%
p
Зависимость времени Tp(n) выполнения параллельной программы от количества p процессоров и доли r распараллеленного кода (время в % от времени T1(n))
Tp(n), %
Увеличили число процессоров с 2-х до 4-х (программу не меняли)
Время выполнения сократилось с 85% до 77,5%
![Page 49: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/49.jpg)
Увеличили число процессоров с 2-х до 4-х (программу не меняли)
Время выполнения сократилось с 85% до 77,5%
Закон Дж. Амдала (Amdahl’s law)
5 октября 2015 г. 49
На что потратить ресурсы – на увеличение доли r параллельной части в программе или увеличение числа процессоров, на которых запускается программа?
0
10
20
30
40
50
60
70
80
90
2 4 8 16 32
r = 30%
r = 60%
r = 90%
p
Зависимость времени Tp(n) выполнения параллельной программы от количества p процессоров и доли r распараллеленного кода (время в % от времени T1(n))
Tp(n), %
Увеличим в 2 раза долю параллельного кода
Время выполнения сократилось с 85% до 70%
![Page 50: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/50.jpg)
Закон Густафсона-Барсиса
5 октября 2015 г. 50
Пусть имеется последовательная программа c временем выполнения T(n)
Обозначим 𝒔 ∈ [𝟎, 𝟏] – часть параллельной программы, которая выполняется последовательно (purely sequential)
Закон Густафсона-Барсиса (Gustafson–Barsis' law) [1]:
Масштабируемое ускорение Sp программы на p процессорах равняется
𝑺𝒑 = 𝒑 − 𝒔(𝒑 − 𝟏)
Обоснование: пусть a – время последовательной части, b – время параллельной части
𝑻𝒑 𝒏 = 𝒂 + 𝒃, 𝑻 𝒏 = 𝒂 + 𝒑𝒃
𝒔 = 𝒂/(𝒂 + 𝒃), 𝑺𝒑 𝒏 = 𝒔 + 𝒑 𝟏 − 𝒔 = 𝒑 − 𝒔(𝒑 − 𝟏)
Время выполнения последовательной программы выражается через время выполнения параллельной
Reevaluating Amdahl's Law, John L. Gustafson, Communications of the ACM 31(5), 1988. pp. 532-533 // http://www.scl.ameslab.gov/Publications/Gus/AmdahlsLaw/Amdahls.htmlЯ
![Page 51: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/51.jpg)
Принципы разработки
параллельных алгоритмов
5 октября 2015 г. 51
![Page 52: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/52.jpg)
Методология PCAM
5 октября 2015 г. 52
Методология PCAM описывает общий подход к процессу разработки параллельного
алгоритма для решения заданной задачи
PCAM = Partitioning, Communication, Agglomeration, Mapping
Foster I. Designing and Building Parallel Programs: Concepts and Tools for Software
Engineering. Reading, MA: Addison-Wesley, 1995 // http://www.mcs.anl.gov/~itf/dbpp/
![Page 53: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/53.jpg)
Методология PCAM
5 октября 2015 г. 53
Декомпозиция (Partition) вычислений и данных на параллельные подзадачи (архитектура ВС игнорируется)
Анализ зависимостей и разработка алгоритма взаимодействия (Communicate) параллельных подзадач
Выбор целевой вычислительной системы (класса)
Масштабирование подзадач (Agglomerate) с учетом архитектуры выбранной ВС
Распределение подзадач (Map) между процессорами (статическое или динамическое)
![Page 54: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/54.jpg)
Декомпозиция на подзадачи
5 октября 2015 г. 54
Выявление возможностей для параллельного выполнения
Разбиение задачи на подзадачи минимального размера –fine-grained decomposition (мелокзернистая декомпозиция)
Виды декомпозиции
По данным (Domain decomposition) – распределение данных по подзадачам
Функциональная декомпозиция (Functional decomposition) –распределение вычислений по подзадачам
Необходимо избегать дублирования вычислений и данных
![Page 55: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/55.jpg)
Функциональная декомпозиция
5 октября 2015 г. 55
function fib(int n)
if n < 2 then
return n
x = fork task fib(n - 1)
y = fork task fib(n - 2)
join threadX
join threadY
return x + y
end function
Параллельное вычисление n-ого члена последовательности Фибоначчи
Функциональная декомпозиция: каждый рекурсивный вызов – это отдельная подзадача
fib(1) fib(0)
fib(2)
fib(3)
fib(1) fib(1) fib(0)
fib(2)
fib(4)
Вычисления дублируются!
![Page 56: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/56.jpg)
Выбор структуры алгоритма
5 октября 2015 г. 56
Существуют типовые структуры (паттерны) параллельных алгоритмов
Mattson T., Sanders B., Massingill B. Patterns for Parallel Programming. –Addison-Wesley, 2004
Krste Asanovic, Ras Bodik, Bryan Christopher et. al. The Landscape of Parallel Computing Research: A View from Berkeley // http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf
Dwarf Mine // http://view.eecs.berkeley.edu/wiki/Dwarfs
![Page 57: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/57.jpg)
Функциональная декомпозиция
5 октября 2015 г. 57
Параллелизм задач (Task parallelism)
Линейная декомпозиция параллельные задачи
Иерархическая декомпозиция (рекурсивный параллелизм)
“Разделяй и властвуй”(Divide and Conquer)
![Page 58: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/58.jpg)
Параллелизм задач (Task parallelism)
5 октября 2015 г. 58
Многовариантный счет, методы Монте-Карло, рендеринг графических сцен
Большое количество параллельных подзадач, между задачами нет зависимостей по данным (embarrassingly parallel)
Молекулярная динамика (система из n взаимодействующих атомов)
Параллельное вычисление сил, действующих на атом
Метод «ветвей и границ» (branch and bound)
Обход и разбиение множества решений в соответствии с правилами отсева и ветвления
Динамическое порождение заданий
![Page 59: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/59.jpg)
Рекурсивный параллелизм (разделяй и властвуй)
5 октября 2015 г. 59
Parallel Merge Sort
Parallel Quick Sort
![Page 60: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/60.jpg)
Рекурсивный параллелизм (разделяй и властвуй)
5 октября 2015 г. 60
Степень параллелизма изменяется в ходе выполнения алгоритма
Операции Split и Merge могут стать узким местом (выполняются последовательно, см. закон Амдала)
Задания порождаются динамически (балансировка загрузки потоков)
Очень большое количество заданий может привести к значительным накладным расходам
![Page 61: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/61.jpg)
Геометрическая декомпозиция (Domain decomposition)
5 октября 2015 г. 61
Данные задачи разбиваются на области (желательно равного размера)
С каждой областью данных ассоциируются алгоритм её обработки
Вычисления локализованы внутри области?
Да: независимые подзадачи
Нет: требуется разделение данных между областями
![Page 62: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/62.jpg)
Геометрическая декомпозиция (Domain decomposition)
5 октября 2015 г. 62
Декомпозиция структуры данных на области
Размер подзадач обычно подбирается эмпирически
Форма области влияет на накладные расходы (отношение объема к площади поверхности)
Дублирование соседних точек
Реализация обмена данными
Перед операцией обновления
Параллельно с операцией обновления
![Page 63: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/63.jpg)
Геометрическая декомпозиция (Domain decomposition)
5 октября 2015 г. 63
Декомпозиция структуры данных на области
Размер подзадач обычно подбирается эмпирически
Форма области влияет на накладные расходы (отношение объема к площади поверхности)
Дублирование соседних точек
Реализация обмена данными
Перед операцией обновления
Параллельно с операцией обновления
![Page 64: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/64.jpg)
Рекурсивная декомпозиция
5 октября 2015 г. 64
Алгоритм работает с рекурсивной структурой данных (список, дерево, граф)
Часто кажется, что единственный способ решения – последовательный обход структуры
Однако иногда возможно перестроить алгоритм так, что операции над отдельными элементами можно выполнять одновременно
Vivek Sarkar. Parallel Graph Algorithms // http://www.cs.rice.edu/~vs3/comp422/lecture-notes/comp422-lec24-s08-v2.pdf
![Page 65: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/65.jpg)
Конвейерная обработка (Pipeline)
5 октября 2015 г. 65
Вычисления производятся над набором элементов данных, каждый из которых проходит несколько стадий обработки – этапы/блоки конвейера
Регулярный, односторонний, стабильный поток данных
Подзадачи – применение операции "стадия N" к каждому элементу данных
Примеры
Конвейерная обработка команд процессором
Обработка сигналов, фильтры, графика
Load Image Scale Image Filter Image Save Image
![Page 66: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/66.jpg)
Конвейерная обработка (Pipeline)
5 октября 2015 г. 66
Параллелизм ограничен числом стадий
В идеале времена работы каждой стадии должны быть одинаковыми
Самая медленная стадия становится узким местом
Комбинирование и декомпозиция стадий
Распараллеливание медленной стадии
Времена заполнения и опустошения конвейера
Load Image Scale Image Filter Image Save Image
![Page 67: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/67.jpg)
Координация на основе событий
5 октября 2015 г. 67
Декомпозиция на слабосвязанные компоненты, взаимодействующие нерегулярным образом
Двусторонние потоки данных
Нерегулярные, непредсказуемые взаимодействия
Высокий риск возникновения взаимной блокировки
Примеры
Моделирование с дискретными событиями
Координация между заданиями в других шаблонах
Распределенные системы
Граф взаимодействий подзадач может быть недетерминированным
![Page 68: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/68.jpg)
Взаимодействия между подзадачами
5 октября 2015 г. 68
Локальные и глобальные
Структурированные и неструктурированные
Статические и динамические
Синхронные и асинхронные
![Page 69: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/69.jpg)
Взаимодействия между подзадачами
5 октября 2015 г. 69
Локальные взаимодействия
Коллективные (глобальные) операцииReduction - сборка
Коллективные операцииAll-to-all
![Page 70: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/70.jpg)
Heat 2D (serial code)
5 октября 2015 г. 70
[*] Blaise Barney. Introduction to Parallel Computing (LLNL)
Уравнение теплопроводности описывает изменение температуры в заданной области с течением времени
Приближенное решение можно найти методом конечных разностей
Область покрывается сеткой
Производные аппроксимируются конечными разностями
Известна температура на границе области в начальный момент времени
![Page 71: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/71.jpg)
Heat 2D (serial code)
5 октября 2015 г. 71
[*] Blaise Barney. Introduction to Parallel Computing (LLNL)
do iy = 2, ny - 1
do ix = 2, nx - 1
u2(ix, iy) = u1(ix, iy) +
cx * (u1(ix + 1, iy) +
u1(ix - 1, iy) – 2.0 * u1(ix, iy)) +
cy * (u1(ix, iy + 1) +
u1(ix, iy - 1) – 2.0 * u1(ix, iy))
end do
end do
Температура хранится в двумерном массиве – расчетная область
![Page 72: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/72.jpg)
Heat 2D (serial code)
5 октября 2015 г. 72
[*] Blaise Barney. Introduction to Parallel Computing (LLNL)
for t = 1 to nsteps1. Update time2. Send neighbors my border3. Receive from neighbors4. Update my cells
end for
Каждый процесс будет обрабатывать свою часть области – 1D domain decomposition
Расчетная область разбита на вертикальные полосы –
массив распределен
![Page 73: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/73.jpg)
Heat 2D (serial code)
5 октября 2015 г. 73
[*] Blaise Barney. Introduction to Parallel Computing (LLNL)
for t = 1 to nsteps1. Update time2. Send neighbors my border3. Receive from neighbors4. Update my cells
end for
Каждый процесс будет обрабатывать свою часть области – 2D domain decomposition
Расчетная область разбита на прямоугольные области (2D)
Сколько надо выполнить обменов на каждом шаге?
![Page 74: Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Parallel programming patterns)](https://reader030.vdocuments.pub/reader030/viewer/2022020203/587ecd851a28abf37b8b75bd/html5/thumbnails/74.jpg)
Литература
5 октября 2015 г. 74
Эндрюс Г. Основы многопоточного, параллельного и распределенного программирования. – М.: Вильямс, 2003.
Foster I. Designing and Building Parallel Programs: Concepts and Tools for Software Engineering – http://www.mcs.anl.gov/~itf/dbpp/
Herb Sutter. Welcome to the Jungle – http://herbsutter.com/welcome-to-the-jungle/