Магистратура Донецкого Национального Технического Университета

Факультет вычислительной техники и информатики

Кафедра прикладной математики и информатики

Шаблоны параллельного программирования

Обзор и характеристики

Применимость

Ссылки

Программное обеспечение автоматизированных систем

Индивидуальное задание

Шаблоны параллельного программирования

English version

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

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

За последнее десятилетие было выработано несколько подходов к выявлению общих шаблонов создания параллельных программ, которые и используются в разработке параллельного программного обеспечения. Документирование этих шаблонов (паттернов, patterns) помогает проектировщикам программного обеспечения и программистам путём обеспечения:

  • описания подхода к реализации параллельного выполнения
  • готового решения для общих задач определённого типа
  • руководящей документацией (руководством) решения общих задач распараллеливания

Существующие шаблоны разработки параллельных программ не решают задачу распараллеливания полностью

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

Сущетсвует ограниченное число шаблонов параллельного программирования:

  • Pipeline (конвейер)
  • Master and Slave (хозяин и подчинённый)
  • Divide and Conquer (разделяй и властвуй)
  • Geometric Decomposition (геометрическая декомпозиция)
  • Replicable (воспроизводимый)
  • Repository (хранилище, контейнер)

Долгое время внимание общественности приковано к разработке новых шаблонов параллельного программирования. Однако, новые паттерны либо немного отличаются от существующих, либо вовсе эквивалентны существующим. Источник неэффективности представленных параллельных шаблонов не следует из их ограниченного числа. Он проявляется в связи с негибкостью способа представления этих шаблонов.

Литература:
Separation of Concerns in Parallel Patterns / Resources on Parallel Patterns (PDF, DOC)
Источник: Resources on Parallel Patterns / Pattern Collection / Separation of Concerns in Parallel Patterns

Главная страница