Содержание
- 2. Этапы разработки параллельной программы
- 3. Поиск параллельности (1/4) Задача – помыть окна в кабинете. Вы приходите – один. Окон десять. Нужно
- 4. Выбор шаблона реализации (2/4) Проектирование структуры параллельной программы Закладывается возможность масштабирования Выбор инструментов реализации Отдельно задачи,
- 5. Реализация алгоритма (3/4) Синхронизация Взаимодействие Если пришло достаточное количество народу, то вам нужно договориться один раз,
- 6. Выполнение (4/4) Общие ресурсы Гонки Если кто-то забыл ведро дома, то ведро становится разделяемым ресурсом и
- 7. Шаблоны параллельного программирования 1977 вышла книга «Язык шаблонов. Города. Здания. Сооружения.»
- 8. Шаблоны в строительстве
- 9. Шаблоны в строительстве
- 10. Шаблоны в программировании Adapter Builder Decorator Facade Flyweight … Task parallelism Data parallelism Recursive decomposition Geometric
- 11. Patterns for parallel programming Patterns for Parallel Programming. Mattson, Sanders, and Massingill (2005). Есть pdf`ка..
- 12. Начало книги
- 13. Что параллелить? Вот алгоритм – что можно вычислить параллельно?
- 14. Параллелизм задач
- 15. Параллельные задачи Гибкость Эффективность Простота Что там про окна: если кроме окон нужно покрасить парты, то
- 16. Гибкость (1/3) Не привязывайтесь к железу Издали закон, по которому окна можно мыть только по три
- 17. Гибкость (2/3) Задачи не должны решать какие данные им обрабатывать Например, приходит в класс мыть десять
- 18. Гибкость (3/3) Задачи должны уметь считать разные объемы данных Например у нас три окна и один
- 19. Эффективность (1/2) Задачи должны эффективно использовать ресурсы В классе десять окон. Вспомним алгоритм: налить ведро помыть
- 20. Эффективность (2/2) Создавайте независимые задачи Just “Hello world!”
- 21. Простота (1/1) Понятность Читаемость Шаблоны ООП Стили кодирования Тестирование
- 22. Шаблоны параллелизма по задачам
- 23. Task parallelism (1/2) Примеры Ray tracing - вычисление каждого луча независимо по данным и последовательности Молекулярная
- 24. Task parallelism (2/2) Используйте очереди: RabbitMQ MSMQ Amazon SQS IronMQ StormMQ Windows Azure Queues
- 25. Divide and Conquer Задачи выполняют разные действия Важна последовательность задач
- 26. Параллелизм данных
- 27. Параллелизм данных Основные вычисления выполняются на большом объеме данных; Одни и те же операции применяются в
- 28. Параллелизм данных Гибкость Данные должны хорошо дробиться, чтобы поддерживать высокий уровень параллелизма Эффективность Размер данных должен
- 29. Геометрическое разбиение Хорошо работает на таких типах данных как: Массив Список Справочник
- 30. Способы геометрического разбиения
- 31. Рекурсивное разбиение Хорошо работает на таких типах данных как: Массив Список Деревья Графы Подсчет среднего возраста
- 32. Рекурсивное разбиение Времени меньше: O( log n), вместо O(n) Вычислений больше: O( n * log n),
- 33. Стратегия выполнения
- 34. Какой стратегии придерживаться Окна есть, работники есть.. - Чо делать то? Если наряду с окна нужно
- 35. SPMD Single program multiple data Каждый процесс выполняет одну задачу, но со своим набором данных Инициализация
- 36. Master/Worker (1/2) Мастер создаёт пул задач и исполнителей. Следит, чтобы исполнители работали, а задачи создавались. Пришла
- 37. Master/Worker (2/2) Исполнитель Получает задачу из очереди задач Выполняет задачу Помечает задачу как исполненную Идемпотентные задачи
- 38. Fork/Join Похож на Master/Worker SPMD Более легковесная версия Применяется к потокам, а не процессам Что там
- 39. Loop parallelism Легкий способ ускорения линейной программы Используйте профилировщик Есть готовые решения - OpenMP
- 40. Pipeline Графический конвейер Обработка команд в процессоре Shell pipeline Вася – несет воду Петя – моет
- 41. Event based Использует другие шаблоны Примитивы синхронизации – Event Сложно отлаживать Используйте логирование Требуется помыть все
- 42. Стратегии и шаблоны
- 44. Скачать презентацию