SlideShare a Scribd company logo
1 of 74
Download to read offline
КурносовМихаил Георгиевич 
E-mail: mkurnosov@gmail.com 
WWW: www.mkurnosov.net 
Курс “Высокопроизводительные вычислительные системы” 
Сибирский государственный университет телекоммуникаций и информатики (Новосибирск) 
Осенний семестр, 2014 
Лекция 5Основы параллельного программирования(Parallel programming introduction)
Параллельные вычисления (Parallel Computing) 
Цели использования многопроцессорных вычислительных систем (ВС): 
решение задачи за меньшее время на нескольких процессорах 
решение задачи с большим объёмом входных данных – использование распределенной памяти нескольких вычислительных узлов 
решение задачи с большей вероятностью получения корректного решения (дублирование вычислений –параллельный пересчет) 
6 октября 2014 г. 2
Архитектура вычислительных систем с распределенной памятью 
6 октября 2014 г. 3
Вычислительные системы с распределенной памятью 
6 октября 2014 г. 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
Вычислительные системы с распределенной памятью 
6 октября 2014 г. 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
Вычислительные кластеры (Computer cluster) 
Вычислительные кластеры строятся на базе свободно доступных компонентов 
Вычислительные узлы: 2/4-процессорные узлы, 1 –8 GiBоперативной памяти на ядро (поток) 
Коммуникационная сеть (сервисная и для обмена сообщениями) 
Подсистема хранения данных (дисковый массивы, параллельные и сетевые файловые системы) 
Система бесперебойного электропитания 
Система охлаждения 
Программное обеспечение: GNU/Linux (NFS, NIS, DNS, …), MPI (MPICH2, Open MPI), TORQUE/SLURM 
6 октября 2014 г. 6 
Сеть InfiniBand (вычислительная сеть) Общая памятьЯдроПроцессорЯдроЯдроПроцессорЯдроОбщая памятьЯдроПроцессорЯдроЯдроПроцессорЯдроОбщая памятьЯдроПроцессорЯдроЯдроПроцессорЯдроОбщая памятьЯдроПроцессорЯдроЯдроПроцессорЯдроCompute node 1Compute node 2Compute node 3Compute node 4Общая памятьЯдроПроцессорЯдроЯдроПроцессорЯдроFrontend (login node) Сеть Gigabit Ethernet (сервисная сеть: NFS, DNS, DHCP, ssh, …)
Гибридные вычислительные узлы 
6 октября 2014 г. 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 Gen. 2 
GPU2 
Cores 
GPU Memory
Коммуникационные сети (Interconnect) 
С фиксированной структурой (статической топологией)– графом связей вычислительных узлов 
Каждый вычислительный узел имеет сетевой интерфейс (маршрутизатор) с несколькими портами, через который он напрямую соединён с другими узлами 
С динамической структурой –на базе коммутаторов 
Каждый вычислительный узел имеет сетевой интерфейсс несколькими портами 
Порты интерфейсов подключены к коммутаторам, через которые происходит взаимодействие узлов 
6 октября 2014 г. 8
Сети с фиксированной структурой 
Структура сети (топология)–это граф 
узлы –машины(вычислительные узлы, computer nodes) 
ребра –линии связи(links) 
Показатели эффективности структур: 
диаметр (максимальное из кратчайших расстояний) 
средний диаметр сети 
бисекционнаяпропускная способность (bisectional bandwidth) 
Примеры структур 
kD-тор (3D, 4D, 5D): Cray Titan (#2) 3D torus, IBM Sequoia 5D torus (#3), Fujitsu 6D torus (#4) 
Гиперкуб 
Решетка, кольцо, графы Кауца, циркулянтныеструктуры, … 
6 октября 2014 г. 9 
3D-тор
Сети с динамической структурой 
Вычислительные узлы связаны через активные устройства – сетевые коммутаторы (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 
InfiniBandDDR/QDR/FDR 
6 октября 2014 г. 10 
Fat tree
Показатели эффективности коммуникационных сетей 
Пропускная способность (Bandwidth) –бит/сек. (10 –54 Gbps–Giga bit per second) 
Латентность (Latency) –сек.(10 us –100 ns) 
Бисекционнаяпропускная способность (Bisectional bandwidth) 
6 октября 2014 г. 11
Классификация архитектур ВС 
Классификация Флинна(M. J. Flynn, 1966) 
По организации памяти:с общей памятью (SMP/NUMA), с распределенной памятью 
По типу поддерживаемых операндов: скалярные и векторные системы 
По доступности компонентов, из которых строится система: проприетарные(заказные), на основе общедоступного аппаратного обеспечения (commoditycomputing, проект Beowulf) 
… 
6 октября 2014 г. 12 
Flynn's taxonomy 
Single instruction 
Multiple instruction 
Single data 
SISD 
MISD 
Multiple data 
SIMD 
MIMD
Классификация Флинна 
6 октября 2014 г. 13 
Современные ВС нельзя однозначно классифицировать по Флинну–современные системы мультиархитектурны(SIMD + MIMD) 
Процессор–скалярные + векторные инструкции(SIMD) 
Вычислительный узел – SMP/NUMA-система на базе многоядерных процессоров(MIMD)+ графические процессоры(SIMD) 
Совокупность нескольких вычислительных узлов –MIMD
Рейтинги мощнейших ВС 
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.Как создать свой тест производительности? 
6 октября 2014 г. 14
www.top500.org (Июнь 2014) 
6 октября 2014 г. 15 
Среднее количество вычислительных ядер в системе: 43299 
Среднее количество ядер на сокет (процессор): 8.8(4, 6, 8, 10, 12, 16) 
Среднее энергопотребление: 804kW 
Коммуникационная сеть: Infiniband(44%), Gigabit Ethernet (25%), 10 Gigabit Ethernet (15%), Custom (10%), Cray (3%), … 
Процессоры: Intel (> 80%), IBM Power, AMD Opteron, SPARC64, ShenWei, NEC 
Ускорители(12% систем): Intel Xeon Phi, NVIDIA GPU, ATI/AMD GPU 
Операционная система: GNU/Linux (96%), IBM AIX (11шт.), Microsoft (2 шт.)
www.top500.org (Июнь 2014) 
6 октября 2014 г. 16 
Среднее количество вычислительных ядер в системе: 43299 
Среднее количество ядер на сокет (процессор): 8.8(4, 6, 8, 10, 12, 16) 
Среднее энергопотребление: 804kW 
Коммуникационная сеть: Infiniband(44%), Gigabit Ethernet (25%), 10 Gigabit Ethernet (15%), Custom (10%), Cray (3%), … 
Процессоры: Intel (> 80%), IBM Power, AMD Opteron, SPARC64, ShenWei, NEC 
Ускорители(12% систем): Intel Xeon Phi, NVIDIA GPU, ATI/AMD GPU 
Операционная система: GNU/Linux (96%), IBM AIX (11шт.), Microsoft (2 шт.) 
Новосибирская ГЭС –460 МВт 
Новосибирская ТЭЦ-5 –1200 МВт
Мультиархитектурасовременных ВС 
17 
Разработка эффективных параллельных программ для мультиархитектурныхВС требует владения стеком технологий 
Internode communications: MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, CoarrayFortran, Global Arrays 
Multithreading:OpenMP, Intel TBB/CilkPlus, C11/C++11 Threads 
GPU:NVIDA CUDA, OpenCL, OpenACC, OpenMP4.0 
Vectorization(SIMD): SSE/AVX, AltiVec 
2 nodes Cray XK7 
AMD Opteron Interlagos(16 cores)
Мультиархитектурасовременных ВС 
18 
Разработка эффективных параллельных программ для мультиархитектурныхВС требует владения стеком технологий 
Internode communications: MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, CoarrayFortran, Global Arrays 
Multithreading:OpenMP, Intel TBB/CilkPlus, C11/C++11 Threads 
GPU:NVIDA CUDA, OpenCL, OpenACC, OpenMP4.0 
Vectorization(SIMD): SSE/AVX, AltiVec 
2 nodes Cray XK7 
AMD Opteron Interlagos(16 cores) 
SSE/AVX
Мультиархитектурасовременных ВС 
19 
Разработка эффективных параллельных программ для мультиархитектурныхВС требует владения стеком технологий 
Internode communications: MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, CoarrayFortran, Global Arrays 
Multithreading:OpenMP, Intel TBB/CilkPlus, C11/C++11 Threads 
GPU:NVIDA CUDA, OpenCL, OpenACC, OpenMP4.0 
Vectorization(SIMD): SSE/AVX, AltiVec 
2 nodes Cray XK7 
AMD Opteron Interlagos(16 cores) 
SSE/AVX 
OpenMP, Intel TBB, Cilk, POSIX Threads
Мультиархитектурасовременных ВС 
20 
Разработка эффективных параллельных программ для мультиархитектурныхВС требует владения стеком технологий 
Internode communications: MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, CoarrayFortran, Global Arrays 
Multithreading:OpenMP, Intel TBB/CilkPlus, C11/C++11 Threads 
GPU:NVIDA CUDA, OpenCL, OpenACC, OpenMP4.0 
Vectorization(SIMD): SSE/AVX, AltiVec 
2 nodes Cray XK7 
AMD Opteron Interlagos(16 cores) 
SSE/AVX 
OpenMP, Intel TBB, Cilk, POSIX Threads 
NVIDIA CUDA, OpenCL, OpenACC
Мультиархитектурасовременных ВС 
21 
Разработка эффективных параллельных программ для мультиархитектурныхВС требует владения стеком технологий 
Internode communications: MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, CoarrayFortran, Global Arrays 
Multithreading:OpenMP, Intel TBB/CilkPlus, C11/C++11 Threads 
GPU:NVIDA CUDA, OpenCL, OpenACC, OpenMP4.0 
Vectorization(SIMD): SSE/AVX, AltiVec 
2 nodes Cray XK7 
AMD Opteron Interlagos(16 cores) 
SSE/AVX 
OpenMP, Intel TBB, Cilk, POSIX Threads 
NVIDIA CUDA, OpenCL, OpenACC 
MPI, Cray Chapel, Shmem, CoarrayFortran, Unified Parallel C
Многопроцессорные ВС с общей памятью (SMP, NUMA) 
Плюсы 
Привычная модель программирования (потоки, процессы) 
Высокая скорость обмена данными между потоками/процессами 
Минусы 
Синхронизация при доступе к общим данным (критические секции) 
Когерентность кэшей, ложное разделение данных 
Относительно низкая масштабируемость(как правило, 4 –16 процессоров на узле) 
Трудоемкая организация эффективного использование памяти в NUMA-системах 
6 октября 2014 г. 22
Многопроцессорные ВС с распределенной памятью 
Плюсы 
Высокая масштабируемость (сотни, тысячи и миллионы процессорных ядер) 
Меньше проблем с синхронизацией (у каждого узла/сервера своя память) 
Декомпозиция на крупные подзадачи 
Минусы 
Необходимость использования передачи сообщений (message passing) 
Высокие временные задержки и низкая пропускная способность(все взаимодействия по сети–Gigabit Ethernet, Infiniband) 
Неоднородность, отказы узлов 
6 октября 2014 г. 23
Теоретические основы параллельных вычислений 
6 октября 2014 г. 24
Параллельные вычисления (Parallel Computing) 
Разработка параллельного алгоритма 
Поиск параллелизма в известном последовательном алгоритме, его модификация или создание нового алгоритма 
Декомпозиция задачи на подзадачи, которые могут выполняться параллельно 
Анализ зависимостей между подзадачами 
Параллельная версия самого эффективного последовательного алгоритма решения задачи необязательно будет самой эффективной параллельной реализацией 
6 октября 2014 г. 25
Параллельные вычисления (Parallel Computing) 
Реализация параллельного алгоритма в виде параллельной программы 
Распределение подзадач между процессорами(task mapping, load balancing) 
Организация взаимодействия подзадач(message passing, shared data structures) 
Учет архитектуры целевой вычислительной системы 
Запуск, измерение и анализ показателей эффективностипараллельной программы 
Оптимизация программы 
6 октября 2014 г. 26
Показатели эффективности параллельных алгоритмов 
6 октября 2014 г. 27 
Коэффициент ускорения (Speedup) 
Коэффициент эффективности (Efficiency) 
Коэффициент накладных расходов 
Показатель равномерности загруженности параллельных ветвей (процессов, потоков)
Коэффициент ускорения (Speedup) 
6 октября 2014 г. 28 
Введем обозначения: 
푻(풏)–время выполнения последовательной программы(sequential program) 
푻풑(풏)–время выполнения параллельной программы(parallel program) на pпроцессорах 
Коэффициент Sp(n) ускорения параллельной программ (Speedup): 
푺풑풏= 푻(풏) 푻풑(풏) 
Коэффициент ускорения 푆푝푛показывает во сколько раз параллельная программа выполняется на pпроцессорах быстрее последовательной программы при обработке одних и тех же входных данных размера n 
Как правило 
푆푝푛≤푝
Коэффициент ускорения (Speedup) 
6 октября 2014 г. 29 
Введем обозначения: 
푻(풏)–время выполнения последовательной программы(sequential program) 
푻풑(풏)–время выполнения параллельной программы(parallel program) на pпроцессорах 
Коэффициент Sp(n) ускорения параллельной программ (Speedup): 
푺풑풏= 푻(풏) 푻풑(풏) 
Цель распараллеливания–достичь линейного ускорения на максимально большом числе процессоров 
푺풑풏≈풑или 푺풑풏=훀(풑)при풑→∞
Коэффициент ускорения (Speedup) 
6 октября 2014 г. 30 
Какое время брать за время выполнения последовательной программы? 
oВремя лучшего известного алгоритма (в смысле вычислительной сложности)? 
oВремя лучшего теоретически возможного алгоритма? 
Что считать временем выполнения 푻풑풏параллельной программы? 
oСреднее время выполнения потоковпрограммы? 
oВремя выполнения потока, завершившего работу первым? 
oВремя выполнения потока, завершившего работу последним?
Коэффициент ускорения (Speedup) 
6 октября 2014 г. 31 
Какое время брать за время выполнения последовательной программы? 
oВремя лучшего известного алгоритмаили время алгоритма, который подвергается распараллеливанию 
Что считать временем выполнения 푻풑풏параллельной программы? 
oВремя выполнения потока, завершившего работу последним
Коэффициент ускорения (Speedup) 
6 октября 2014 г. 32 
Коэффициент относительного ускорения (Relative speedup) –отношения времени выполнения параллельной программына kпроцессорах к времени её выполнения на pпроцессорах (k< p) 
푺푹풆풍풂풕풊풗풆풌,풑,풏= 푻풌(풏) 푻풑(풏) 
Коэффициент эффективности (Efficiency) параллельной программы 
푬풑풏= 푺풑(풏) 풑 = 푻(풏) 풑푻풑(풏) ∈[ퟎ,ퟏ] 
Коэффициент накладных расходов (Overhead) 
휺풑,풏= 푻푺풚풏풄(풑,풏) 푻푪풐풎풑(풑,풏) = 푻푻풐풕풂풍풑,풏−푻푪풐풎풑(풑,풏) 푻푪풐풎풑(풑,풏) 
푻푺풚풏풄(풑,풏)–время создания, синхронизации и взаимодействия pпотоков 
푻푪풐풎풑(풑,풏)–время вычисленийв каждом из pпотоков
Коэффициент ускорения (Speedup) 
6 октября 2014 г. 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 процессоров
Коэффициент ускорения (Speedup) 
6 октября 2014 г. 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)
Коэффициент ускорения (Speedup) 
6 октября 2014 г. 35 
Параллельная программа (алгоритм) коэффициент ускорения, которой линейной растет с увеличением pназывается линейно масштабируемой или просто масштабируемой(scalable) 
Масштабируемая параллельная программа допускает эффективную реализацию на различном числе процессоров
Коэффициент ускорения (Speedup) 
6 октября 2014 г. 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 
Speedup 
Processors 
Linear (ideal) 
Зависимость коэффициента ускорения S 
параллельных алгоритмов Y и Z от количества p процессоров 
Логарифмическое ускорение 
Sp(n) = log2p = Ω(logp) 
푺풑 풏 = 풑 = Ω( 풑)
Суперлинейноеускорение (Superlinearspeedup) 
6 октября 2014 г. 37 
Параллельная программа может характеризоватьсясуперлинейнымускорением (Superlinearspeedup)–коэффициент ускорения Sp(n) принимает значение больше p 
푺풑풏>풑 
Причина: иерархическая организация памяти: Cache –RAM –Local disk (HDD/SSD) –Network storage 
Последовательная программ выполняется на одном процессоре и обрабатывает данные размера n 
Параллельная программа имеет pпотоков на pпроцессорах, каждый поток работает со своей частью данных, большая часть которых может попасть в кеш-память, в результате в каждом потоке сокращается время доступа к данным 
Тот же самый эффект можно наблюдать имя два уровня иерархической памяти: диск –память
Суперлинейноеускорение (Superlinearspeedup) 
6 октября 2014 г. 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; InfiniBandnetwork 
Superlinearspeedup(relative) 
푺ퟖ= 푻ퟒ 푻ퟖ =ퟐ.ퟑퟐ
Равномерность распределения вычислений 
6 октября 2014 г. 39 
По какому показателю оценивать равномерность времени выполнения потоков/процессов параллельной программы? 
Известно время выполнения потоков t0, t1, …, tp-1 
Коэффициент Vвариации 
푽= 흈[풕풊] 흁[풕풊] 
Отношение min/max 
푴= 퐦퐢퐧{풕풊} 퐦퐚퐱{풕풊} 
Jain’s fairness index 
풇= 풊=ퟎ 풑−ퟏ풕풊 ퟐ 풏 풊=ퟎ 풑−ퟏ 풕풊 ퟐ∈[ퟎ,ퟏ]
“Последовательные”части в программах 
6 октября 2014 г. 40 
Инициализация и завершение работы 
Чтение входных данных и запись 
Инициализация данных 
Синхронизация, критические секции 
Пул потоков обрабатывает независимые задания 
Извлечение заданий из очереди 
Обработка результатов 
Запись результатов в общую структуру данных 
Слияние результатов из локальных структур данных
Закон Дж. Амдала (Amdahl’s law) 
6 октября 2014 г. 41 
Пусть имеется последовательная программаcвременем выполнения T(n) 
Обозначим: 
풓∈[ퟎ,ퟏ]–часть программы, которая может быть распараллелена (perfectly parallelized) 
풔=ퟏ−풓–часть программы, которая не может быть распараллелена (purely sequential) 
Время выполнения параллельной программы на pпроцессорах (время каждого потока)складывается из последовательной части sи параллельнойr: 
푻풑풏=푻풏풔+ 푻(풏) 풑 풓 
Вычислим значение коэффициент ускорения (по определению) 
푺풑풏= 푻(풏) 푻풑풏 = 푻(풏) 푻풏풔+ 푻(풏) 풑 풓 = ퟏ 풔+ 풓 풑 = ퟏ (ퟏ−풓)+ 풓 풑 
Полученная формула по значениям r и sпозволяет оценить максимальное ускорение 
s 
r
Закон Дж. Амдала (Amdahl’s law) 
6 октября 2014 г. 42 
Пусть имеется последовательная программаcвременем выполнения T(n) 
Обозначим: 
풓∈[ퟎ,ퟏ]–часть программы, которая может быть распараллелена (perfectly parallelized) 
풔=ퟏ−풓–часть программы, которая не может быть распараллелена (purely sequential) 
Закон Дж. Амдала (Gene Amdahl, 1967)[1]: 
Максимальное ускорение Spпрограммы на pпроцессорах равняется 
푺풑= ퟏ ퟏ−풓+ 풓 풑 
푺∞=lim 푝→∞ 푆푝=lim 푝→∞ 11−푟+ 푟 푝 = 11−푟 = ퟏ 풔 
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
Закон Дж. Амдала (Amdahl’s law) 
6 октября 2014 г. 43 
Зависимость коэффициента Sp ускорения 
параллельной программы от количества p процессоров 
0 
2 
4 
6 
8 
10 
12 
14 
16 
18 
20 
2 
4 
8 
16 
32 
64 
128 
256 
512 
1024 
2048 
4096 
8192 
16384 
32768 
65536 
131072 
262144 
524288 
1048576 
r = 95% 
r = 75% 
r = 50% 
Имеет ли смысл создавать системы с количеством процессоров > 1024? 
Sp 
p
Пример 
6 октября 2014 г. 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 푛→∞ 푛+푘 푛+푘+푘푛 = 11+푘 
Ускорение 푺∞=ퟏ/풔=ퟏ+풌
Пример 
6 октября 2014 г. 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) 
Ускорение푺→풑, при 풏→∞
Допущения закона Дж. Амдала (Amdahl’s law) 
6 октября 2014 г. 46 
Последовательный алгоритм является наиболее оптимальным способом решения задачи 
Возможны ситуации когда параллельная программа (алгоритм) эффективнее решает задачу (может эффективнее использовать кеш-память, конвейер, SIMD-инструкции, …) 
Время выполнения параллельной программы оценивается через время выполнения последовательной, однако потоки параллельной программы могут выполнятся эффективнее 
푻풑풏=푻풏풔+ 푻(풏) 풑 풓, на практике возможна ситуация 푻(풏) 풑 >푻풑풏 
Ускорение Sp(n) оценивается для фиксированного размера nданныхпри любых значениях p 
В реальности при увеличении числа используемых процессоров размер nвходных данных также увеличивают, так как может быть доступно больше памяти
Закон Дж. Амдала (Amdahl’s law) 
6 октября 2014 г. 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), %
Закон Дж. Амдала (Amdahl’s law) 
6 октября 2014 г. 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%
Увеличили число 
процессоров с 2-х до 4-х 
(программу не меняли) 
Время выполнения 
сократилось с 85% до 77,5% 
Закон Дж. Амдала (Amdahl’s law) 
6 октября 2014 г. 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%
Закон Густафсона-Барсиса 
6 октября 2014 г. 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Я
Принципы разработки параллельных алгоритмов 
6 октября 2014 г. 51
Методология PCAM 
6 октября 2014 г. 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/
Методология PCAM 
6 октября 2014 г. 53 
Декомпозиция(Partition) вычислений и данных на параллельные подзадачи (архитектура ВС игнорируется) 
Анализ зависимостей и разработка алгоритма взаимодействия(Communicate)параллельных подзадач 
Выбор целевой вычислительной системы (класса) 
Масштабирование подзадач (Agglomerate) с учетом архитектуры выбранной ВС 
Распределение подзадач(Map)между процессорами (статическое или динамическое)
Декомпозиция на подзадачи 
6 октября 2014 г. 54 
Выявление возможностей для параллельного выполнения 
Разбиение задачи на подзадачи минимального размера – fine-graineddecomposition(мелокзернистаядекомпозиция) 
Виды декомпозиции 
По данным (Domaindecomposition)–распределение данных по подзадачам 
Функциональная декомпозиция (Functionaldecomposition)– распределение вычислений по подзадачам 
Необходимо избегать дублирования вычислений и данных
Функциональная декомпозиция 
6 октября 2014 г. 55 
functionfib(intn) 
ifn < 2 then 
returnn 
x = forktask fib(n -1) 
y = forktask fib(n -2) 
jointhreadX 
join threadY 
returnx + y 
end function 
Параллельное вычисление n-ого члена последовательности Фибоначчи 
Функциональная декомпозиция: каждый рекурсивный вызов –это отдельная подзадача 
fib(1) 
fib(0) 
fib(2) 
fib(3) 
fib(1) 
fib(1) 
fib(0) 
fib(2) 
fib(4) 
Вычисления дублируются!
Выбор структуры алгоритма 
6 октября 2014 г. 56 
Существуют типовые структуры (паттерны) параллельных алгоритмов 
Mattson T., Sanders B., MassingillB. Patterns for Parallel Programming. – Addison-Wesley,2004 
KrsteAsanovic, RasBodik, Bryan Christopheret. 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
Функциональная декомпозиция 
6 октября 2014 г. 57 
Параллелизм задач (Task parallelism) 
Линейная декомпозиция параллельные задачи 
Иерархическая декомпозиция (рекурсивный параллелизм) 
“Разделяй и властвуй” (Divide andConquer)
Параллелизм задач (Task parallelism) 
6 октября 2014 г. 58 
Многовариантный счет, методы Монте-Карло, рендеринг графических сцен 
Большое количество параллельных подзадач, между задачами нет зависимостей по данным (embarrassinglyparallel) 
Молекулярная динамика(система из nвзаимодействующих атомов) 
Параллельное вычисление сил, действующих на атом 
Метод «ветвей и границ» (branchandbound) 
Обход и разбиение множества решений в соответствии с правилами отсева и ветвления 
Динамическое порождение заданий
Рекурсивный параллелизм (разделяй и властвуй) 
6 октября 2014 г. 59 
Parallel Merge Sort 
Parallel Quick Sort
Рекурсивный параллелизм (разделяй и властвуй) 
6 октября 2014 г. 60 
Степень параллелизма изменяется в ходе выполнения алгоритма 
Операции Splitи Mergeмогут стать узким местом (выполняются последовательно, см. закон Амдала) 
Задания порождаются динамически (балансировка загрузки потоков) 
Очень большое количество заданий может привести к значительным накладным расходам
Геометрическая декомпозиция (Domain decomposition) 
6 октября 2014 г. 61 
Данные задачи разбиваются на области(желательно равного размера) 
С каждой областью данных ассоциируются алгоритм её обработки 
Вычисления локализованы внутри области? 
Да: независимые подзадачи 
Нет: требуется разделение данных между областями
Геометрическая декомпозиция (Domain decomposition) 
6 октября 2014 г. 62 
Декомпозиция структуры данных на области 
Размер подзадач обычно подбирается эмпирически 
Форма области влияет на накладные расходы(отношение объема к площади поверхности) 
Дублирование соседних точек 
Реализация обмена данными 
Перед операцией обновления 
Параллельно с операцией обновления
Геометрическая декомпозиция (Domain decomposition) 
6 октября 2014 г. 63 
Декомпозиция структуры данных на области 
Размер подзадач обычно подбирается эмпирически 
Форма области влияет на накладные расходы(отношение объема к площади поверхности) 
Дублирование соседних точек 
Реализация обмена данными 
Перед операцией обновления 
Параллельно с операцией обновления
Рекурсивная декомпозиция 
6 октября 2014 г. 64 
Алгоритм работает с рекурсивной структурой данных (список, дерево, граф) 
Часто кажется, что единственный способ решения –последовательный обход структуры 
Однако иногда возможно перестроить алгоритм так, что операции над отдельными элементами можно выполнять одновременно 
VivekSarkar. Parallel Graph Algorithms // http://www.cs.rice.edu/~vs3/comp422/lecture-notes/comp422-lec24-s08-v2.pdf
Конвейерная обработка (Pipeline) 
6 октября 2014 г. 65 
Вычисления производятся над набором элементов данных, каждый из которых проходит несколько стадий обработки–этапы/блоки конвейера 
Регулярный, односторонний, стабильный поток данных 
Подзадачи –применение операции "стадия N" к каждому элементу данных 
Примеры 
Конвейерная обработка команд процессором 
Обработка сигналов, фильтры, графика 
Load Image 
Scale Image 
Filter Image 
Save Image
Конвейерная обработка (Pipeline) 
6 октября 2014 г. 66 
Параллелизм ограничен числом стадий 
В идеале времена работы каждой стадии должны быть одинаковыми 
Самая медленная стадия становится узким местом 
Комбинирование и декомпозиция стадий 
Распараллеливание медленной стадии 
Времена заполнения и опустошения конвейера 
Load Image 
Scale Image 
Filter Image 
Save Image
Координация на основе событий 
6 октября 2014 г. 67 
Декомпозиция на слабосвязанные компоненты, взаимодействующие нерегулярным образом 
Двусторонние потоки данных 
Нерегулярные, непредсказуемые взаимодействия 
Высокий риск возникновения взаимной блокировки 
Примеры 
Моделирование с дискретными событиями 
Координация между заданиями в других шаблонах 
Распределенные системы 
Граф взаимодействий подзадач может быть недетерминированным
Взаимодействия между подзадачами 
6 октября 2014 г. 68 
Локальные и глобальные 
Структурированные и неструктурированные 
Статические и динамические 
Синхронные и асинхронные
Взаимодействия между подзадачами 
6 октября 2014 г. 69 
Локальные взаимодействия 
Коллективные (глобальные) операции 
Reduction -сборка 
Коллективные операции 
All-to-all
Heat 2D (serial code) 
6 октября 2014 г. 70 
[*] BlaiseBarney. Introduction to Parallel Computing (LLNL) 
Уравнение теплопроводности описывает изменение температуры в заданной области с течением времени 
Приближенное решение можно найти методом конечных разностей 
Область покрывается сеткой 
Производные аппроксимируются конечными разностями 
Известна температура на границе области в начальный момент времени
Heat 2D (serial code) 
6 октября 2014 г. 71 
[*] BlaiseBarney. Introduction to Parallel Computing (LLNL) 
doiy= 2, ny-1 
doix= 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)) 
enddo 
enddo 
Температура хранится в двумерном массиве –расчетная область
Heat 2D (serial code) 
6 октября 2014 г. 72 
[*] BlaiseBarney. Introduction to Parallel Computing (LLNL) 
fort = 1 tonsteps1. Update time2. Send neighbors my border3. Receive from neighbors4. Update my cellsend for 
Каждый процесс будет обрабатывать свою часть области–1Ddomain decomposition 
Расчетная область разбита на вертикальные полосы – массив распределен
Heat 2D (serial code) 
6 октября 2014 г. 73 
[*] BlaiseBarney. Introduction to Parallel Computing (LLNL) 
fort = 1 tonsteps1. Update time2. Send neighbors my border3. Receive from neighbors4. Update my cellsend for 
Каждый процесс будет обрабатывать свою часть области–2Ddomain decomposition 
Расчетная область разбита на прямоугольные области (2D) 
Сколько надо выполнить обменов на каждом шаге?
Литература 
6 октября 2014 г. 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/

More Related Content

What's hot

Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAMikhail Kurnosov
 
Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Mikhail Kurnosov
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Mikhail Kurnosov
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Mikhail Kurnosov
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Mikhail Kurnosov
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Mikhail Kurnosov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPMikhail Kurnosov
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Mikhail Kurnosov
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)Smolensk Computer Science Club
 
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Mikhail Kurnosov
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSUlarhat
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ontico
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Mikhail Kurnosov
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системpianist2317
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Mikhail Kurnosov
 

What's hot (20)

Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
 
Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
 
Efficiency vvv
Efficiency vvvEfficiency vvv
Efficiency vvv
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
 
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSU
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Simd
SimdSimd
Simd
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и систем
 
Лекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и системЛекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и систем
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 

Viewers also liked

Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)Mikhail Kurnosov
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Mikhail Kurnosov
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Mikhail Kurnosov
 
Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Mikhail Kurnosov
 
Язык параллельного программирования Intel Cilk Plus
Язык параллельного программирования Intel Cilk PlusЯзык параллельного программирования Intel Cilk Plus
Язык параллельного программирования Intel Cilk PlusMikhail Kurnosov
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksMikhail Kurnosov
 
Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)Mikhail Kurnosov
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Mikhail Kurnosov
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Mikhail Kurnosov
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиMikhail Kurnosov
 
Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)Mikhail Kurnosov
 
Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)Mikhail Kurnosov
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Mikhail Kurnosov
 
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Mikhail Kurnosov
 
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Mikhail Kurnosov
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelMikhail Kurnosov
 

Viewers also liked (18)

Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
 
Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)
 
Язык параллельного программирования Intel Cilk Plus
Язык параллельного программирования Intel Cilk PlusЯзык параллельного программирования Intel Cilk Plus
Язык параллельного программирования Intel Cilk Plus
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)Лекция 4. Префиксные деревья (tries, prefix trees)
Лекция 4. Префиксные деревья (tries, prefix trees)
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)
 
Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
 
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
 
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
 
Concurrency
ConcurrencyConcurrency
Concurrency
 

Similar to Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, parallel programming patterns)

Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Mikhail Kurnosov
 
Технические средства реализации информационных процессов
Технические средства реализации информационных процессовТехнические средства реализации информационных процессов
Технические средства реализации информационных процессовstudent_SSGA
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
ВиртуалтредингCEE-SEC(R)
 
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...VThn18
 
тест по теме микропроцессорные системы
тест по теме микропроцессорные системытест по теме микропроцессорные системы
тест по теме микропроцессорные системыJIuc
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Презентация на тему: Компьютер – универсальное устройство обработки информации
Презентация на тему: Компьютер – универсальное устройство обработки информацииПрезентация на тему: Компьютер – универсальное устройство обработки информации
Презентация на тему: Компьютер – универсальное устройство обработки информации2berkas
 
Белнетэксперт - СХД
Белнетэксперт - СХДБелнетэксперт - СХД
Белнетэксперт - СХДSergey Polazhenko
 
Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияAndrew Babiy
 
033
033033
033JIuc
 
26
2626
26JIuc
 
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...Ontico
 
Машины баз данных на Web-scale IT — 2017 (РИТ++)
Машины баз данных на Web-scale IT — 2017 (РИТ++)Машины баз данных на Web-scale IT — 2017 (РИТ++)
Машины баз данных на Web-scale IT — 2017 (РИТ++)Andrei Nikolaenko
 
Локальные и глобальные вычислительные сети
Локальные и глобальные вычислительные сетиЛокальные и глобальные вычислительные сети
Локальные и глобальные вычислительные сетиАндрей Сергеевич
 
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Ontico
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологииUnguryan Vitaliy
 
Магистрально модульный принцип построения пк
Магистрально модульный принцип построения пкМагистрально модульный принцип построения пк
Магистрально модульный принцип построения пкAndrey Dolinin
 
022
022022
022JIuc
 

Similar to Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, parallel programming patterns) (20)

тема 7
тема 7тема 7
тема 7
 
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
 
Технические средства реализации информационных процессов
Технические средства реализации информационных процессовТехнические средства реализации информационных процессов
Технические средства реализации информационных процессов
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
Виртуалтрединг
 
лекция 7 (4часа)
лекция 7 (4часа)лекция 7 (4часа)
лекция 7 (4часа)
 
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
 
тест по теме микропроцессорные системы
тест по теме микропроцессорные системытест по теме микропроцессорные системы
тест по теме микропроцессорные системы
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Презентация на тему: Компьютер – универсальное устройство обработки информации
Презентация на тему: Компьютер – универсальное устройство обработки информацииПрезентация на тему: Компьютер – универсальное устройство обработки информации
Презентация на тему: Компьютер – универсальное устройство обработки информации
 
Белнетэксперт - СХД
Белнетэксперт - СХДБелнетэксперт - СХД
Белнетэксперт - СХД
 
Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обучения
 
033
033033
033
 
26
2626
26
 
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...
 
Машины баз данных на Web-scale IT — 2017 (РИТ++)
Машины баз данных на Web-scale IT — 2017 (РИТ++)Машины баз данных на Web-scale IT — 2017 (РИТ++)
Машины баз данных на Web-scale IT — 2017 (РИТ++)
 
Локальные и глобальные вычислительные сети
Локальные и глобальные вычислительные сетиЛокальные и глобальные вычислительные сети
Локальные и глобальные вычислительные сети
 
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
 
Магистрально модульный принцип построения пк
Магистрально модульный принцип построения пкМагистрально модульный принцип построения пк
Магистрально модульный принцип построения пк
 
022
022022
022
 

More from Mikhail Kurnosov

Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)Mikhail Kurnosov
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Mikhail Kurnosov
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеMikhail Kurnosov
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовMikhail Kurnosov
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Mikhail Kurnosov
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаMikhail Kurnosov
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Mikhail Kurnosov
 
Лекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицыЛекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицыMikhail Kurnosov
 

More from Mikhail Kurnosov (8)

Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)Семинар 10. Параллельное программирование на MPI (часть 3)
Семинар 10. Параллельное программирование на MPI (часть 3)
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графе
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графов
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировка
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
 
Лекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицыЛекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицы
 

Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, parallel programming patterns)

  • 1. КурносовМихаил Георгиевич E-mail: mkurnosov@gmail.com WWW: www.mkurnosov.net Курс “Высокопроизводительные вычислительные системы” Сибирский государственный университет телекоммуникаций и информатики (Новосибирск) Осенний семестр, 2014 Лекция 5Основы параллельного программирования(Parallel programming introduction)
  • 2. Параллельные вычисления (Parallel Computing) Цели использования многопроцессорных вычислительных систем (ВС): решение задачи за меньшее время на нескольких процессорах решение задачи с большим объёмом входных данных – использование распределенной памяти нескольких вычислительных узлов решение задачи с большей вероятностью получения корректного решения (дублирование вычислений –параллельный пересчет) 6 октября 2014 г. 2
  • 3. Архитектура вычислительных систем с распределенной памятью 6 октября 2014 г. 3
  • 4. Вычислительные системы с распределенной памятью 6 октября 2014 г. 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
  • 5. Вычислительные системы с распределенной памятью 6 октября 2014 г. 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
  • 6. Вычислительные кластеры (Computer cluster) Вычислительные кластеры строятся на базе свободно доступных компонентов Вычислительные узлы: 2/4-процессорные узлы, 1 –8 GiBоперативной памяти на ядро (поток) Коммуникационная сеть (сервисная и для обмена сообщениями) Подсистема хранения данных (дисковый массивы, параллельные и сетевые файловые системы) Система бесперебойного электропитания Система охлаждения Программное обеспечение: GNU/Linux (NFS, NIS, DNS, …), MPI (MPICH2, Open MPI), TORQUE/SLURM 6 октября 2014 г. 6 Сеть InfiniBand (вычислительная сеть) Общая памятьЯдроПроцессорЯдроЯдроПроцессорЯдроОбщая памятьЯдроПроцессорЯдроЯдроПроцессорЯдроОбщая памятьЯдроПроцессорЯдроЯдроПроцессорЯдроОбщая памятьЯдроПроцессорЯдроЯдроПроцессорЯдроCompute node 1Compute node 2Compute node 3Compute node 4Общая памятьЯдроПроцессорЯдроЯдроПроцессорЯдроFrontend (login node) Сеть Gigabit Ethernet (сервисная сеть: NFS, DNS, DHCP, ssh, …)
  • 7. Гибридные вычислительные узлы 6 октября 2014 г. 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 Gen. 2 GPU2 Cores GPU Memory
  • 8. Коммуникационные сети (Interconnect) С фиксированной структурой (статической топологией)– графом связей вычислительных узлов Каждый вычислительный узел имеет сетевой интерфейс (маршрутизатор) с несколькими портами, через который он напрямую соединён с другими узлами С динамической структурой –на базе коммутаторов Каждый вычислительный узел имеет сетевой интерфейсс несколькими портами Порты интерфейсов подключены к коммутаторам, через которые происходит взаимодействие узлов 6 октября 2014 г. 8
  • 9. Сети с фиксированной структурой Структура сети (топология)–это граф узлы –машины(вычислительные узлы, computer nodes) ребра –линии связи(links) Показатели эффективности структур: диаметр (максимальное из кратчайших расстояний) средний диаметр сети бисекционнаяпропускная способность (bisectional bandwidth) Примеры структур kD-тор (3D, 4D, 5D): Cray Titan (#2) 3D torus, IBM Sequoia 5D torus (#3), Fujitsu 6D torus (#4) Гиперкуб Решетка, кольцо, графы Кауца, циркулянтныеструктуры, … 6 октября 2014 г. 9 3D-тор
  • 10. Сети с динамической структурой Вычислительные узлы связаны через активные устройства – сетевые коммутаторы (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 InfiniBandDDR/QDR/FDR 6 октября 2014 г. 10 Fat tree
  • 11. Показатели эффективности коммуникационных сетей Пропускная способность (Bandwidth) –бит/сек. (10 –54 Gbps–Giga bit per second) Латентность (Latency) –сек.(10 us –100 ns) Бисекционнаяпропускная способность (Bisectional bandwidth) 6 октября 2014 г. 11
  • 12. Классификация архитектур ВС Классификация Флинна(M. J. Flynn, 1966) По организации памяти:с общей памятью (SMP/NUMA), с распределенной памятью По типу поддерживаемых операндов: скалярные и векторные системы По доступности компонентов, из которых строится система: проприетарные(заказные), на основе общедоступного аппаратного обеспечения (commoditycomputing, проект Beowulf) … 6 октября 2014 г. 12 Flynn's taxonomy Single instruction Multiple instruction Single data SISD MISD Multiple data SIMD MIMD
  • 13. Классификация Флинна 6 октября 2014 г. 13 Современные ВС нельзя однозначно классифицировать по Флинну–современные системы мультиархитектурны(SIMD + MIMD) Процессор–скалярные + векторные инструкции(SIMD) Вычислительный узел – SMP/NUMA-система на базе многоядерных процессоров(MIMD)+ графические процессоры(SIMD) Совокупность нескольких вычислительных узлов –MIMD
  • 14. Рейтинги мощнейших ВС 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.Как создать свой тест производительности? 6 октября 2014 г. 14
  • 15. www.top500.org (Июнь 2014) 6 октября 2014 г. 15 Среднее количество вычислительных ядер в системе: 43299 Среднее количество ядер на сокет (процессор): 8.8(4, 6, 8, 10, 12, 16) Среднее энергопотребление: 804kW Коммуникационная сеть: Infiniband(44%), Gigabit Ethernet (25%), 10 Gigabit Ethernet (15%), Custom (10%), Cray (3%), … Процессоры: Intel (> 80%), IBM Power, AMD Opteron, SPARC64, ShenWei, NEC Ускорители(12% систем): Intel Xeon Phi, NVIDIA GPU, ATI/AMD GPU Операционная система: GNU/Linux (96%), IBM AIX (11шт.), Microsoft (2 шт.)
  • 16. www.top500.org (Июнь 2014) 6 октября 2014 г. 16 Среднее количество вычислительных ядер в системе: 43299 Среднее количество ядер на сокет (процессор): 8.8(4, 6, 8, 10, 12, 16) Среднее энергопотребление: 804kW Коммуникационная сеть: Infiniband(44%), Gigabit Ethernet (25%), 10 Gigabit Ethernet (15%), Custom (10%), Cray (3%), … Процессоры: Intel (> 80%), IBM Power, AMD Opteron, SPARC64, ShenWei, NEC Ускорители(12% систем): Intel Xeon Phi, NVIDIA GPU, ATI/AMD GPU Операционная система: GNU/Linux (96%), IBM AIX (11шт.), Microsoft (2 шт.) Новосибирская ГЭС –460 МВт Новосибирская ТЭЦ-5 –1200 МВт
  • 17. Мультиархитектурасовременных ВС 17 Разработка эффективных параллельных программ для мультиархитектурныхВС требует владения стеком технологий Internode communications: MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, CoarrayFortran, Global Arrays Multithreading:OpenMP, Intel TBB/CilkPlus, C11/C++11 Threads GPU:NVIDA CUDA, OpenCL, OpenACC, OpenMP4.0 Vectorization(SIMD): SSE/AVX, AltiVec 2 nodes Cray XK7 AMD Opteron Interlagos(16 cores)
  • 18. Мультиархитектурасовременных ВС 18 Разработка эффективных параллельных программ для мультиархитектурныхВС требует владения стеком технологий Internode communications: MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, CoarrayFortran, Global Arrays Multithreading:OpenMP, Intel TBB/CilkPlus, C11/C++11 Threads GPU:NVIDA CUDA, OpenCL, OpenACC, OpenMP4.0 Vectorization(SIMD): SSE/AVX, AltiVec 2 nodes Cray XK7 AMD Opteron Interlagos(16 cores) SSE/AVX
  • 19. Мультиархитектурасовременных ВС 19 Разработка эффективных параллельных программ для мультиархитектурныхВС требует владения стеком технологий Internode communications: MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, CoarrayFortran, Global Arrays Multithreading:OpenMP, Intel TBB/CilkPlus, C11/C++11 Threads GPU:NVIDA CUDA, OpenCL, OpenACC, OpenMP4.0 Vectorization(SIMD): SSE/AVX, AltiVec 2 nodes Cray XK7 AMD Opteron Interlagos(16 cores) SSE/AVX OpenMP, Intel TBB, Cilk, POSIX Threads
  • 20. Мультиархитектурасовременных ВС 20 Разработка эффективных параллельных программ для мультиархитектурныхВС требует владения стеком технологий Internode communications: MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, CoarrayFortran, Global Arrays Multithreading:OpenMP, Intel TBB/CilkPlus, C11/C++11 Threads GPU:NVIDA CUDA, OpenCL, OpenACC, OpenMP4.0 Vectorization(SIMD): SSE/AVX, AltiVec 2 nodes Cray XK7 AMD Opteron Interlagos(16 cores) SSE/AVX OpenMP, Intel TBB, Cilk, POSIX Threads NVIDIA CUDA, OpenCL, OpenACC
  • 21. Мультиархитектурасовременных ВС 21 Разработка эффективных параллельных программ для мультиархитектурныхВС требует владения стеком технологий Internode communications: MPI, Cray Chapel, IBM X10, Shmem, Unified Parallel C, CoarrayFortran, Global Arrays Multithreading:OpenMP, Intel TBB/CilkPlus, C11/C++11 Threads GPU:NVIDA CUDA, OpenCL, OpenACC, OpenMP4.0 Vectorization(SIMD): SSE/AVX, AltiVec 2 nodes Cray XK7 AMD Opteron Interlagos(16 cores) SSE/AVX OpenMP, Intel TBB, Cilk, POSIX Threads NVIDIA CUDA, OpenCL, OpenACC MPI, Cray Chapel, Shmem, CoarrayFortran, Unified Parallel C
  • 22. Многопроцессорные ВС с общей памятью (SMP, NUMA) Плюсы Привычная модель программирования (потоки, процессы) Высокая скорость обмена данными между потоками/процессами Минусы Синхронизация при доступе к общим данным (критические секции) Когерентность кэшей, ложное разделение данных Относительно низкая масштабируемость(как правило, 4 –16 процессоров на узле) Трудоемкая организация эффективного использование памяти в NUMA-системах 6 октября 2014 г. 22
  • 23. Многопроцессорные ВС с распределенной памятью Плюсы Высокая масштабируемость (сотни, тысячи и миллионы процессорных ядер) Меньше проблем с синхронизацией (у каждого узла/сервера своя память) Декомпозиция на крупные подзадачи Минусы Необходимость использования передачи сообщений (message passing) Высокие временные задержки и низкая пропускная способность(все взаимодействия по сети–Gigabit Ethernet, Infiniband) Неоднородность, отказы узлов 6 октября 2014 г. 23
  • 24. Теоретические основы параллельных вычислений 6 октября 2014 г. 24
  • 25. Параллельные вычисления (Parallel Computing) Разработка параллельного алгоритма Поиск параллелизма в известном последовательном алгоритме, его модификация или создание нового алгоритма Декомпозиция задачи на подзадачи, которые могут выполняться параллельно Анализ зависимостей между подзадачами Параллельная версия самого эффективного последовательного алгоритма решения задачи необязательно будет самой эффективной параллельной реализацией 6 октября 2014 г. 25
  • 26. Параллельные вычисления (Parallel Computing) Реализация параллельного алгоритма в виде параллельной программы Распределение подзадач между процессорами(task mapping, load balancing) Организация взаимодействия подзадач(message passing, shared data structures) Учет архитектуры целевой вычислительной системы Запуск, измерение и анализ показателей эффективностипараллельной программы Оптимизация программы 6 октября 2014 г. 26
  • 27. Показатели эффективности параллельных алгоритмов 6 октября 2014 г. 27 Коэффициент ускорения (Speedup) Коэффициент эффективности (Efficiency) Коэффициент накладных расходов Показатель равномерности загруженности параллельных ветвей (процессов, потоков)
  • 28. Коэффициент ускорения (Speedup) 6 октября 2014 г. 28 Введем обозначения: 푻(풏)–время выполнения последовательной программы(sequential program) 푻풑(풏)–время выполнения параллельной программы(parallel program) на pпроцессорах Коэффициент Sp(n) ускорения параллельной программ (Speedup): 푺풑풏= 푻(풏) 푻풑(풏) Коэффициент ускорения 푆푝푛показывает во сколько раз параллельная программа выполняется на pпроцессорах быстрее последовательной программы при обработке одних и тех же входных данных размера n Как правило 푆푝푛≤푝
  • 29. Коэффициент ускорения (Speedup) 6 октября 2014 г. 29 Введем обозначения: 푻(풏)–время выполнения последовательной программы(sequential program) 푻풑(풏)–время выполнения параллельной программы(parallel program) на pпроцессорах Коэффициент Sp(n) ускорения параллельной программ (Speedup): 푺풑풏= 푻(풏) 푻풑(풏) Цель распараллеливания–достичь линейного ускорения на максимально большом числе процессоров 푺풑풏≈풑или 푺풑풏=훀(풑)при풑→∞
  • 30. Коэффициент ускорения (Speedup) 6 октября 2014 г. 30 Какое время брать за время выполнения последовательной программы? oВремя лучшего известного алгоритма (в смысле вычислительной сложности)? oВремя лучшего теоретически возможного алгоритма? Что считать временем выполнения 푻풑풏параллельной программы? oСреднее время выполнения потоковпрограммы? oВремя выполнения потока, завершившего работу первым? oВремя выполнения потока, завершившего работу последним?
  • 31. Коэффициент ускорения (Speedup) 6 октября 2014 г. 31 Какое время брать за время выполнения последовательной программы? oВремя лучшего известного алгоритмаили время алгоритма, который подвергается распараллеливанию Что считать временем выполнения 푻풑풏параллельной программы? oВремя выполнения потока, завершившего работу последним
  • 32. Коэффициент ускорения (Speedup) 6 октября 2014 г. 32 Коэффициент относительного ускорения (Relative speedup) –отношения времени выполнения параллельной программына kпроцессорах к времени её выполнения на pпроцессорах (k< p) 푺푹풆풍풂풕풊풗풆풌,풑,풏= 푻풌(풏) 푻풑(풏) Коэффициент эффективности (Efficiency) параллельной программы 푬풑풏= 푺풑(풏) 풑 = 푻(풏) 풑푻풑(풏) ∈[ퟎ,ퟏ] Коэффициент накладных расходов (Overhead) 휺풑,풏= 푻푺풚풏풄(풑,풏) 푻푪풐풎풑(풑,풏) = 푻푻풐풕풂풍풑,풏−푻푪풐풎풑(풑,풏) 푻푪풐풎풑(풑,풏) 푻푺풚풏풄(풑,풏)–время создания, синхронизации и взаимодействия pпотоков 푻푪풐풎풑(풑,풏)–время вычисленийв каждом из pпотоков
  • 33. Коэффициент ускорения (Speedup) 6 октября 2014 г. 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 процессоров
  • 34. Коэффициент ускорения (Speedup) 6 октября 2014 г. 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)
  • 35. Коэффициент ускорения (Speedup) 6 октября 2014 г. 35 Параллельная программа (алгоритм) коэффициент ускорения, которой линейной растет с увеличением pназывается линейно масштабируемой или просто масштабируемой(scalable) Масштабируемая параллельная программа допускает эффективную реализацию на различном числе процессоров
  • 36. Коэффициент ускорения (Speedup) 6 октября 2014 г. 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 Speedup Processors Linear (ideal) Зависимость коэффициента ускорения S параллельных алгоритмов Y и Z от количества p процессоров Логарифмическое ускорение Sp(n) = log2p = Ω(logp) 푺풑 풏 = 풑 = Ω( 풑)
  • 37. Суперлинейноеускорение (Superlinearspeedup) 6 октября 2014 г. 37 Параллельная программа может характеризоватьсясуперлинейнымускорением (Superlinearspeedup)–коэффициент ускорения Sp(n) принимает значение больше p 푺풑풏>풑 Причина: иерархическая организация памяти: Cache –RAM –Local disk (HDD/SSD) –Network storage Последовательная программ выполняется на одном процессоре и обрабатывает данные размера n Параллельная программа имеет pпотоков на pпроцессорах, каждый поток работает со своей частью данных, большая часть которых может попасть в кеш-память, в результате в каждом потоке сокращается время доступа к данным Тот же самый эффект можно наблюдать имя два уровня иерархической памяти: диск –память
  • 38. Суперлинейноеускорение (Superlinearspeedup) 6 октября 2014 г. 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; InfiniBandnetwork Superlinearspeedup(relative) 푺ퟖ= 푻ퟒ 푻ퟖ =ퟐ.ퟑퟐ
  • 39. Равномерность распределения вычислений 6 октября 2014 г. 39 По какому показателю оценивать равномерность времени выполнения потоков/процессов параллельной программы? Известно время выполнения потоков t0, t1, …, tp-1 Коэффициент Vвариации 푽= 흈[풕풊] 흁[풕풊] Отношение min/max 푴= 퐦퐢퐧{풕풊} 퐦퐚퐱{풕풊} Jain’s fairness index 풇= 풊=ퟎ 풑−ퟏ풕풊 ퟐ 풏 풊=ퟎ 풑−ퟏ 풕풊 ퟐ∈[ퟎ,ퟏ]
  • 40. “Последовательные”части в программах 6 октября 2014 г. 40 Инициализация и завершение работы Чтение входных данных и запись Инициализация данных Синхронизация, критические секции Пул потоков обрабатывает независимые задания Извлечение заданий из очереди Обработка результатов Запись результатов в общую структуру данных Слияние результатов из локальных структур данных
  • 41. Закон Дж. Амдала (Amdahl’s law) 6 октября 2014 г. 41 Пусть имеется последовательная программаcвременем выполнения T(n) Обозначим: 풓∈[ퟎ,ퟏ]–часть программы, которая может быть распараллелена (perfectly parallelized) 풔=ퟏ−풓–часть программы, которая не может быть распараллелена (purely sequential) Время выполнения параллельной программы на pпроцессорах (время каждого потока)складывается из последовательной части sи параллельнойr: 푻풑풏=푻풏풔+ 푻(풏) 풑 풓 Вычислим значение коэффициент ускорения (по определению) 푺풑풏= 푻(풏) 푻풑풏 = 푻(풏) 푻풏풔+ 푻(풏) 풑 풓 = ퟏ 풔+ 풓 풑 = ퟏ (ퟏ−풓)+ 풓 풑 Полученная формула по значениям r и sпозволяет оценить максимальное ускорение s r
  • 42. Закон Дж. Амдала (Amdahl’s law) 6 октября 2014 г. 42 Пусть имеется последовательная программаcвременем выполнения T(n) Обозначим: 풓∈[ퟎ,ퟏ]–часть программы, которая может быть распараллелена (perfectly parallelized) 풔=ퟏ−풓–часть программы, которая не может быть распараллелена (purely sequential) Закон Дж. Амдала (Gene Amdahl, 1967)[1]: Максимальное ускорение Spпрограммы на pпроцессорах равняется 푺풑= ퟏ ퟏ−풓+ 풓 풑 푺∞=lim 푝→∞ 푆푝=lim 푝→∞ 11−푟+ 푟 푝 = 11−푟 = ퟏ 풔 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
  • 43. Закон Дж. Амдала (Amdahl’s law) 6 октября 2014 г. 43 Зависимость коэффициента Sp ускорения параллельной программы от количества p процессоров 0 2 4 6 8 10 12 14 16 18 20 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 r = 95% r = 75% r = 50% Имеет ли смысл создавать системы с количеством процессоров > 1024? Sp p
  • 44. Пример 6 октября 2014 г. 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 푛→∞ 푛+푘 푛+푘+푘푛 = 11+푘 Ускорение 푺∞=ퟏ/풔=ퟏ+풌
  • 45. Пример 6 октября 2014 г. 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) Ускорение푺→풑, при 풏→∞
  • 46. Допущения закона Дж. Амдала (Amdahl’s law) 6 октября 2014 г. 46 Последовательный алгоритм является наиболее оптимальным способом решения задачи Возможны ситуации когда параллельная программа (алгоритм) эффективнее решает задачу (может эффективнее использовать кеш-память, конвейер, SIMD-инструкции, …) Время выполнения параллельной программы оценивается через время выполнения последовательной, однако потоки параллельной программы могут выполнятся эффективнее 푻풑풏=푻풏풔+ 푻(풏) 풑 풓, на практике возможна ситуация 푻(풏) 풑 >푻풑풏 Ускорение Sp(n) оценивается для фиксированного размера nданныхпри любых значениях p В реальности при увеличении числа используемых процессоров размер nвходных данных также увеличивают, так как может быть доступно больше памяти
  • 47. Закон Дж. Амдала (Amdahl’s law) 6 октября 2014 г. 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), %
  • 48. Закон Дж. Амдала (Amdahl’s law) 6 октября 2014 г. 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%
  • 49. Увеличили число процессоров с 2-х до 4-х (программу не меняли) Время выполнения сократилось с 85% до 77,5% Закон Дж. Амдала (Amdahl’s law) 6 октября 2014 г. 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%
  • 50. Закон Густафсона-Барсиса 6 октября 2014 г. 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Я
  • 51. Принципы разработки параллельных алгоритмов 6 октября 2014 г. 51
  • 52. Методология PCAM 6 октября 2014 г. 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/
  • 53. Методология PCAM 6 октября 2014 г. 53 Декомпозиция(Partition) вычислений и данных на параллельные подзадачи (архитектура ВС игнорируется) Анализ зависимостей и разработка алгоритма взаимодействия(Communicate)параллельных подзадач Выбор целевой вычислительной системы (класса) Масштабирование подзадач (Agglomerate) с учетом архитектуры выбранной ВС Распределение подзадач(Map)между процессорами (статическое или динамическое)
  • 54. Декомпозиция на подзадачи 6 октября 2014 г. 54 Выявление возможностей для параллельного выполнения Разбиение задачи на подзадачи минимального размера – fine-graineddecomposition(мелокзернистаядекомпозиция) Виды декомпозиции По данным (Domaindecomposition)–распределение данных по подзадачам Функциональная декомпозиция (Functionaldecomposition)– распределение вычислений по подзадачам Необходимо избегать дублирования вычислений и данных
  • 55. Функциональная декомпозиция 6 октября 2014 г. 55 functionfib(intn) ifn < 2 then returnn x = forktask fib(n -1) y = forktask fib(n -2) jointhreadX join threadY returnx + y end function Параллельное вычисление n-ого члена последовательности Фибоначчи Функциональная декомпозиция: каждый рекурсивный вызов –это отдельная подзадача fib(1) fib(0) fib(2) fib(3) fib(1) fib(1) fib(0) fib(2) fib(4) Вычисления дублируются!
  • 56. Выбор структуры алгоритма 6 октября 2014 г. 56 Существуют типовые структуры (паттерны) параллельных алгоритмов Mattson T., Sanders B., MassingillB. Patterns for Parallel Programming. – Addison-Wesley,2004 KrsteAsanovic, RasBodik, Bryan Christopheret. 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
  • 57. Функциональная декомпозиция 6 октября 2014 г. 57 Параллелизм задач (Task parallelism) Линейная декомпозиция параллельные задачи Иерархическая декомпозиция (рекурсивный параллелизм) “Разделяй и властвуй” (Divide andConquer)
  • 58. Параллелизм задач (Task parallelism) 6 октября 2014 г. 58 Многовариантный счет, методы Монте-Карло, рендеринг графических сцен Большое количество параллельных подзадач, между задачами нет зависимостей по данным (embarrassinglyparallel) Молекулярная динамика(система из nвзаимодействующих атомов) Параллельное вычисление сил, действующих на атом Метод «ветвей и границ» (branchandbound) Обход и разбиение множества решений в соответствии с правилами отсева и ветвления Динамическое порождение заданий
  • 59. Рекурсивный параллелизм (разделяй и властвуй) 6 октября 2014 г. 59 Parallel Merge Sort Parallel Quick Sort
  • 60. Рекурсивный параллелизм (разделяй и властвуй) 6 октября 2014 г. 60 Степень параллелизма изменяется в ходе выполнения алгоритма Операции Splitи Mergeмогут стать узким местом (выполняются последовательно, см. закон Амдала) Задания порождаются динамически (балансировка загрузки потоков) Очень большое количество заданий может привести к значительным накладным расходам
  • 61. Геометрическая декомпозиция (Domain decomposition) 6 октября 2014 г. 61 Данные задачи разбиваются на области(желательно равного размера) С каждой областью данных ассоциируются алгоритм её обработки Вычисления локализованы внутри области? Да: независимые подзадачи Нет: требуется разделение данных между областями
  • 62. Геометрическая декомпозиция (Domain decomposition) 6 октября 2014 г. 62 Декомпозиция структуры данных на области Размер подзадач обычно подбирается эмпирически Форма области влияет на накладные расходы(отношение объема к площади поверхности) Дублирование соседних точек Реализация обмена данными Перед операцией обновления Параллельно с операцией обновления
  • 63. Геометрическая декомпозиция (Domain decomposition) 6 октября 2014 г. 63 Декомпозиция структуры данных на области Размер подзадач обычно подбирается эмпирически Форма области влияет на накладные расходы(отношение объема к площади поверхности) Дублирование соседних точек Реализация обмена данными Перед операцией обновления Параллельно с операцией обновления
  • 64. Рекурсивная декомпозиция 6 октября 2014 г. 64 Алгоритм работает с рекурсивной структурой данных (список, дерево, граф) Часто кажется, что единственный способ решения –последовательный обход структуры Однако иногда возможно перестроить алгоритм так, что операции над отдельными элементами можно выполнять одновременно VivekSarkar. Parallel Graph Algorithms // http://www.cs.rice.edu/~vs3/comp422/lecture-notes/comp422-lec24-s08-v2.pdf
  • 65. Конвейерная обработка (Pipeline) 6 октября 2014 г. 65 Вычисления производятся над набором элементов данных, каждый из которых проходит несколько стадий обработки–этапы/блоки конвейера Регулярный, односторонний, стабильный поток данных Подзадачи –применение операции "стадия N" к каждому элементу данных Примеры Конвейерная обработка команд процессором Обработка сигналов, фильтры, графика Load Image Scale Image Filter Image Save Image
  • 66. Конвейерная обработка (Pipeline) 6 октября 2014 г. 66 Параллелизм ограничен числом стадий В идеале времена работы каждой стадии должны быть одинаковыми Самая медленная стадия становится узким местом Комбинирование и декомпозиция стадий Распараллеливание медленной стадии Времена заполнения и опустошения конвейера Load Image Scale Image Filter Image Save Image
  • 67. Координация на основе событий 6 октября 2014 г. 67 Декомпозиция на слабосвязанные компоненты, взаимодействующие нерегулярным образом Двусторонние потоки данных Нерегулярные, непредсказуемые взаимодействия Высокий риск возникновения взаимной блокировки Примеры Моделирование с дискретными событиями Координация между заданиями в других шаблонах Распределенные системы Граф взаимодействий подзадач может быть недетерминированным
  • 68. Взаимодействия между подзадачами 6 октября 2014 г. 68 Локальные и глобальные Структурированные и неструктурированные Статические и динамические Синхронные и асинхронные
  • 69. Взаимодействия между подзадачами 6 октября 2014 г. 69 Локальные взаимодействия Коллективные (глобальные) операции Reduction -сборка Коллективные операции All-to-all
  • 70. Heat 2D (serial code) 6 октября 2014 г. 70 [*] BlaiseBarney. Introduction to Parallel Computing (LLNL) Уравнение теплопроводности описывает изменение температуры в заданной области с течением времени Приближенное решение можно найти методом конечных разностей Область покрывается сеткой Производные аппроксимируются конечными разностями Известна температура на границе области в начальный момент времени
  • 71. Heat 2D (serial code) 6 октября 2014 г. 71 [*] BlaiseBarney. Introduction to Parallel Computing (LLNL) doiy= 2, ny-1 doix= 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)) enddo enddo Температура хранится в двумерном массиве –расчетная область
  • 72. Heat 2D (serial code) 6 октября 2014 г. 72 [*] BlaiseBarney. Introduction to Parallel Computing (LLNL) fort = 1 tonsteps1. Update time2. Send neighbors my border3. Receive from neighbors4. Update my cellsend for Каждый процесс будет обрабатывать свою часть области–1Ddomain decomposition Расчетная область разбита на вертикальные полосы – массив распределен
  • 73. Heat 2D (serial code) 6 октября 2014 г. 73 [*] BlaiseBarney. Introduction to Parallel Computing (LLNL) fort = 1 tonsteps1. Update time2. Send neighbors my border3. Receive from neighbors4. Update my cellsend for Каждый процесс будет обрабатывать свою часть области–2Ddomain decomposition Расчетная область разбита на прямоугольные области (2D) Сколько надо выполнить обменов на каждом шаге?
  • 74. Литература 6 октября 2014 г. 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/