На этом шаге мы рассмотрим особенности этого стандарта.
OpenMP (Open specifications for Multi-Processing) - стандарт для написания параллельных программ для многопроцессорных вычислительных систем с общей оперативной памятью. Программа представляется как набор потоков (нитей), объединенных общей памятью, где проблема синхронизации решается введением критических секций и мониторов. Разработкой стандарта занимается организация OpenMP ARB (ARchitecture Board), в которую вошли представители крупнейших компаний-разработчиков SMP-архитектур (Symmetric Multiprocessing) и программного обеспечения. Основными алгоритмическими языками параллельного программирования с использованием OpenMP в настоящее время являются Fortran и C/C++. Спецификации для языков Fortran и C/C++ появились соответственно в октябре 1997 г. и октябре 1998 г. OpenMP - это набор специальных директив компилятору, библиотечных функций и переменных среды. Наиболее оригинальны директивы компилятору, которые используются для обозначения областей в коде с возможностью параллельного выполнения. Компилятор, поддерживающий OpenMP, преобразует исходный код и вставляет соответствующие вызовы функций для параллельного выполнения этих областей кода.
В настоящее время OpenMP поддерживается большинством разработчиков параллельных вычислительных систем: компаниями Intel, Hewlett-Packard, Silicon Graphics, Sun, IBM, Fujitsu, Hitachi, Siemens, Bull и другими. Многие известные компании в области разработки системного программного обеспечения также уделяют значительное внимание разработке системного программного обеспечения с OpenMP. Значительное число компаний и научно-исследовательских организаций, разрабатывающих прикладное программное обеспечение, в настоящее время использует OpenMP при разработке своих программных продуктов. Среди этих компаний и организаций отметим ANSYS, Fluent, Oxford Molecular, NAG, DOE ASCI, Dash, Livermore Software, а также и российские компании ТЕСИС, Центральную геофизическую экспедицию и российские научно-исследовательские организации, такие как Институт математического моделирования РАН, Институт прикладной математики им. Келдыша РАН, Вычислительный центр РАН, Научно-исследовательский вычислительный центр МГУ, Институт химической физики РАН и другие.
Использовать технологию OpenMP целесообразно в следующих случаях:
В то же время следует признать, что OpenMP имеет свои недостатки. Эта технология ориентирована в первую очередь на разработчиков высокопроизводительных вычислительных систем и наиболее эффективна, если код включает много циклов и работает с разделяемыми массивами данных.
На следующем шаге мы рассмотрим схему программирования в OpenMP.