Краткий_Курс (1184371), страница 6
Текст из файла (страница 6)
Шины - пропускная способность 100Мбайт/с для 2 -20 ПЭ (Multimax). Число процессоров в таких системах всегдаограничено.Статические сетиСтатические сети имеют жестко фиксированные соединения, вход и выходзафиксированы без возможности переключения. Наиболее простой топологиейсети является линейка – одномерная сетка. Для обеспечения передачиинформации между несмежными узлам используются транзитные пересылки.Для цепочки из М узлов наиболее медленная пересылка есть пересылка междуконечными ПЭ линейки и она потребует (М-1) транзитных пересылок. Числотаких пересылок для любой статической топологии сети считается ее параметроми называется – диаметром сети.
Если связать конечные ПЭ линейки, то такаятопология - кольцо будет иметь меньший диаметр. Сети могут иметь вид:одномерный линейный массив, двумерное кольцо, звезда, сетка игексагональный массив, дерево, трехмерное полностью связанное хордовоекольцо, 3 -мерный куб, сети из циклически связанных 3-мерных кубов, D мерный массив с топологией гиперкуба, тасовка (совершенная, обменная).Недостаток - необходимость маршрутизации транзитных сообщений. Потопологии гиперкуба, каждое ПЭ связывается со своим ближайшем соседом в nмерном пространстве. У каждого узла в двумерном гиперкубе имеются дваближайших соседа, в трехмерном - три, в четырехмерном - четыре.Динамические сетиДинамическиесетисетисвозможностьюдинамического(коммутируемого) соединения узлов сети друг с другом. Особое место занимаетполный коммутатор.Полный коммутатор обеспечивает полную связность каждого узла в сети,причем, обеспечивает независимость (не блокируемость) пересылок.22Недостаток: высокая стоимость аппаратуры и ограниченная размерность.Перечисленные выше однокаскадные сети обмена содержат фиксированноечисло каскадов или один каскад переключателей.
Многокаскадные сети могутбыть получены комбинацией некоторых однокаскадных сетей и могут составитьконкуренцию полному коммутатору. Например, стандартная сеть Клоша можетиметь нечетное число каскадов и строится из сетей меньших размеров.Трехкаскадная сеть Клоша имеет с Н входами и Н выходами имеет р модулей23. Симметричные мультипроцессорыСистемы данного класса: SMP (Scalable Parallel Processor) состоят из несколькиходнородных процессоров и массива общей памяти (разделяемой памяти – sharedmemory): любой процессор может обращаться к любому элементу памяти. По этойсхеме построены 2,4 процессорные SMP сервера на базе процессоров Intel, НР и т.д., причем процессоры подключены к памяти с помощью общей шины. Системы сбольшим числом процессоров (но не более 32) подключаются к общей памяти,разделенной на блоки, через не блокирующийся полный коммутатор: crossbar.Любой процессор системы получает данное по произвольному адресу памяти заодинаковое время, такая структура памяти называется: UMA - Uniform MemoryAccess (Architecture).
Пример:НР-9000. Дальнейшее масштабирование (увеличениечисла процессоров системы) SMP систем обеспечивается переходом к архитектурепамяти: NUMA - Nоn Uniform Memory Access. По схеме, называемой, этой иногда,кластеризацией SMP, соответствующие блоки памяти двух (или более) серверовсоединяются кольцевой связью, обычно по GCI интерфейсу. При запросе данного,расположенноговне локального с сервере диапазона адресов, это данное покольцевой связи переписывается дублируется в соответствующий блок локальнойпамяти, ту часть его, которая специально отводится для буферизации глобальныхданных и из этого буфера поставляется потребителю.
Эта буферизация прозрачна(невидима) пользователю, для которого вся память кластера имеет сквознуюнумерацию, и время выборки данных, не локальных в сервере, будет равно временивыборки локальных данных при повторных обращениях к глобальному данному,когда оно уже переписано в буфер. Данный аппарат буферизации есть типичнаясхема кэш памяти. Так как к данным возможно обращение из любого процессоракластера, то буферизация, размножениеданных требует обеспечение ихкогерентности.
Когерентность данных состоит в том, что при изменении данного всеего потребители должны получать это значение. Проблема когерентностиусложняется дублированием данных еще и в процессорных кэшах системы.Системы, в которых обеспечена когерентность данных, буферизуемых в кэшах,называются кэш когерентными(cc-cache coherent), аархитектура памятиописываемого кластера: cc- NUMA (cache coherent Nоn Uniform Memory Access).Классической архитектурой принято считать систему SPP1000.24. Статический и динамический способы образования параллельных процессов.23"Процесс - группа ячеек памяти, содержимое которых меняется по определеннымправилам.
Эти правила описываются программой, которую интерпретируетпроцессор." /Цикритзис Д./.Вычислительный процесс можно рассматривать как последовательность командЭВМ, которая работает с данными ей ресурсами. (Задача, задание, процесс, нить,TASK). Так, на микропроцессоре могут работать одновременно нескольконезависимых процессов: счет вычислительной задачи, редактирование текстов и т.д.Далее рассматриваются вычислительные процессы, одновременно выполняющиеся нанескольких процессорах для решения общей задачи. Работа такой задачи можетначинаться с порождения главного процесса, который при работе может порождатьдругие процессы динамически. Эти процессы могут работать параллельно с главной итакже порождать другие процессы.Другим способом порождения процессов является статический способ, когдапроизводится одновременная инициализация на всех процессорах одинаковыхпроцессов (SPMD – Single Program Multiple Data).
Эти процессы опрашиваютсостояние решающего поля и настраиваются на выполнение своей частивычислений.(Они могут узнать: сколько их порождено, свои уникальные, внутренниеимена, и т.д.)Процессы, работающие на равных правах (не вызовы процедур и не процессы,связанные понятиями "главная-подчиненная"), иногда называемые сопроцессами,могут выполняться параллельно и при этом общаться друг с другом - не часто (слабосвязанные процессы).25. Двоичные и общие семафорыПроцессы для своей работы могут использовать логические и физическиересурсы вычислительной системы и ее окружения, причем ресурсы могут быть:поделены между процессами и закреплены постоянно (на все время работы процесса)или использованы всеми или некоторыми процессами по-очереди.
Некоторые ресурсымогут быть общими и допускать параллельное обслуживание процессов. Ресурс,который допускает обслуживание только одного процесса в текущее время,называется критическим ресурсом.Участки программы процесса, в которых происходит обращение к критическимресурсам, называются критическими участками.
Такие участки должны бытьвыполнены в режиме "взаимного исключения", т.е. в каждый момент времени не болеечем один процесс может быть занят выполнением своего, критического относительнонекоторого ресурса, участка. Проблема критического участка - программированиеработы критических участков в режиме взаимного исключения решается с помощьюсемафоров.
Общий семафор - это целочисленная переменная, над которой разрешенытолько две неделимые операции P и V. Аргументом у этих операций являетсясемафор. Определять семантику этих операций можно только для семафоров положительных чисел, или включать и отрицательный диапазон. Операции могутбыть определены так:24P(S) - декремент и анализ семафораS := S-1IF (S < 0) THEN <блокировка текущего процесса>ENDIFV(S) - инкремент семафораS := S+1IF S <= 0 THEN <запустить блокированный процесс>ENDIFP и V операции неделимы: в каждый момент только один процесс можетвыполнять Р или V операцию над данным семафором.Если семафор используется как счетчик ресурсов, то:S >= 1 - есть некоторое количество (S) доступных ресурсов,S = 0 - нет доступного ресурса,S < 0 - один или несколько (S) процессов находятся в очереди к ресурсу.Вводится, также, операция инициализации семафора (присвоение начальногозначения).Общий семафор - избыточный, т.к.
его можно реализовать через двоичныесемафоры, которые принимают только два значения 0,1.Семафоры позволяют:- синхронизировать работу процессов,- управлять распределением ресурсом (использованием положительногодиапазона значений семафора как счетчика ресурсов) ,- организовывать очередь блокированных процессов (отрицательные значениясемафора показывают число блокированных процессов).В системах программирования вводится специальный тип данных, определяющийструктуру семафора, например, SEMAPHOR,SIGNAL,GETA.Использование семафоровbegin integer S; S:=1;parbegintask1: begindo while (true)P(S);<критический участок 1>;V(S);<обычный участок>;enddoend;task2: begindo while (true)P(S);25<критический участок 2>;V(S);<обычный участок>;enddoendparendend26.
Назначение системы МPIГлавные цели создания системы параллельного программирования:Создать интерфейс прикладного программирования для МРР систем;Обеспечить возможность эффективных коммуникаций для коммуникацииточка-точка, коллективных операций, группы процессов.Допускать удобное сопряжение с языками C, Fortran 77, Fortran 90 и C++;Простой способ создания процессов для модели SPMD (одна программаиспользуется для обработки разных данных на разных процессорах);Основные понятия языкаГруппа - упорядоченное (от 0 до ранга группы) множествоидентификаторов процессов Группы служат для указания адресата при посылкесообщений (процесс-адресат специфицируется своим номером в группе),определяют исполнителей коллективных операций.
Являются мощнымсредством функционального распараллеливания - позволяют разделить группупроцессов на несколько подгрупп, каждая из которых должна выполнять своюпараллельную процедуру. При этом существенно упрощается проблемаадресации при использовании параллельных процедур.Контекст - область "видимости" для сообщений, аналогичное областивидимости переменных в случае вложенных вызовов процедур. Сообщения,посланные в некотором контексте, могут быть приняты только в этом жеконтексте. Контексты - также важные средства поддержки параллельныхпроцедур.Коммуникаторы - позволяют ограничить область видимости (жизни,определения) сообщений рамками некоторой группы процессов, т.е. могутрассматриваться как пара - группа и контекст.
Кроме того, они служат и дляцелей оптимизации, храня необходимые для этого дополнительные объекты.Имеются предопределенные коммуникаторы (точнее, создаваемые приинициализации MPI-системы): * MPI_COMM_ALL - все процессы и операциинад группами (локальные, без обмена сообщениями), например, Дай размергруппы. MPI_GROUP_SIZE(IN group, OUT size) Дай номер в группеобратившегося процесса. MPI_GROUP_RANK(IN group, OUT rank)Основные операции - send, receiveОперации могут быть блокирующими и неблокирующими.В операции send задается:26- адрес буфера в памяти;- количество посылаемых элементов;- тип данных каждого элемента;- номер процесса-адресата в его группе;- тег сообщения;- коммуникатор.MPI_SEND(IN start, IN count, IN datatype, IN dest, IN tag, IN comm) Типыданных - свои в MPI, но имеется соответствие между ними и типами Fortranи С.В операции receive задается:- адрес буфера в памяти;- количество принимаемых элементов;- тип данных каждого элемента;- номер процесса-отправителя в его группе;- тег сообщения;- коммуникатор;- ссылка на объект-статус, содержащий необходимую информацию осостоянии и результате операции.Имеется возможность указать "любой отправитель" и "любой тег".Имеется три режима коммуникаций - стандартный, режим готовности исинхронный.В стандартном режиме последовательность выдачи операций send и receiveпроизвольна, операция send завершается тогда, когда сообщение изъято избуфера и он уже может использоваться процессом.В режиме готовности операция send может быть выдана только послевыдачи соответствующей операции receive, иначе программа считаетсяошибочной и результат ее работы неопределен.