Spec-Zone.ru › GCC 15

3.20.35 Параметры Nvidia PTX

Для Nvidia PTX определены следующие параметры:

-m64

Игнорируется, но сохраняется для обратной совместимости. Поддерживается только 64-разрядный ABI.

-march=architecture-string

Генерировать код для указанной целевой архитектуры PTX ISA. Допустимые строки архитектур: ‘sm_30’, ‘sm_35’, ‘sm_37’, ‘sm_52’, ‘sm_53’, ‘sm_61’, ‘sm_70’, ‘sm_75’, ‘sm_80’ и ‘sm_89’. Значение по умолчанию зависит от конфигурации компилятора; см. --with-arch.

Этот параметр задаёт значение макроса препроцессора __PTX_SM__; например, для ‘sm_35’ его значение равно ‘350’.

-misa=architecture-string

Псевдоним -march=.

-march-map=architecture-string

Выбрать ближайшее доступное значение -march=, возможности которого не превышают требуемые. Например, для -march-map=sm_50 выбирается -march=sm_37, а для -march-map=sm_53 — -march=sm_53.

-mptx=version-string

Генерировать код для указанной версии PTX ISA. Допустимые строки версий: ‘3.1’, ‘4.1’, ‘4.2’, ‘5.0’, ‘6.0’, ‘6.3’, ‘7.0’, ‘7.3’ и ‘7.8’. По умолчанию используется версия PTX ISA, в которой появилась поддержка выбранной целевой архитектуры PTX ISA (см. -march=), но не ниже ‘6.3’ или ‘7.3’ для -march=sm_52 и выше.

Этот параметр задаёт значения макросов препроцессора __PTX_ISA_VERSION_MAJOR__ и __PTX_ISA_VERSION_MINOR__; например, для ‘3.1’ значения макросов равны соответственно ‘3’ и ‘1’.

-mmainkernel

Включить в код ядро __main. Предназначено для автономного выполнения, а не для выгрузки выполнения.

-moptimize

Применять оптимизации для разделённого выполнения. Этот параметр включён по умолчанию, если выбран любой уровень оптимизации.

-msoft-stack
-mno-soft-stack

Для -mno-soft-stack (значение по умолчанию, если не указан -mgomp) использовать «нативные» стеки PTX, то есть генерировать код, использующий память .local или PTX alloca непосредственно для хранения стека. Если не активны -mptx=7.3 или выше и -march=sm_52 или выше, массивы переменной длины и динамическое выделение памяти в стеке с помощью alloca не поддерживаются.

Для -msoft-stack (подразумевается параметром -mgomp) генерировать код, не использующий память .local или PTX alloca непосредственно для хранения стека. Вместо этого указатель стека для каждого варпа поддерживается явно. Это позволяет выделять в стеке память переменной длины (для массивов переменной длины или alloca), а при использовании глобальной памяти для базового хранилища даёт возможность обращаться к автоматическим переменным из других потоков или с помощью атомарных инструкций. Этот вариант генерации кода используется для выгрузки OpenMP, но параметр доступен отдельно для тестирования компилятора; чтобы генерировать код, пригодный для компоновки с программами, использующими выгрузку OpenMP, используйте параметр -mgomp.

-muniform-simt

Переключиться на вариант генерации кода, позволяющий выполнять все потоки в каждом варпе, сохраняя при этом состояние памяти и побочные эффекты так, как если бы вне областей OpenMP SIMD был активен только один поток в каждом варпе. Все атомарные операции и вызовы среды выполнения (malloc, free, vprintf) выполняются условно (только если индекс текущей дорожки равен индексу главной дорожки), а присваиваемый регистр копируется из главной дорожки с помощью инструкции перемешивания. Вне областей SIMD главной является дорожка 0; внутри таких областей каждый поток считает главной себя. Массив разделяемой памяти int __nvptx_uni[] хранит битовые маски из одних нулей или единиц для каждого варпа, указывая текущий режим (0 вне областей SIMD). Каждый поток может выполнить побитовое И над маской по адресу tid.y и текущим индексом дорожки, чтобы вычислить индекс главной дорожки.

-mgomp

Генерировать код для использования при выгрузке OpenMP: включает параметры -msoft-stack и -muniform-simt, а также выбирает соответствующий вариант multilib.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Nvidia-PTX-Options.html

Spec-Zone.ru

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