Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, А.Н. Томилин - Операционные системы - взаимодействие процессов (2008) (1114653), страница 28
Текст из файла (страница 28)
Он закрывает новый сокет ипродолжает прослушивать старый */close(newsockfd);}}7.2 Среда параллельного программирования MPIЕще одним программным механизмом, позволяющиморганизовать взаимодействие параллельных процессов внезависимости от их взаимного расположения (т.е. исполняются лиони на одной машине (процессоре) или на разных), являетсябиблиотека MPI.Как следует из ее названия30, библиотека MPI представляетсобой набор функций, позволяющих программисту организоватьобмен данными между процессами в терминах передачи сообщений.При этом ответственность за то, чтобы этот обмен был реализованоптимальнымобразом,взависимостиотконкретнойвычислительной системы, на которой исполняется приложение, и отвзаимного расположения обменивающихся процессов, ложится насаму библиотеку.
Например, очевидно, что для процессов,30MPI – сокращение от Message Passing Interface, т.е. «Механизм (или интерфейс)передачи сообщений»176исполняющихся на одном процессоре, наиболее эффективной будетреализация с использованием разделяемой памяти, в то время как вслучае исполнения процессов на разных процессорах могутиспользоваться сокеты или другие механизмы (подробнее обособенностях различных архитектур мы поговорим чуть ниже).Такимобразом,MPIпредставляетсобойболеевысокоуровневоесредствопрограммирования,нежелирассмотренные выше механизмы, такие как сокеты и разделяемаяпамять, и в то же время в реализации библиотеки MPI могутиспользоваться все эти средства.Кроме того, важно отметить, что в отличие от всехрассмотренных выше средств, MPI предоставляет возможностьсоздавать эффективные программы, не только для работы вусловиях псевдопараллелизма, когда параллельные процессы вреальности исполняются на единственном процессоре, но и длявыполнения на многопроцессорных системах с реальнымпараллелизмом.7.2.1 Краткий обзор параллельных архитектурПрежде чем вдаваться в детали программирования дляпараллельных архитектур, рассмотрим на примерах некоторыеособенности, общие для всего многообразия этих систем, и дадимнекоторую их классификацию.Очевидно, что главное отличие любой параллельнойвычислительной системы от классической фон-неймановскойархитектуры заключается в наличии нескольких процессоров, накоторых одновременно могут выполняться независимые иливзаимодействующие между собой задачи.
При этом параллельноработающие процессы конкурируют между собой за остальныересурсы системы, а также могут осуществлять взаимодействиеаналогично тому, как это происходит в однопроцессорной системе.Рассматриваяподробнееособенностиразличныхмногопроцессорных систем, мы обратим особое внимание на темеханизмы, которые позволяют организовать на них взаимодействиепараллельных процессов.Основным параметром, позволяющим разбить все множествомногопроцессорных архитектур на некоторые классы, являетсядоступ к памяти.
Существуют системы с общей памятью,обладающие определенным массивом блоков памяти, которыеодинаково доступны всем процессорам, и системы сраспределенной памятью, в которых у каждого процессора177имеется в наличии только локальная память, доступ в которуюдругих процессоров напрямую невозможен.
Существует ипромежуточный вариант между этими двумя классами – это такназываемые системы с неоднородным доступом к памяти, илиNUMA-системы. Далее мы подробнее остановимся на каждом изэтих классов архитектур.Системы с распределенной памятью – MPPПримером системы с распределенной памятью может служитьмассивно-параллельная архитектура – MPP31. Массивнопараллельные системы состоят из однородных вычислительныхузлов, каждый из которых включает в себя:- один или несколько процессоров- локальную память, прямой доступ к которой с другихузлов невозможен- коммуникационный процессор или сетевой адаптер- устройства ввода/выводаСхема MPP системы, где каждый вычислительный узел (ВУ)имеет один процессорный элемент (например, RISC-процессор,одинаковый для всех ВУ), память и коммуникационное устройство,изображена на рисунке.коммуникац.устр-воЦППамятьВУкоммуникац.устр-воЦППамятьВУЦППамятьЦППамятькоммуникац.устр-воУправляющийузел (узлы)ВУкоммуникац.устр-воУзел (узлы)ввода-выводаВУРис.
26 Архитектура MPP.Помимо вычислительных узлов, в систему могут входитьспециальные узлы ввода-вывода и управляющие узлы. Узлы связанымежду собой посредством высокоскоростной среды передачи31Аббревиатура MPP представляет собой сокращение от «Massive Parallel Processing»178данных определенной топологии. Число процессоров в MPPсистемах может достигать нескольких тысяч.Поскольку в MPP-системе каждый узел представляет собойотносительно самостоятельную единицу, то, как правило,управлениемассивно-параллельнойсистемойвцеломосуществляется одним из двух способов:1.
на каждом узле может работать полноценная операционнаясистема, функционирующая отдельно от других узлов. Приэтом, разумеется, такая ОС должна поддерживатьвозможность коммуникации с другими узлами в соответствиис особенностями данной архитектуры;2. «полноценная» ОС работает только на управляющей машине,а на каждом из узлов MPP-системы работает некоторыйсильно «урезанный» вариант ОС, обеспечивающий работузадач на данном узле.Вмассивно-параллельнойархитектуреотсутствуетвозможность осуществлять обмен данными между ВУ напрямуючерез память, поэтому взаимодействие между процессорамиреализуется с помощью аппаратно и программно поддерживаемогомеханизма передачи сообщений между ВУ. Соответственно, ипрограммы для MPP-систем обычно создаются в рамках моделипередачи сообщений.Системы с общей памятью – SMPВ качестве наиболее распространенного примера систем собщей памятью рассмотрим архитектуру SMP32 – симметричнуюмультипроцессорную систему.
SMP-системы состоят изнескольких однородных процессоров и массива общей памяти,который обычно состоит из нескольких независимых блоков. Слово«симметричный» в названии данной архитектуры указывает на то,что все процессоры имеют доступ напрямую (т.е. возможностьадресации) к любой точке памяти, причем доступ любогопроцессора ко всем ячейкам памяти осуществляется с одинаковойскоростью.
Общая схема SMP-архитектуры изображена на Рис. 27.32Аббревиатура SMP является сокращением фразы «Symmetric Multi Processing»179Общая памятьВысокоскоростная среда передачи данныхЦПЦП.…..ЦПЦПРис. 27 Архитектура SMP.Процессоры подключены к памяти либо с помощью общейшины, либо с помощью коммутатора. Отметим, что в любой системес общей памятью возникает проблема кэширования: так как кнекоторой ячейке общей памяти имеет возможность обратитьсякаждый из процессоров, то вполне возможна ситуация, когданекоторое значение из этой ячейки памяти находится в кэше одногоили нескольких процессоров, в то время как другой процессоризменяет значение по данному адресу. В этом случае, очевидно,значения, находящиеся в кэшах других процессоров, больше немогут быть использованы и должны быть обновлены.
В SMPархитектурах обычно согласованность данных в кэшахподдерживается аппаратно.Очевидно, что наличие общей памяти в SMP-архитектурахпозволяет эффективно организовать обмен данными междузадачами,выполняющимисянаразныхпроцессорах,сиспользованием механизма разделяемой памяти. Однако сложностьорганизации симметричного доступа к памяти и поддержаниясогласованности кэшей накладывает существенное ограничение наколичество процессоров в таких системах – в реальности их числообычно не превышает 32 – в то время, как стоимость таких машинвесьмавелика.Некоторымкомпромиссоммеждумасштабируемостью и однородностью доступа к памяти являютсяNUMA-архитектуры, которые мы рассмотрим далее.Системы с неоднородным доступом к памяти – NUMAСистемы с неоднородным доступом к памяти (NUMA33)представляют собой промежуточный класс между системами собщей и распределенной памятью. Память в NUMA-системахявляется физически распределенной, но логически общедоступной.33Аббревиатура NUMA расшифровывается как «Non-Unified Memory Access», что вбуквальном переводе и означает «неоднородный доступ к памяти».
Часто используется такжеобозначение «ccNUMA», что означает «cache-coherent NUMA», или система с неоднороднымдоступом к памяти с поддержкой когерентности (т.е. согласованности) кэшей180Это означает, что каждый процессор может адресовать как своюлокальную память, так и память, находящуюся на других узлах,однако время доступа к удаленным ячейкам памяти будет внесколько раз больше, нежели время доступа к локальной памяти.Заметим, что единой адресное пространство и доступ к удаленнойпамятиподдерживаютсяаппаратно.Обычноаппаратноподдерживается и когерентность (согласованность) кэшей во всейсистемеСистемы с неоднородным доступом к памяти строятся изоднородных базовых модулей, каждый из которых содержитнебольшое число процессоров и блок памяти.
Модули объединенымежду собой с помощью высокоскоростного коммутатора. Обычновся система работает под управлением единой ОС. Посколькулогически программисту предоставляется абстракция общей памяти,то модель программирования, используемая в системах NUMA,обычно в известной степени аналогична той, что используется насимметричных мультипроцессорных системах, и организациямежпроцессного взаимодействия опирается на использованиеразделяемой памяти.Масштабируемость NUMA-систем ограничивается объемомадресного пространства, возможностями аппаратуры поддержкикогерентности кэшей и возможностями операционной системы поуправлению большим числом процессоров.Кластерные системыОтдельным подклассом систем с распределенной памятьюявляются кластерные системы, которые представляют собойнекоторый аналог массивно-параллельных систем, в котором вкачестве ВУ выступают обычные рабочие станции общегоназначения, причем иногда узлы кластера могут даже одновременноиспользоваться в качестве пользовательских рабочих станций.Кластер, объединяющий компьютеры разной мощности или разнойархитектуры, называют гетерогенным (неоднородным).
Для связиузлов используется одна из стандартных сетевых технологий,например, Fast Ethernet.Главными преимуществами кластерных систем, благодарякоторым они приобретают все большую популярность, являются ихотносительная дешевизна,возможность масштабированияивозможность использования при построении кластера техвычислительных мощностей, которые уже имеются в распоряжениитой или иной организации.181При программировании для кластерных систем, как и длядругих систем с распределенной памятью, используется модельпередачи сообщений.7.2.2 Модель программирования MPIКак мы видим, при написании программ для параллельныхархитектур выбор модели программирования сильно зависит отконкретной архитектуры, на которой предполагается выполнятьпрограмму. Например, если целевой архитектурой является системас общей памятью, то для обмена данными между процессамицелесообразно использовать механизм разделяемой памяти, если жепрограмма пишется для работы на системе с распределеннойпамятью, то необходимо организовывать обмен с помощьюсообщений.