Spec-Zone.ru › GCC 15

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 и директивы loop OpenMP, а также комбинированных или составных директив, содержащих 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 также создает клоны для функций, помеченных директивой OpenMP declare 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API