Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Processes - Metodicka (edited) with MPI - last....doc
Скачиваний:
59
Добавлен:
22.12.2018
Размер:
1.59 Mб
Скачать
    1. Среда параллельного программирования mpi

Еще одним программным механизмом, позволяющим организовать взаимодействие параллельных процессов вне зависимости от их взаимного расположения (т.е. исполняются ли они на одной машине (процессоре) или на разных), является библиотека MPI.

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

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

Кроме того, важно отметить, что в отличие от всех рассмотренных выше средств, MPI предоставляет возможность создавать эффективные программы, не только для работы в условиях псевдопараллелизма, когда параллельные процессы в реальности исполняются на единственном процессоре, но и для выполнения на многопроцессорных системах с реальным параллелизмом.

      1. Краткий обзор параллельных архитектур.

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

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

Основным параметром, позволяющим разбить все множество многопроцессорных архитектур на некоторые классы, является доступ к памяти. Существуют системы с общей памятью, обладающие определенным массивом блоков памяти, которые одинаково доступны всем процессорам, и системы с распределенной памятью, в которых у каждого процессора имеется в наличии только локальная память, доступ в которую других процессоров напрямую невозможен. Существует и промежуточный вариант между этими двумя классами – это так называемые системы с неоднородным доступом к памяти, или NUMA-системы. Далее мы подробнее остановимся на каждом из этих классов архитектур.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]