Параллельная модель программы предполагает аппаратную архитектуру типа MIMD и операционную систему,
которая поддерживает создание процессов и осуществление коммуникации между ними. В этой модели
параллельная программа может быть представлена направленным графом вида:
Каждый узел графа может представлять собой либо паттерн одиночка (singleton) - один процесс, либо
мульти-процессный паттерн. Узлы графа принимают участие в коммуникациях и синхронизируются
путём передачи сообщений (message passing). Каждый узел графа имеет порты ввода/вывода, которые
используются для соответствующих приёма/передачи данных. Порт вывода одного узла графа соединён с портом
ввода другого узла. Когда узел посылает сообщение на порт вывода, это сообщение достигает порта ввода узла-
адресата. Такая абстракция узлов графа и портов ввода/вывода позволяет модели оставаться независимой от
нижележащей модели передачи сообщений (например, с помощью сокетов).
Узел в графе параллельной программы может представлять группу взаимосвязанных процессов, которые
абстрагирует паттерн проектирования. Только интерфейсные процессы в мульти-процессных узлах графа
могут напрямую обмениваться данными с другими узлами графа. Интерфейсы узлов одинаковы и
неотличимы от интерфейса одиночного процесса. Интерфейсный процесс мульти-процессного паттерна (узла
графа) скрывает внутренние детали структуры и реализации паттерна и представляет интерфейс одиночного
процесса для других узлов графа.
В данном контексте паттерн параллельного программирования можно назвать паттерном
проектирования. Такие паттерны проектирования реализуют общие структуры процессов и взаимодействия
между ними, которые находят свои отражения в параллельных программных системах. Такая техника проектирования и
программирования позволяет разработчикам создавать параллельное программное обеспечение быстро и более легко.
Сложные параллельные программы могут использовать комбинации (композиции) паттернов. При работе с паттерном
проектировщик имеет дело только с присущими конкретному приложению коммуникациями. Все паттерны параллельного
программирования разработаны схожи в том смысле, что обеспечивают конкретную структуру исполняемого процесса и/или
его поведение. Поведение процесса в рамках соответствующего шаблона определяется типом принимаемых сообщений и
способом их обработки.
Литература:
Stephen Siu. Composing parallel applications using design patterns / Resources on Parallel Patterns
(PDF)
Источник: Resources on Parallel Patterns /
Parallel Skeletons and Framework / Composing parallel applications using design patterns
|