Введение в специальность. Введение в технологии параллельного программирования

Содержание

Слайд 2

Введение 2 https://regnum.ru/pictures/2255436/1.html

Введение

2

https://regnum.ru/pictures/2255436/1.html

Слайд 3

11 Введение в технологии параллельного программирования Понятие «Технологии параллельного программирования», история

11

Введение в технологии параллельного программирования
Понятие «Технологии параллельного программирования», история
Примеры

и основные области применения «Технологий параллельного программирования».
Основные архитектурные особенности построения параллельной вычислительной среды.
Основные классы современных параллельных компьютеров.
Слайд 4

Технологии параллельного программирования 12 Параллельное программирование - это техника программирования, которая

Технологии параллельного программирования

12

Параллельное программирование - это техника программирования, которая использует преимущества многоядерных

или многопроцессорных компьютеров.

Параллельное программирование – раздел программирования, связанный с изучением и разработкой методов и средств для:
а) адекватного описания в программах естественного параллелизма моделируемых в ЭВМ и управляемых ЭВМ систем и процессов,
б) распараллеливания обработки информации в многопроцессорных и мультипрограммных ЭВМ с целью ускорения вычислений и эффективного использования ресурсов ЭВМ.

Слайд 5

История развития параллелизма 13 1941 г. - Конрад Цузе, вычислительная машина Z3, Германия

История развития параллелизма

13

1941 г. - Конрад Цузе, вычислительная машина Z3, Германия


Слайд 6

История развития параллелизма 14 1945 г. - Джон Мокли, ЭВМ ЭНИАК, США

История развития параллелизма

14

1945 г. - Джон Мокли, ЭВМ ЭНИАК, США

Слайд 7

История развития параллелизма 14 1959 г. - Анатолий Иванович Китов, ЭВМ «М-100», СССР

История развития параллелизма

14

1959 г. - Анатолий Иванович Китов, ЭВМ «М-100», СССР


Слайд 8

История развития параллелизма 15 1961 г. - IBM 7030, США

История развития параллелизма

15

1961 г. - IBM 7030, США

Слайд 9

История развития параллелизма 15 1962 г. – Atlas, Манчестерский университет, Великобритания

История развития параллелизма

15

1962 г. – Atlas, Манчестерский университет, Великобритания

Слайд 10

История развития параллелизма 15 1964 г., компания Control Data Corporation, Сеймур Крэй, CDC-6600, США

История развития параллелизма

15

1964 г., компания Control Data Corporation, Сеймур Крэй, CDC-6600,

США
Слайд 11

История развития параллелизма 15 1976 г., компания Cray Recearch, Сеймур Крэй, CRAY 1, США

История развития параллелизма

15

1976 г., компания Cray Recearch, Сеймур Крэй, CRAY 1,

США
Слайд 12

История развития параллелизма 15 1982 г., компания Cray Recearch, Сеймур Крэй, CRAY X-MP, США

История развития параллелизма

15

1982 г., компания Cray Recearch, Сеймур Крэй, CRAY X-MP,

США
Слайд 13

История развития параллелизма 15 1996 г., компания Intel, Sandia NL, ASCI Red, США

История развития параллелизма

15

1996 г., компания Intel, Sandia NL, ASCI Red, США

Слайд 14

История развития параллелизма 15 2002 г., компания NEC, Earth Simulator, Япония

История развития параллелизма

15

2002 г., компания NEC, Earth Simulator, Япония 

Слайд 15

История развития параллелизма 15 2009 г., IBM, Roadrunner, США

История развития параллелизма

15

2009 г., IBM, Roadrunner, США  

Слайд 16

История развития параллелизма 15 2020 г., Fujitsu Limited, Fugaku, Япония

История развития параллелизма

15

2020 г., Fujitsu Limited, Fugaku, Япония  

Слайд 17

15 https://www.top500.org/

15

https://www.top500.org/

Слайд 18

15 Рейтинг суперкомпьютеров СНГ http://top50.supercomputers.ru/list

15

Рейтинг суперкомпьютеров СНГ

http://top50.supercomputers.ru/list

Слайд 19

Примеры и основные области применения технологий параллельного программирования

Примеры и основные области применения технологий параллельного программирования

Слайд 20

Научные исследования в области естественных наук Физика плазмы Квантовая химия Астрофизика

Научные исследования в области естественных наук

Физика плазмы

Квантовая химия

Астрофизика

Атомная физика

Физика конденсированных сред

Молекулярная

динамика
Слайд 21

Примеры приложений: Науки о Земле Анализ изменений климата Прогнозирование погоды Состояние атмосферы

Примеры приложений: Науки о Земле

Анализ изменений климата

Прогнозирование погоды

Состояние атмосферы

Слайд 22

Примеры приложений: Науки о жизни Новые лекарства и методы лечения Геномика Поиск в базах данных

Примеры приложений: Науки о жизни

Новые лекарства и методы лечения

Геномика

Поиск в базах

данных
Слайд 23

Инженерные расчёты Виртуальное проектирование Оптимизация

Инженерные расчёты

Виртуальное проектирование

Оптимизация

Слайд 24

ВПК Обработка снимков Проектирование экзосклетов Роботов Расшифровка информации Модернизация и разработка техники

ВПК

Обработка снимков

Проектирование экзосклетов
Роботов

Расшифровка информации

Модернизация и разработка техники

Слайд 25

Финансовый сектор Автоматизированное принятие решений Сервисы на основе ИИ Оценка и управление рисками Предиктивная аналитика

Финансовый сектор

Автоматизированное принятие решений

Сервисы на основе ИИ

Оценка и управление

рисками

Предиктивная аналитика

Слайд 26

Проблемы технологий параллельного программирования

Проблемы технологий параллельного программирования

Слайд 27

16

16

Слайд 28

16 http://www.invertedalchemy.com/2017/05/

16

http://www.invertedalchemy.com/2017/05/

Слайд 29

TSMC – техпроцессор - 5-нм

TSMC – техпроцессор - 5-нм

Слайд 30

Основные архитектурные особенности построения параллельной вычислительной среды

Основные архитектурные особенности построения параллельной вычислительной среды

Слайд 31

Общие проблемы https://musicseasons.org/wp-content/uploads/MG_6427.jpg

Общие проблемы

https://musicseasons.org/wp-content/uploads/MG_6427.jpg

Слайд 32

Архитектура многопроцессорных систем с общей памятью Мультипроцессоры

Архитектура многопроцессорных систем с общей памятью

Мультипроцессоры

Слайд 33

Архитектура многопроцессорных систем с распределенной памятью Мультикомпьютеры https://parallel.ru/computers/taxonomy/

Архитектура многопроцессорных систем с распределенной памятью

Мультикомпьютеры

https://parallel.ru/computers/taxonomy/

Слайд 34

ПЛЮСЫ И МИНУСЫ РАЗЛИЧНЫХ АРХИТЕКТУР Привычная модель программирования за счет единого

ПЛЮСЫ И МИНУСЫ РАЗЛИЧНЫХ АРХИТЕКТУР

Привычная модель программирования за счет единого адресного

пространства
Высокая скорость и низкая латентность обмена данными между параллельными задачами

ПРЕМУЩЕСТВА

НЕДОСТАТКИ

Архитектура с распределенной памятью

Архитектура с разделяемой памятью

Низкая масштабируемость (обычно до 16 процессоров) из-за геометрического роста нагрузки на шину CPU-RAM
Проблема поддержания когерентности кэшей
Трудоемкая организация эффективного использование памяти в NUMA-системах
Необходимость синхронизации при доступе к общим данным (критические секции)

Высокая масштабируемость
Объем памяти растет пропорционально количеству ядер
Возможность использовать недорогие массовые компоненты

Специальные подходы к программированию: необходимость использования передачи сообщений (message passing)
Сложность реализации некоторых структур данных и алгоритмов
Высокая латентность и низкая скорость обмена данными между узлами
Неоднородность, отказы узлов

Слайд 35

Классификация М. Флинна, 1966 г.

Классификация М. Флинна, 1966 г.

Слайд 36

Классификация М. Флинна, 1966 г.

Классификация М. Флинна, 1966 г.

Слайд 37

Основные подклассы - Векторно-конвейерные - Массово-параллельные - Симметричные мультипроцессоры (SMP) - Кластеры

Основные подклассы

- Векторно-конвейерные

- Массово-параллельные

- Симметричные мультипроцессоры (SMP)

- Кластеры

Слайд 38

Основные классы современных параллельных ЭВМ Параллельные векторные системы

Основные классы современных параллельных ЭВМ

Параллельные векторные системы

Слайд 39

Основные классы современных параллельных ЭВМ Массивно-параллельные системы (MPP)

Основные классы современных параллельных ЭВМ

Массивно-параллельные системы (MPP)

Слайд 40

Основные классы современных параллельных ЭВМ Симметричные мультипроцессорные системы (SMP)

Основные классы современных параллельных ЭВМ

Симметричные мультипроцессорные системы (SMP)

Слайд 41

Основные классы современных параллельных ЭВМ Кластерные системы

Основные классы современных параллельных ЭВМ

Кластерные системы

Слайд 42

Основные классы современных параллельных ЭВМ Grid (вычислительная сеть)

Основные классы современных параллельных ЭВМ

Grid (вычислительная сеть)

Слайд 43

Основные классы современных параллельных ЭВМ Графические процессоры (GPU)

Основные классы современных параллельных ЭВМ

Графические процессоры (GPU)

Слайд 44

Основные классы современных параллельных ЭВМ Системы с неоднородным доступом к памяти (NUMA)

Основные классы современных параллельных ЭВМ

Системы с неоднородным доступом к памяти (NUMA)

Слайд 45

Основные классы современных параллельных ЭВМ Набор персональных компьютеров

Основные классы современных параллельных ЭВМ

Набор персональных компьютеров

Слайд 46

Основные классы современных параллельных ЭВМ - Компьютеры с распределенной памятью с

Основные классы современных параллельных ЭВМ

- Компьютеры с распределенной памятью с двухуровневой

архитектурой;
- Гибридные метакластерные архитектуры;
- Суперкомпьютеры, использующие многосокетные узлы с многоядерными микропроцессорами в сокетах
Слайд 47

Систематизация MIMD-компьютеров по Р. Хокни

Систематизация MIMD-компьютеров по Р. Хокни

Слайд 48

Топологии соединения вычислительных узлов в высокопроизводительных вычислительных системах* *Параллельное программирование с

Топологии соединения вычислительных узлов в высокопроизводительных вычислительных системах*

*Параллельное программирование с использованием

OpenMP: учебное пособие / М.П. Левин. – М: Интернет-Университет ИТ, 2008

Топологии

Слайд 49

классификация Т. Фенга Основана на двух характеристиках: число n бит в

классификация Т. Фенга

Основана на двух характеристиках:
число n бит в машинном

слове, обрабатываемых параллельно;
число слов m, обрабатываемых одновременно вычислительной системой.

P=m×n - максимальная степень параллелизма вычислительной системы

Слайд 50

классификация Т. Фенга - разрядно-последовательные, пословно-последовательные (n=1, m=1); - разрядно-параллельные, пословно-последовательные

классификация Т. Фенга

- разрядно-последовательные, пословно-последовательные (n=1, m=1);
- разрядно-параллельные, пословно-последовательные (n>1, m=1);
-

разрядно-последовательные, пословно-параллельные (n=1, m>1);
- разрядно-параллельные, пословно-параллельные (n>1, m>1).
Слайд 51

классификация В. Хендлера Три уровня обработки данных: - уровень выполнения программы;

классификация В. Хендлера

Три уровня обработки данных:
- уровень выполнения

программы;
- уровень выполнения команд;
- уровень битовой обработки
Слайд 52

классификация В. Хендлера k - число процессоров; k’ - глубина макроконвейера;

классификация В. Хендлера

k - число процессоров;
k’ - глубина макроконвейера;
d -

число АЛУ в каждом процессоре;
d’ - глубина конвейера из функциональных устройств АЛУ;
w - число разрядов в слове, обрабатываемых в АЛУ параллельно;
w’ - число ступеней в конвейере функциональных устройств каждого АЛУ.
Слайд 53

классификации Д. Скилликорна - процессор команд (IP – Instruction Procesor) –

классификации Д. Скилликорна

- процессор команд (IP – Instruction Procesor) – интерпретатор

команд;
- процессор данных (DP – Data Procesor) – устройство обработки данных;
- устройство памяти (IM – Instruction Memory, DM – Data Memory);
- переключатель – абстрактное устройство, обеспечивающее связь между
процессорами и памятью.
Слайд 54

классификации Д. Скилликорна четыре типа переключателей: - 1–1 – связывает пару

классификации Д. Скилликорна

четыре типа переключателей:
- 1–1 – связывает пару функциональных устройств;
-

n–n – реализует попарную связь каждого устройства из одного множества с
соответствующим ему устройством из другого множества;
- 1–n – соединяет одно выделенное устройство со всеми функциональными
устройствами из некоторого набора;
- n×n – каждое функциональное устройство одного множества может быть
связано с любым устройством из некоторого набора
Слайд 55

Анализ производительности и эффективности параллельных вычислений

Анализ производительности и эффективности параллельных вычислений

Слайд 56

Способы параллельной обработки данных: параллелизм конвейерность

Способы параллельной обработки данных:

параллелизм

конвейерность

Слайд 57

Свойства параллельных вычислений Ускорение T1 ‑ время выполнения программы одним процессором

Свойства параллельных вычислений

Ускорение
T1 ‑ время выполнения программы одним процессором
Tp ‑ время

выполнения программы конечным числом процессоров
Эффективность
Стоимость

Cp=pTp

Слайд 58

Закон Амдала q – доля последовательных вычислений в применяемом алгоритме обработки данных, p – число процессоров

Закон Амдала

q  – доля последовательных вычислений в применяемом алгоритме обработки данных,


p    – число процессоров
Слайд 59

ПОКАЗАТЕЛИ ЭФФЕКТИВНОСТИ ПАРАЛЛЕЛЬНЫХ АЛГОРИТМОВ

ПОКАЗАТЕЛИ ЭФФЕКТИВНОСТИ ПАРАЛЛЕЛЬНЫХ АЛГОРИТМОВ

Слайд 60

Закон Густафсона-Барсиса где α - доля последовательных расчётов в программе, n- количество процессоров.

Закон Густафсона-Барсиса

где α - доля последовательных расчётов в программе, n- количество

процессоров.
Слайд 61

Параллельный алгоритм называют масштабируемым (scalable), если при росте числа процессоров он

Параллельный алгоритм называют масштабируемым (scalable), если при росте числа процессоров он обеспечивает увеличение

ускорения при сохранении постоянного уровня эффективности использования процессоров

Масштабируемость

T0=pTp–T1

Слайд 62

Принципы разработки параллельных алгоритмов (parallel computing) 1

Принципы разработки параллельных алгоритмов
(parallel computing)

1

Слайд 63

Классификация алгоритмов по типу параллелизма Алгоритмы, использующие параллелизм данных (Data Parallelism).

Классификация алгоритмов по типу параллелизма

Алгоритмы, использующие параллелизм данных (Data Parallelism).
Алгоритмы

с распределением данных (Data Partitioning).
Релаксационные алгоритмы (Relaxed Algorithm).
Алгоритмы с синхронизацией итераций (Synchronous Iteration).
Слайд 64

РАЗРАБОТКА ПАРАЛЛЕЛЬНОГО АЛГОРИТМА Ключевые шаги разработки параллельного алгоритма: Поиск параллелизма в

РАЗРАБОТКА ПАРАЛЛЕЛЬНОГО АЛГОРИТМА

Ключевые шаги разработки параллельного алгоритма:
Поиск параллелизма в известном последовательном

алгоритме, его модификация или создание нового алгоритма
Декомпозиция задачи на подзадачи, которые могут выполняться параллельно
Анализ зависимостей между подзадачами
Слайд 65

Общая схема взаимосвязи этапов разработки параллельных алгоритмов

Общая схема взаимосвязи этапов разработки параллельных алгоритмов

Слайд 66

Специфические задачи реализации параллельного алгоритма в виде параллельной программы: Распределение подзадач

Специфические задачи реализации параллельного алгоритма в виде параллельной программы:
Распределение подзадач между

процессорами (task mapping, load balancing)
Организация взаимодействия подзадач (message passing, shared data structures)
Создание эффективной параллельной реализации алгоритма требует:
Учета архитектуры целевой вычислительной системы
Измерения и анализа показателей эффективности параллельной программы
Оптимизации программы
Слайд 67

ПОДХОДЫ К ДЕКОМПОЗИЦИИ НА ПОДЗАДАЧИ Есть два основных подхода к декомпозиции

ПОДХОДЫ К ДЕКОМПОЗИЦИИ НА ПОДЗАДАЧИ

Есть два основных подхода к декомпозиции задач

на параллелизуемые подзадачи:

Функциональная декомпозиция
(Task/Functional decomposition)

Декомпозиция по данным
(Domain/Data decomposition)

Распределение вычислений по подзадачам

Распределение данных по подзадачам
Высокая масштабируемость (многие тысячи ядер)
Возможность использовать недорогие массовые компоненты (CPU, RAM, сети)

Слайд 68

СПОСОБЫ ДЕКОМПОЗИЦИИ Конвейерная обработка данных

СПОСОБЫ ДЕКОМПОЗИЦИИ

Конвейерная обработка данных

Слайд 69

СПОСОБЫ ДЕКОМПОЗИЦИИ Рекурсивный параллелизм (разделяй и властвуй)

СПОСОБЫ ДЕКОМПОЗИЦИИ

Рекурсивный параллелизм (разделяй и властвуй)

Слайд 70

СПОСОБЫ ДЕКОМПОЗИЦИИ Геометрическая декомпозиция

СПОСОБЫ ДЕКОМПОЗИЦИИ

Геометрическая декомпозиция

Слайд 71

МОДЕЛИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ Разделяемая память (shared memory): Аналогия - доска объявлений

МОДЕЛИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ

Разделяемая память (shared memory):
Аналогия - доска объявлений
Подзадачи используют

общее адресное пространство (оперативной памяти)
Подзадачи взаимодействуют асинхронно читая и записывая информацию в общем пространстве
Реализация: многопоточные приложения, OpenMP

Examples
➢ Multiprogramming: no communication or synch. at program level
➢ Shared address space: like bulletin board
➢ Message passing: like letters or phone calls, explicit point to point
➢ Data parallel: more strict, global actions on data
• Implemented with shared address space or message passing

Слайд 72

МОДЕЛИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ Передача сообщений (message passing): Аналогия – отправка писем

МОДЕЛИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ
Передача сообщений (message passing):
Аналогия – отправка писем с

явным указанием отправителя и получателя
Каждая подзадача работает с собственными локальными данными
Подзадачи взаимодействуют за счет обмена сообщениями
Реализация: MPI (message passing interface)
Слайд 73

МОДЕЛИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ Параллельная обработка данных (data parallelization): Строго описанные глобальные

МОДЕЛИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ
Параллельная обработка данных (data parallelization):
Строго описанные глобальные операции над

данными (может обозначаеться как чрезвычайная параллельность (embarrassingly parallel) – очень хорошо распараллеливаемые вычисления)
Обычно данные равномерно разделяются по подзадачам
Подзадачи выполняются как последовательность независимых операций
Реализация может быть сделана как с помощью разделяемой памяти, так и с помощью передачи сообщений

Examples
➢ Multiprogramming: no communication or synch. at program level
➢ Shared address space: like bulletin board
➢ Message passing: like letters or phone calls, explicit point to point
➢ Data parallel: more strict, global actions on data
• Implemented with shared address space or message passing

Слайд 74

ПРОЦЕССЫ И ПОТОКИ

ПРОЦЕССЫ И ПОТОКИ

Слайд 75

МНОГОПОТОЧНЫЕ ПРИЛОЖЕНИЯ Сценарий работы многопоточного приложения: Сначала инициализируется стартовый поток процесса,

МНОГОПОТОЧНЫЕ ПРИЛОЖЕНИЯ

Сценарий работы многопоточного приложения:
Сначала инициализируется стартовый поток процесса, выполняет

загрузку необходимых ресурсов
Стартовый поток выполняет последовательные задачи и затем создает новые потоки, выполняемые внутри общего процесса, для параллельного выполнения подзадач
Каждый поток имеет собственные данные, но разделяет общие ресурсы процесса
Потоки взаимодействуют через глобальную память процесса (корректное изменение общих данных требует использования механизмов синхронизации)
Параллельная работа потоков может быть представлена как параллельное исполнение процедур внутри общей программы.

Also a set of shared variables, e.g., static variables, shared
common blocks, or global heap
➢ Threads communicate implicitly by writing and reading shared variables
➢ Threads coordinate by synchronizing on shared variables

Слайд 76

ПОДЗАДАЧИ И ПОТОКИ Задача (подзадача) состоит из данных и процедуры их

ПОДЗАДАЧИ И ПОТОКИ

Задача (подзадача) состоит из данных и процедуры их обработки
Планировщик

задач назначает задачу для исполнения в одном из потоков
Оперирование задачами намного более простое, чем потоками
Работа планировщика позволяет балансировать нагрузку между потоками
Задач должно быть намного больше, чем потоков: это обеспечивает гибкость назначения задач и простоту балансировки
Объем вычислений в задаче должен быть достаточно большим, чтобы накладные расходы по управлению задачами были оправданы
Слайд 77

ПРОБЛЕМЫ СИНХРОНИЗАЦИИ Взаимная блокировка (deadlock) – ситуация в многозадачной среде при

ПРОБЛЕМЫ СИНХРОНИЗАЦИИ

Взаимная блокировка (deadlock) – ситуация в многозадачной среде при которой

несколько потоков находятся в состоянии ожидания ресурсов, занятых друг другом, и ни один из них не может продолжать свое выполнение
Типичная взаимная блокировка: два потока ожидают окончания друг друга
Состояние гонки (race condition) – ситуация в которой работа приложения зависит от того, в каком порядке выполнятся (параллельные) части кода
Несколько потоков модифицируют разделяемый ресурс (например, переменную)
Результат зависит от того, какой поток первым выполнит изменения
Проблема может быть решена за счет блокировок, но зачастую это сложно, и приводит к ошибкам, в частности, взаимной блокировке
Потоковая безопасность (thread safety) – специфика кода (например функций или библиотек), позволяющая использовать его из нескольких потоков одновременно
Источником нарушения потоковой безопасности может быть: доступ к глобальным переменным или динамической памяти; выделение/освобождение глобальных ресурсов (например файлов); неявный доступ через указатели; побочный эффект функций.
Эффективным подходом является изменение только локальных переменных потока.

Deadlock:
- Two processes are waiting for each other to finish.
- Usually caused by locks or by blocking communication.
Race condition:
- Two or more processes modify a shared resource (variable, file, ...)
- Result depends on which process comes first.
- Can be avoided using locks, but...
- ... handling locks is very difficult and mistakes often cause deadlocks.

Thread Safe Routine/Library
 It functions correctly during simultaneous execution by
multiple threads
 Non-thread-safe indicators
➢ Access global/static variables or the heap
➢ Allocate/reallocate/free resources that have global scope (files)
➢ Indirect accesses through handles and pointers
 Considerations
➢ Any variables changed must be local to each thread
➢ Routines can use mutual exclusion to avoid conflicts with other
threads

Слайд 78

МОДЕЛЬ П/П НА ОСНОВЕ ПЕРЕДАЧИ СООБЩЕНИЙ Основные характеристики модели на основе

МОДЕЛЬ П/П НА ОСНОВЕ ПЕРЕДАЧИ СООБЩЕНИЙ

Основные характеристики модели на основе передачи

сообщений:
Набор задач, имеющих свою собственную локальную память во время вычислений
Задачи могут находится как на одной машине (в т.ч. с разделяемой памятью), так и на разных машинах
Задачи обмениваются данными с помощью отсылки и приема сообщений явно описываемых в программном коде
Зачастую передача данных подразумевает их сериализацию/десериализацию, что требует соответствующих накладных расходов
Как правило передача данных требует совместной работы, выполняемой как задачей-отправителем, так и задачей-получателем

The message passing model demonstrates the following characteristics:
A set of tasks that use their own local memory during computation.
Multiple tasks can reside on the same physical machine as well across an arbitrary number of machines.
Tasks exchange data through communications by sending and receiving messages.
Data transfer usually requires cooperative operations to be performed by each process. For example, a send operation must have a matching receive operation.

Слайд 79

МОДЕЛЬ П/П НА ОСНОВЕ ПЕРЕДАЧИ СООБЩЕНИЙ Программирование для модели на основе

МОДЕЛЬ П/П НА ОСНОВЕ ПЕРЕДАЧИ СООБЩЕНИЙ
Программирование для модели на основе передачи

сообщений:
С точки зрения программирования модель на основе передачи сообщений выглядит как внедрение вызовов специализированной библиотеки в программный код.
За реализацию параллелизма полностью отвечает программист, а не компилятор
Общепринятым стандартом для модели параллельного программирования на основе передачи сообщений является библиотека MPI (Message Passing Interface).

The message passing model demonstrates the following characteristics:
A set of tasks that use their own local memory during computation.
Multiple tasks can reside on the same physical machine as well across an arbitrary number of machines.
Tasks exchange data through communications by sending and receiving messages.
Data transfer usually requires cooperative operations to be performed by each process. For example, a send operation must have a matching receive operation.

Слайд 80

ПРИМЕР ПЕРЕДАЧИ СООБЩЕНИЯ

ПРИМЕР ПЕРЕДАЧИ СООБЩЕНИЯ

Слайд 81

МОДЕЛЬ П/П – ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА ДАННЫХ Programming with the data parallel

МОДЕЛЬ П/П – ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА ДАННЫХ

Programming with the data parallel model

is usually accomplished by writing a program with data parallel constructs. The constructs can be calls to a data parallel subroutine library or, compiler directives recognized by a data parallel compiler.

Параллельная обработка данных (data parallelization):
Строго описанные глобальные операции над данными (может обозначаться как чрезвычайная параллельность (embarrassingly parallel) – очень хорошо распараллеливаемые вычисления)
Обычно данные равномерно разделяются по подзадачам
Подзадачи выполняются как последовательность независимых операций
Реализация может быть сделана как с помощью разделяемой памяти, так и с помощью передачи сообщений

Слайд 82

МОДЕЛЬ П/П – ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА ДАННЫХ Programming with the data parallel

МОДЕЛЬ П/П – ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА ДАННЫХ

Programming with the data parallel model

is usually accomplished by writing a program with data parallel constructs. The constructs can be calls to a data parallel subroutine library or, compiler directives recognized by a data parallel compiler.

Основные характеристики модели на основе параллельной обработки данных:
Основные параллельные задачи сфокусированы на выполнении операций над неким массивом данных
Массив данных обычно организован в виде однородной структуры, например массива или гиперкуба
Задачи обычно параллельно выполняют аналогичные операции над выделенными им фрагментами одного массива данных
В реализации на архитектурах без разделяемой памяти массив данных делится на фрагменты, которые находятся в распоряжении отдельных задач
Программирование для данной модели обычно представляет собой написания программы оперирующей с конструкциями для параллельной обработки данных, например в виде вызовов специализированной библиотеки

Слайд 83

ИСТОЧНИКИ И РЕСУРСЫ Ресурсы для самоподготовки: 1. Малявко, А. А. Параллельное

ИСТОЧНИКИ И РЕСУРСЫ

Ресурсы для самоподготовки:

1. Малявко, А. А. Параллельное программирование на

основе технологий openmp, mpi, cuda : учебное пособие для академического бакалавриата / А. А. Малявко. — 2-е изд., испр. и доп. — Москва : Юрайт, 2019. — 129 с. - ЭБС Юрайт. — URL: https://biblio-online.ru/bcode/446247 (дата обращения: 17.01.2020). —Текст : электронный.
2. Карепова, Е.Д. Основы многопоточного и параллельного программирования: учебное пособие / Е.Д. Карепова. - Красноярск: Сиб. Федер. ун-т, 2016. — 356 с. — ЭБС ZNANIUM.com. — URL: https://new.znanium.com/catalog/product/966962 (дата обращения: 17.01.2020). — Текст : электронный.
3. Федотов, И.Е. Модели параллельного программирования: практическое пособие / И.Е. Федотов. — Москва: СОЛОН-Пресс, 2017. — 392 с. — ЭБС ZNANIUM.com. — URL: https://new.znanium.com/catalog/product/858609 (дата обращения: 17.01.2020). — Текст : электронный.