Next:2.2. Системы с распределенной памятью
Up:2. КРАТКАЯ ХАРАКТЕРИСТИКА СРЕДСТВ ПРОГРАММИРОВАНИЯ МНОГОПРОЦЕССОРНЫХ СИСТЕМ
Prev:2. КРАТКАЯ ХАРАКТЕРИСТИКА СРЕДСТВ ПРОГРАММИРОВАНИЯ МНОГОПРОЦЕССОРНЫХ СИСТЕМ

2.1. Системы с общей памятью

К системам этого типа относятся SMP компьютеры, NUMA системы и мультипроцессорные векторно-конвейерные компьютеры. Все процессоры в компьютерах этого типа работают под управлением единой UNIX-подобной операционной системы, поддерживающей, как правило, механизм порождения нитей (threads) - легковесных процессов, которые система автоматически распределяет по процессорам. В языке программирования C возможно прямое использование этого механизма для распараллеливания программ, а в компиляторах с языка FORTRAN этот механизм используется либо для автоматического распараллеливания, либо в режиме задания распараллеливающих директив компилятору.

Все производители симметричных мультипроцессорных систем в той или иной мере поддерживают стандарт POSIX Pthread и включают в программное обеспечение распараллеливающие компиляторы для популярных языков программирования или предоставляют какой-либо механизм для распараллеливания программ. В частности, многие поставщики компьютеров SMP-архитектур (Sun, HP, SGI) в своих компиляторах поддерживают специальные директивы для распараллеливания циклов. Однако, эти наборы директив, как правило, во-первых, весьма ограничены и, во-вторых, несовместимы между собой. В результате этого разработчикам приходится распараллеливать прикладные программы отдельно для каждой платформы.

В последние годы все более популярной становится система программирования OpenMP [5], являющаяся во многом обобщением и расширением этих наборов директив. Интерфейс OpenMP задуман как стандарт для программирования в модели общей памяти. В стандарт OpenMP входят спецификации набора директив компилятору, процедур и переменных среды. По сути дела, он реализует идею "инкрементального распараллеливания", позаимствованную из языка HPF (High Performance Fortran)[8]. Разработчик не создает новую параллельную программу, а просто добавляет в текст последовательной программы OpenMP-директивы. При этом система программирования OpenMP предоставляет разработчику большие возможности по контролю над поведением параллельного приложения. Предполагается, что OpenMP-программа без какой либо модификации должна работать как на многопроцессорных системах, так и на однопроцессорных. В последнем случае директивы просто игнорируются [6].




Next:2.2. Системы с распределенной памятью
Up:2. КРАТКАЯ ХАРАКТЕРИСТИКА СРЕДСТВ ПРОГРАММИРОВАНИЯ МНОГОПРОЦЕССОРНЫХ СИСТЕМ
Prev:2. КРАТКАЯ ХАРАКТЕРИСТИКА СРЕДСТВ ПРОГРАММИРОВАНИЯ МНОГОПРОЦЕССОРНЫХ СИСТЕМ