Введение
Википедия: "OpenMP -- открытый стандарт для распараллеливания программ на языках Си, Си++ и Фортран"
OpenMP представляет собой стандарт (уже несколько поколений стандарта) на средства разработки параллельных программ для систем с общей памятью. Основное средство задания параллелизма в OpenMP -- это директивы компилятора, указывающие на возможность параллельного исполнения итераций циклов в программах на Си, С++, Фортране, т.е. возможность распараллеливания циклов. Также существуют средства для задания параллелизма задач. Параллельное исполнение осуществляется в потоках, потоки имеют общий доступ к ресурсам процесса исполняющейся программы: памяти, таблице открытых файлов и т.п.
Стандарт OpenMP поддерживается современными компиляторами языков Си, С++, Фортран. Компиляторы предусматривают соответствующие опции командной строки. Например, программу с директивами OpenMP можно скомпилировать с помощью компилятора gcc так:
$gcc -fopenmp myopenmpprogram.cОсновные проблемы в OpenMP-программах случаются из-за некорректного использования объектов в общей памяти несколькими потоками.
Официальный сайт
Стандарты OpenMP доступны на сайте http://openmp.org
Краткий обзор стандарта 3.1: тут
Материалы
- Типичные ошибки в OpenMP-программах http://software.intel.com/en-us/articles/32-openmp-traps-for-c-developers/