Поддержка OpenMP

  1. Поддержка:

    • Стандарт OpenMP 3.1

    • Языки C, C++, Fortran

  2. Ограничения:

    • 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 своими параметрами могут иметь только константы и переменные целого типа, выражения не допускаются