Поддержка OpenMP¶
Поддержка:
Стандарт OpenMP 3.1
Языки C, C++, Fortran
Ограничения:
Для e2k не поддержано в режиме
-mptr128Nested параллелизм не поддержан. Если при исполнении уже распараллеленного цикла встречаются циклы, которые нужно распараллелить, то эти (вложенные) циклы будут исполняться последовательно
Не поддержан clause
collapseДля C/C++ после директивы
#pragma ompвсегда должен следовать statement языка. Проблемы могут возникнуть для#pragma omp barrierи#pragma omp flush, если за ними нет statement’а. Для обхода проблемы рекомендуется в следующей строке поставить пустой statement, например “0;” или “;”Переменные, перечисленные в clause’ах
private,lastprivate,firstprivateиthreadprivateдолжны иметь скалярный базовый тип или массив скалярного базового типа. В противном случае результат программы неопределенДиректива
#pragma omp forне поддержана для итераторов C++Для C/C++ clause’ы
ifиnum_threadsсвоими параметрами могут иметь только константы и переменные целого типа, выражения не допускаютсяПеременная окружения
GOMP_CPU_AFFINITYне поддерживаетсяДля С/С++ не желательно использование вызова функции в качестве верхней границы цикла, стоящего под директивой
#pragma omp for. В некоторых случаях это может приводить к ошибке распознавания переменной циклаClause
default(none)игнорируетсяДля Fortran не поддерживаются массивы в clause
reduction
