Н., Пескова Е. Е., Шаманаев П. А. Основы параллельного программирования с использованием технологий mpi и openmp учебное пособие саранск издательство свмо 2013 2



Pdf көрінісі
бет4/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   2   3   4   5   6   7   8   9   ...   53
ParProg MPI OpenMP

1.1. Системы с общей памятью 
К системам этого типа относятся компьютеры с SMP архитектурой, 
различные разновидности NUMA систем и мультипроцессорные 
векторно-конвейерные компьютеры [4,7]. Характерным словом для этих 
компьютеров является “единый”: единая оперативная память, единая 
операционная система, единая подсистема ввода-вывода. Только 
процессоры образуют множество. Каждая пользовательская программа 
также запускается как отдельный процесс. Операционная система сама 
распределяет 
процессы 
по 
процессорам. 
В 
принципе, 
для 
распараллеливания программ можно использовать механизм порождения 
процессов. Однако этот механизм не очень удобен, поскольку каждый 
процесс функционирует в своем адресном пространстве, и основное 
достоинство этих систем – общая память – не может быть использован 
простым и естественным образом. Для распараллеливания программ 
используется механизм порождения нитей (threads) – легковесных 
процессов, для которых не создается отдельного адресного пространства, 
но которые на многопроцессорных системах также распределяются по 
процессорам [1,9].
В последние годы все более популярной становится система 
программирования OpenMP, являющаяся во многом обобщением и 
расширением этих наборов директив. Интерфейс OpenMP задуман как 
стандарт для программирования в модели общей памяти. В OpenMP 
входят спецификации набора директив компилятору, процедур и 
переменных среды. Разработчик не создает новую параллельную 
программу, а просто добавляет в текст последовательной программы 
OpenMP-директивы. При этом система программирования OpenMP 
предоставляет разработчику большие возможности по контролю над 
поведением параллельного приложения. Вся программа разбивается на 
последовательные и параллельные области. Все последовательные 
области выполняет главная нить, порождаемая при запуске программы, а 
при 
входе 
в 
параллельную 
область 
главная 
нить 
порождает 



дополнительные нити. Предполагается, что OpenMP-программа без какой-
либо модификации должна работать как на многопроцессорных системах, 
так и на однопроцессорных. В последнем случае директивы OpenMP 
просто игнорируются. Следует отметить, что наличие общей памяти не 
препятствует 
использованию 
технологий 
программирования, 
разработанных для систем с распределенной памятью [3,6,13].


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   53




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет