Поддержка OpenMP¶
Поддержка:
Стандарт OpenMP 4.0
Языки C, C++, Fortran
Ограничения:
Nested параллелизм не поддержан. Если при исполнении уже распараллеленного цикла встречаются циклы, которые нужно распараллелить, то эти (вложенные) циклы будут исполняться последовательно
Не поддержан 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,num_teams,thread_limit,priority,schedule,dist_scheduleиfinalмогут содержать только следующие операторы: арифметические, логические, сравнения, побитового сдвига, разыменование указателя (*a), обращение к полю структуры (a.b)Не поддержаны (игнорируются) target-конструкции.
Не поддерживается (приводит к ошибке исполнения программы) использование OpenMP из дочернего потока, созданного не конструкцией OpenMP
