Поддержка OpenMP¶
Поддержка:
Для C/C++: стандарт OpenMP 4.5
Для Fortran: стандарт OpenMP 4.0
Ограничения:
Nested параллелизм не поддержан. Если при исполнении уже распараллеленного цикла встречаются циклы, которые нужно распараллелить, то эти (вложенные) циклы будут исполняться последовательно
Clause
collapseпо умолчанию игнорируется, но поддерживается по опции-fopenmp-collapseДля C/C++ после директивы
#pragma ompвсегда должен следовать statement языка. Проблемы могут возникнуть для#pragma omp barrierи#pragma omp flush, если за ними нет statement’а. Для обхода проблемы рекомендуется в следующей строке поставить пустой statement, например “0;” или “;”Переменные, перечисленные в clause’ах
private,lastprivate,firstprivateиthreadprivateдолжны иметь скалярный базовый тип или массив скалярного базового типа. В противном случае результат программы неопределенДиректива
#pragma omp forне поддержана для итераторов C++Не поддержаны (игнорируются) target-конструкции
Не поддерживается (приводит к ошибке исполнения программы) использование OpenMP из дочернего потока, созданного не конструкцией OpenMP
