3.7 Параметры управления OpenMP и OpenACC
GCC поддерживает расширения OpenMP для языков C, C++ и Fortran с помощью параметра -fopenmp. Аналогично, расширения OpenACC поддерживаются во всех трех языках с помощью параметра -fopenacc. Общие сведения об этих расширениях см. в разделах OpenMP и OpenACC.
-
-foffload=disable -foffload=default-foffload=target-list-
Указывает, для каких целевых платформ выгрузки OpenMP и OpenACC следует генерировать код. По умолчанию, что эквивалентно параметру -foffload=default, код генерируется для всех поддерживаемых целевых платформ выгрузки. Форма -foffload=disable генерирует код только для резервной реализации на хосте, а форма -foffload=target-list — только для указанного списка целевых платформ выгрузки, разделенных запятыми.
Целевые платформы выгрузки задаются во внутреннем формате GCC для триплетов целевых платформ. Чтобы вывести список настроенных целевых платформ выгрузки под
OFFLOAD_TARGET_NAMES, запустите компилятор с параметром -v. -
-foffload-options=options -foffload-options=target-triplet-list=options-
С параметром -foffload-options=options GCC передает указанные options компиляторам для всех включенных целевых платформ выгрузки. Чтобы указать параметры, применяемые только к одной или нескольким конкретным целевым платформам, используйте форму -foffload-options=target-list=options. target-list — это список, разделенный запятыми, в том же формате, что и для параметра -foffload=.
Типичные командные строки:
-foffload-options='-fno-math-errno -ffinite-math-only' \ -foffload-options=nvptx-none=-latomic -foffload-options=amdgcn-amdhsa=-march=gfx906 -
-fopenacc -
Включает обработку директив OpenACC ‘#pragma acc’ в C/C++ и ‘!$acc’ в Fortran со свободным форматом записи, а также ‘!$acc’, ‘c$acc’ и ‘*$acc’ в Fortran с фиксированным форматом записи. Этот параметр подразумевает -pthread, поэтому поддерживается только на целевых платформах, поддерживающих -pthread.
-
-fopenacc-dim=geom -
Задает размеры вычислительных измерений по умолчанию для параллельных областей выгрузки, в которых они не указаны явно. Значение geom представляет собой тройку размеров, разделенных символом ‘:’, в порядке gang, worker и vector. Размер можно не указывать, чтобы использовать значение по умолчанию для конкретной целевой платформы.
-
-fopenmp -
Включает обработку директив OpenMP ‘#pragma omp’, ‘[[omp::directive(...)]]’, ‘[[omp::decl(...)]]’ и ‘[[omp::sequence(...)]]’ в C/C++. В Fortran включает обработку ‘!$omp’ и маркера условной компиляции ‘!$’. В Fortran с фиксированным форматом исходного кода маркеры также могут начинаться с ‘c’ или ‘*’.
Этот параметр подразумевает -pthread, поэтому поддерживается только на целевых платформах, поддерживающих -pthread. Параметр -fopenmp подразумевает -fopenmp-simd.
-
-fopenmp-simd -
Включает обработку
simd,declare simd,declare reduction,assume,ordered,scanи директивыloopOpenMP, а также комбинированных или составных директив, содержащихsimdв качестве компонента, с#pragma omp,[[omp::directive(...)]],[[omp::sequence(...)]]и[[omp::decl(...)]]в C/C++ и!$ompв Fortran. Кроме того, включается маркер условной компиляции ‘!$’ в Fortran. В Fortran с фиксированным форматом исходного кода маркеры также могут начинаться с ‘c’ или ‘*’. Остальные директивы OpenMP игнорируются. Если дополнительно не указан параметр -fopenmp, областьloopпривязывается к текущей области задачи независимо от указанной клаузулыbind. -
-fopenmp-target-simd-clone -fopenmp-target-simd-clone=device-type-
Помимо создания SIMD-клонов для функций, помеченных директивой
declare simd, при включенном этом параметре GCC также создает клоны для функций, помеченных директивой OpenMPdeclare target, пригодные для векторизации. Значение device-type может быть одним из следующих:none,host,nohostиany, что соответствует ключевым словам для клаузулыdevice_typeдирективыdeclare target; клоны создаются для пересечения указанных устройств. Параметр -fopenmp-target-simd-clone эквивалентен -fopenmp-target-simd-clone=any, а -fno-openmp-target-simd-clone эквивалентен -fopenmp-target-simd-clone=none.При -O2 и выше (но не при -Os или -Og) по умолчанию используется параметр -fopenmp-target-simd-clone=nohost; в остальных случаях оптимизация по умолчанию отключена.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/OpenMP-and-OpenACC-Options.html