Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Шаблоны параллельного проектирования

Содержание

Этапы разработки параллельной программы
Шаблоны параллельного проектирования Этапы разработки параллельной программы Поиск параллельности (1/4)Задача – помыть окна в кабинете. Вы приходите – один. Выбор шаблона реализации (2/4)Проектирование структуры параллельной программыЗакладывается возможность масштабированияВыбор инструментов реализацииОтдельно задачи, Реализация алгоритма (3/4)СинхронизацияВзаимодействиеЕсли пришло достаточное количество народу, то вам нужно договориться один Выполнение (4/4)Общие ресурсыГонкиЕсли кто-то забыл ведро дома, то ведро становится разделяемым ресурсом Шаблоны параллельного программирования1977 вышла книга «Язык шаблонов. Города. Здания. Сооружения.» Шаблоны в строительстве Шаблоны в строительстве Шаблоны в программированииAdapterBuilderDecoratorFacadeFlyweight…Task parallelismData parallelismRecursive decompositionGeometric decompositionDivide and conquereSPMDMaster/Worker… Patterns for parallel programmingPatterns for ParallelProgramming. Mattson,Sanders, and Massingill(2005).Есть pdf`ка.. Начало книги Что параллелить?Вот алгоритм – что можно вычислить параллельно? Параллелизм задач Параллельные задачиГибкостьЭффективностьПростотаЧто там про окна: если кроме окон нужно покрасить парты, то Гибкость (1/3)Не привязывайтесь к железуИздали закон, по которому окна можно мыть только Гибкость (2/3)Задачи не должны решать какие данные им обрабатыватьНапример, приходит в класс Гибкость (3/3)Задачи должны уметь считать разные объемы данныхНапример у нас три окна Эффективность (1/2)Задачи должны эффективно использовать ресурсыВ классе десять окон. Вспомним алгоритм: налить Эффективность (2/2)Создавайте независимые задачиJust “Hello world!” Простота (1/1)ПонятностьЧитаемостьШаблоны ООПСтили кодированияТестирование Шаблоны параллелизма по задачам Task parallelism (1/2)ПримерыRay tracing - вычисление каждого луча независимо по данным и Task parallelism (2/2)Используйте очереди:RabbitMQMSMQAmazon SQSIronMQStormMQWindows Azure Queues Divide and ConquerЗадачи выполняют разные действияВажна последовательность задач Параллелизм данных Параллелизм данныхОсновные вычисления выполняются на большом объеме данных;Одни и те же операции Параллелизм данныхГибкостьДанные должны хорошо дробиться, чтобы поддерживать высокий уровень параллелизмаЭффективностьРазмер данных должен Геометрическое разбиениеХорошо работает на таких типах данных как:МассивСписокСправочник Способы геометрического разбиения Рекурсивное разбиениеХорошо работает на таких типах данных как:МассивСписокДеревьяГрафыПодсчет среднего возраста по каждому Рекурсивное разбиениеВремени меньше: O( log n), вместо O(n)Вычислений больше: O( n * log n), вместо O(n) Стратегия выполнения Какой стратегии придерживатьсяОкна есть, работники есть..- Чо делать то?Если наряду с окна SPMDSingle program multiple dataКаждый процесс выполняет одну задачу, но со своим набором Master/Worker (1/2)Мастерсоздаёт пул задач и исполнителей. Следит, чтобы исполнители работали, а задачи Master/Worker (2/2)ИсполнительПолучает задачу из очереди задачВыполняет задачуПомечает задачу как исполненнуюИдемпотентные задачи рулятПослали Fork/JoinПохож на Master/WorkerSPMDБолее легковесная версияПрименяется к потокам, а не процессамЧто там про Loop parallelismЛегкий способ ускорения линейной программыИспользуйте профилировщикЕсть готовые решения - OpenMP PipelineГрафический конвейерОбработка команд в процессореShell pipelineВася – несет водуПетя – моет окноСвета Event basedИспользует другие шаблоныПримитивы синхронизации – EventСложно отлаживатьИспользуйте логированиеТребуется помыть все окна Стратегии и шаблоны Стратегии и реализация
Слайды презентации

Слайд 2 Этапы разработки параллельной программы

Этапы разработки параллельной программы

Слайд 3 Поиск параллельности (1/4)
Задача – помыть окна в кабинете.

Поиск параллельности (1/4)Задача – помыть окна в кабинете. Вы приходите –

Вы приходите – один. Окон десять.
Нужно определить участки программы,

которые можно выполнять параллельно
Задачи должны иметь начало и окончание
Количество задач может меняться
Задач должно достаточно для получения ускорения (одна задача это не очень хорошо)
Работает закон Амдала

Можно ли мыть все окна одновременно – в принципе да. Даже если мы будем все окна мыть одновременно – мы помоем 10 окон за время, равное времени, необходимого, чтобы вымыть одно окно.


Слайд 4 Выбор шаблона реализации (2/4)
Проектирование структуры параллельной программы
Закладывается возможность

Выбор шаблона реализации (2/4)Проектирование структуры параллельной программыЗакладывается возможность масштабированияВыбор инструментов реализацииОтдельно

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


Вы приглашаете друга, у

каждого есть ведро и тряпка. Каждый из вас - «боевая единица», способная помыть окно. Есть окна, есть вы. Пока есть грязные окна вы всегда заняты.
Пришла бабушка ученика, которая может мыть окна только до середины. Это не очень хороший вариант. Исполнители должны быть равнозначны по возможностям, пусть даже и отличаться по скорости.

Слайд 5 Реализация алгоритма (3/4)
Синхронизация
Взаимодействие
Если пришло достаточное количество народу, то

Реализация алгоритма (3/4)СинхронизацияВзаимодействиеЕсли пришло достаточное количество народу, то вам нужно договориться

вам нужно договориться один раз, кто какое окно моет

и все. Далее каждый будет следовать простому алгоритму:
Простая линейная программа, которую сложно выполнить параллельно. Сложно, но можно. Каждый взрослый берет себе в пару ребенка. Родители моют, ребенок таскает воду. Есть определенное ускорение. Но возникает сложность – родителю необходимо договариваться с ребенком. Поверьте, это сложно. Количество коммуникаций увеличивается. Если и второй минус, ребенок «простаивает». Получается, что часть команды отдыхает, пока вторая трудится. В случае программы это может означать простой ресурсов.

Налить воду в ведро
Помыть первое стекло
Протереть первое стекло
Поменять воду
Помыть второе стекло
Протереть второе стекло
Вылить воду
Пойти домой


Слайд 6 Выполнение (4/4)
Общие ресурсы
Гонки
Если кто-то забыл ведро дома, то

Выполнение (4/4)Общие ресурсыГонкиЕсли кто-то забыл ведро дома, то ведро становится разделяемым

ведро становится разделяемым ресурсом и тут уже придется договариваться.

Либо ждать пока сосед помоет первым и пойти домой позже, либо попробовать использовать одно ведро на два или более окон. Опять приходится договариваться. А если кто-то еще забыл и ребенка, то..

Слайд 7 Шаблоны параллельного программирования
1977 вышла книга «Язык шаблонов. Города.

Шаблоны параллельного программирования1977 вышла книга «Язык шаблонов. Города. Здания. Сооружения.»

Здания. Сооружения.»


Слайд 8 Шаблоны в строительстве

Шаблоны в строительстве

Слайд 9 Шаблоны в строительстве

Шаблоны в строительстве

Слайд 10 Шаблоны в программировании
Adapter
Builder
Decorator
Facade
Flyweight

Task parallelism
Data parallelism
Recursive decomposition
Geometric decomposition
Divide and

Шаблоны в программированииAdapterBuilderDecoratorFacadeFlyweight…Task parallelismData parallelismRecursive decompositionGeometric decompositionDivide and conquereSPMDMaster/Worker…

conquere
SPMD
Master/Worker


Слайд 11 Patterns for parallel programming
Patterns for Parallel
Programming. Mattson,
Sanders, and

Patterns for parallel programmingPatterns for ParallelProgramming. Mattson,Sanders, and Massingill(2005).Есть pdf`ка..

Massingill
(2005).
Есть pdf`ка..


Слайд 12 Начало книги

Начало книги

Слайд 13 Что параллелить?
Вот алгоритм – что можно вычислить параллельно?

Что параллелить?Вот алгоритм – что можно вычислить параллельно?

Слайд 14 Параллелизм задач

Параллелизм задач

Слайд 15 Параллельные задачи

Гибкость
Эффективность
Простота
Что там про окна: если кроме окон

Параллельные задачиГибкостьЭффективностьПростотаЧто там про окна: если кроме окон нужно покрасить парты,

нужно покрасить парты, то можно выполнять эти операции независимо

друг от друга. Ресурсы не пересекаются, последовательность не важна.

Слайд 16 Гибкость (1/3)
Не привязывайтесь к железу

Издали закон, по которому

Гибкость (1/3)Не привязывайтесь к железуИздали закон, по которому окна можно мыть

окна можно мыть только по три человека.
Если окон

десять и родителей десять, что делать?
Если окно одно – двое будут простаивать?


Слайд 17 Гибкость (2/3)
Задачи не должны решать какие данные им

Гибкость (2/3)Задачи не должны решать какие данные им обрабатыватьНапример, приходит в

обрабатывать
Например, приходит в класс мыть десять окон десять человек.

В идеале можно помыть все окна зха время равное мытью одного окна. Но тут Иван Петрович говорит, а дай-к я вымою все окна сам. В принципе все клево, развернулись и пошли домой. Но с точки зрения времени и ресурсов такая задача будет выполнена неэффективно.

Слайд 18 Гибкость (3/3)
Задачи должны уметь считать разные объемы данных

Например

Гибкость (3/3)Задачи должны уметь считать разные объемы данныхНапример у нас три

у нас три окна и один мойщик окон, который

умеет за раз быть сразу два окна. Два он помыл. Но осталось еще одно, которое он мыть не умеет. Что делать? Рисовать окно на стене или оставить его не мытым? Такие задачи неудобно масштабировать.

Слайд 19 Эффективность (1/2)
Задачи должны эффективно использовать ресурсы

В классе десять

Эффективность (1/2)Задачи должны эффективно использовать ресурсыВ классе десять окон. Вспомним алгоритм:

окон. Вспомним алгоритм:
налить ведро
помыть окно
вылить воду
повторить
А теперь окна

заменим на плитки. И вымоем таким образом медицинский кабинет. Время инициализации и очистки ресурсов будет несравненно больше времени полезной работы. Такая задача будет работать неэффективно.

Слайд 20 Эффективность (2/2)
Создавайте независимые задачи

Just “Hello world!”

Эффективность (2/2)Создавайте независимые задачиJust “Hello world!”

Слайд 21 Простота (1/1)
Понятность
Читаемость
Шаблоны ООП
Стили кодирования
Тестирование

Простота (1/1)ПонятностьЧитаемостьШаблоны ООПСтили кодированияТестирование

Слайд 22 Шаблоны параллелизма по задачам

Шаблоны параллелизма по задачам

Слайд 23 Task parallelism (1/2)
Примеры
Ray tracing - вычисление каждого луча

Task parallelism (1/2)ПримерыRay tracing - вычисление каждого луча независимо по данным

независимо по данным и последовательности
Молекулярная физика - движение несвязанных

частиц, слабое взаимодействие
Основные особенности
Задачи связаны с определенными циклами
Список задач в основном известен в начале вычисления
Не обязательно все задачи должны быть выполнены для получения части конечного решения


Слайд 24 Task parallelism (2/2)
Используйте очереди:
RabbitMQ
MSMQ
Amazon SQS
IronMQ
StormMQ
Windows Azure Queues

Task parallelism (2/2)Используйте очереди:RabbitMQMSMQAmazon SQSIronMQStormMQWindows Azure Queues

Слайд 25 Divide and Conquer
Задачи выполняют разные действия
Важна последовательность задач

Divide and ConquerЗадачи выполняют разные действияВажна последовательность задач

Слайд 26 Параллелизм данных

Параллелизм данных

Слайд 27 Параллелизм данных
Основные вычисления выполняются на большом объеме данных;
Одни

Параллелизм данныхОсновные вычисления выполняются на большом объеме данных;Одни и те же

и те же операции применяются в разным частям данных.


Слайд 28 Параллелизм данных
Гибкость
Данные должны хорошо дробиться, чтобы поддерживать высокий

Параллелизм данныхГибкостьДанные должны хорошо дробиться, чтобы поддерживать высокий уровень параллелизмаЭффективностьРазмер данных

уровень параллелизма
Эффективность
Размер данных должен обеспечивать достаточное количество вычислений
Простота
Сложные структуры

данных сложно отлаживать и поддерживать

Слайд 29 Геометрическое разбиение
Хорошо работает на таких типах данных как:
Массив
Список
Справочник

Геометрическое разбиениеХорошо работает на таких типах данных как:МассивСписокСправочник

Слайд 30 Способы геометрического разбиения

Способы геометрического разбиения

Слайд 31 Рекурсивное разбиение
Хорошо работает на таких типах данных как:
Массив
Список
Деревья
Графы
Подсчет

Рекурсивное разбиениеХорошо работает на таких типах данных как:МассивСписокДеревьяГрафыПодсчет среднего возраста по

среднего возраста по каждому континенту
Подсчет среднего возраста по каждой

стране континента
Подсчет среднего возраста по каждому городу страны
Подсчет среднего возраста между городами страны
Подсчет среднего возраста между странами континента
Подсчет среднего возраста между континентами

Слайд 32 Рекурсивное разбиение
Времени меньше: O( log n), вместо O(n)
Вычислений

Рекурсивное разбиениеВремени меньше: O( log n), вместо O(n)Вычислений больше: O( n * log n), вместо O(n)

больше: O( n * log n), вместо O(n)


Слайд 33 Стратегия выполнения

Стратегия выполнения

Слайд 34 Какой стратегии придерживаться
Окна есть, работники есть..
- Чо делать

Какой стратегии придерживатьсяОкна есть, работники есть..- Чо делать то?Если наряду с

то?
Если наряду с окна нужно вымыть пол, то окна

моются в первую очередь, пол во вторую. Можно вымыть окна половину класса и начать мыть там пол, тем временем домывая окна во второй половине, но тогда придется как-то делить ведра.

Слайд 35 SPMD
Single program multiple data
Каждый процесс выполняет одну задачу,

SPMDSingle program multiple dataКаждый процесс выполняет одну задачу, но со своим

но со своим набором данных
Инициализация
Получение идентификатора задачи
Выполнение вычислений
Возврат значения
Завершение

работы

Слайд 36 Master/Worker (1/2)
Мастер
создаёт пул задач и исполнителей. Следит, чтобы

Master/Worker (1/2)Мастерсоздаёт пул задач и исполнителей. Следит, чтобы исполнители работали, а

исполнители работали, а задачи создавались.

Пришла классная руководитель позвонила и

собрала родителей, определила какие окна сегодня нужно мыть, а в конце попросила вымыть окна еще и в соседнем классе. Дождалась, когда все закончат, закрыла класс, пошла домой.

Слайд 37 Master/Worker (2/2)
Исполнитель
Получает задачу из очереди задач
Выполняет задачу
Помечает задачу

Master/Worker (2/2)ИсполнительПолучает задачу из очереди задачВыполняет задачуПомечает задачу как исполненнуюИдемпотентные задачи

как исполненную
Идемпотентные задачи рулят

Послали мыть окна в соседней школе.

Ушел и не вернулся. Повторить?

Послали положить денег на счет. Ушел и не вернулся. Повторить?

Слайд 38 Fork/Join
Похож на Master/Worker
SPMD
Более легковесная версия
Применяется к потокам, а

Fork/JoinПохож на Master/WorkerSPMDБолее легковесная версияПрименяется к потокам, а не процессамЧто там

не процессам
Что там про окна: да ничего. Можете сами

придумать.

Слайд 39 Loop parallelism
Легкий способ ускорения линейной программы
Используйте профилировщик
Есть готовые

Loop parallelismЛегкий способ ускорения линейной программыИспользуйте профилировщикЕсть готовые решения - OpenMP

решения - OpenMP


Слайд 40 Pipeline
Графический конвейер
Обработка команд в процессоре
Shell pipeline
Вася – несет

PipelineГрафический конвейерОбработка команд в процессореShell pipelineВася – несет водуПетя – моет

воду
Петя – моет окно
Света – протирает окно
Коля – уносит

воду

Слайд 41 Event based
Использует другие шаблоны
Примитивы синхронизации – Event
Сложно отлаживать
Используйте

Event basedИспользует другие шаблоныПримитивы синхронизации – EventСложно отлаживатьИспользуйте логированиеТребуется помыть все

логирование
Требуется помыть все окна в школе. Школа не достроена.

Строители периодически что-то ломают и строят заново. Вода периодически перестает течь из кранов. Окна бьют хулиганы из школы, а вставляет дворник на полставки. Вам периодически звонит начальник с работы и жена из дома.

Слайд 42 Стратегии и шаблоны

Стратегии и шаблоны

  • Имя файла: shablony-parallelnogo-proektirovaniya.pptx
  • Количество просмотров: 124
  • Количество скачиваний: 0