45
3. ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ С
ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ OPENMP
3.1 Введение в технологию OpenMP
Технология OpenMP является одним из
наиболее популярных
средств программирования для компьютерных систем с общей памятью,
базирующихся на традиционных языках программирования. OpenMP
состоит из набора директив для компиляторов и библиотек специальных
функций [1,4,5].
Разработкой стандарта занимается
организация OpenMP ARB
(ARchitecture Board), в которую вошли представители крупнейших
компаний - разработчиков SMP-архитектур и программного обеспечения.
Спецификации для языков Fortran и C/C++ появились соответственно в
октябре 1997 года и октябре 1998 года.
До появления OpenMP не было подходящего стандарта для
эффективного программирования на SMP-системах.
Наиболее гибким,
переносимым
и
общепринятым
интерфейсом
параллельного
программирования является MPI (интерфейс передачи сообщений).
Однако модель передачи сообщений 1) недостаточно эффективна на SMP-
системах; 2) относительно сложна в освоении, так как требует мышления
в "невычислительных" терминах.
Проект стандарта X3H5 провалился, так как был предложен во время
всеобщего интереса к MPP-системам, а также из-за того, что в нем
поддерживается только параллелизм на уровне циклов. OpenMP развивает
многие идеи X3H5.
POSIX-интерфейс для организации нитей (Pthreads) поддерживается
широко (практически на всех UNIX-системах),
однако по многим
причинам
не
подходит
для
практического
параллельного
программирования:
- нет поддержки Fortran-а
- слишком низкий уровень
- нет поддержки параллелизма по данным
- механизм нитей изначально разрабатывался не для целей
организации параллелизма.
OpenMP можно рассматривать как высокоуровневую надстройку над
Pthreads (или аналогичными библиотеками нитей).
Многие поставщики SMP-архитектур (Sun,HP,SGI) в
своих
компиляторах поддерживают спецдирективы для распараллеливания
циклов. Однако эти наборы директив, как правило,
весьма ограничены и
несовместимы между собой, в результате чего разработчикам приходится
распараллеливать приложение отдельно для каждой платформы. OpenMP
46
является во многом обобщением и расширением упомянутых наборов
директив.
В настоящее время OpenMP поддерживается большинством
разработчиков параллельных вычислительных систем:
компаниями Intel,
Hewlett-Packard, Silicon Graphics, Sun, IBM, Fujitsu, Hitachi, Siemens, Bull и
другими. Многие известные компании в области разработки системного
программного обеспечения такие, как Intel, KAI, PGI, PSR, APR, Absoft,
также
уделяют
значительное
внимание
разработке
системного
программного обеспечения с OpenMP.
Одним из важных достоинств
технологии OpenMP является
реализация
идеи
«инкрементального
программирования»,
когда
разработчик постепенно находит участки в программе, содержащие
ресурс параллелизма, с помощью предоставляемых механизмов делает их
параллельными и затем переходит к анализу следующих участков. Таким
образом данный подход упрощает процесс адаптации последовательных
программ к параллельным ЭВМ.
OpenMP может использоваться совместно с другими
технологиями
параллельного программирования, например, с MPI. Обычно в этом
случае MPI используется для распределения работы между несколькими
вычислительными
узлами,
а
OpenMP
затем
используется
для
распараллеливания на одном узле.
Достарыңызбен бөлісу: