3.19.35 Параметры Nvidia PTX
Эти параметры определены для Nvidia PTX:
-
-m64 -
Игнорируется, но сохраняется для обратной совместимости. Поддерживается только 64-битный ABI.
-
-march=architecture-string -
Генерирует код для указанной архитектуры целевой PTX ISA (например, ‘sm_35’). Допустимые строки архитектуры — ‘sm_30’, ‘sm_35’, ‘sm_53’, ‘sm_70’, ‘sm_75’ и ‘sm_80’. Значение по умолчанию зависит от конфигурации компилятора, см. --with-arch.
Этот параметр устанавливает значение препроцессорной макросы
__PTX_SM__; например, для ‘sm_35’ значение равно ‘350’. -
-misa=architecture-string -
Псевдоним для -march=.
-
-march-map=architecture-string -
Выбирает ближайшее доступное значение -march=, которое не обладает большей производительностью. Например, для -march-map=sm_50 выбирается -march=sm_35, а для -march-map=sm_53 выбирается -march=sm_53.
-
-mptx=version-string -
Генерирует код для указанной версии PTX ISA (например, ‘7.0’). Допустимые строки версии включают ‘3.1’, ‘6.0’, ‘6.3’ и ‘7.0’. Значение версии PTX ISA по умолчанию — 6.0, если не требуется более высокая версия для указанной архитектуры PTX ISA через параметр -march=.
Этот параметр устанавливает значения препроцессорных макрос
__PTX_ISA_VERSION_MAJOR__и__PTX_ISA_VERSION_MINOR__; например, для ‘3.1’ макросы имеют значения ‘3’ и ‘1’ соответственно. -
-mmainkernel -
Подключает код для ядра __main. Это необходимо для автономного, а не для выполнения с отгрузкой.
-
-moptimize -
Применяет оптимизации с разбиением выполнения. Это значение по умолчанию, когда выбран любой уровень оптимизации.
-
-msoft-stack -
Генерирует код, который не использует
.localпамять напрямую для хранения стека. Вместо этого, явный указатель стека поддерживается на уровне варпа. Это позволяет изменять длину стека (с массивами переменной длины илиalloca), а когда глобальная память используется для базового хранения, делает возможным доступ к автоматическим переменным из других потоков или с атомарными инструкциями. Этот вариант генерации кода используется для отгрузки OpenMP, но параметр выведен отдельно для тестирования компилятора. Чтобы сгенерировать код, подходящий для подключения к программам с использованием отгрузки OpenMP, используйте параметр -mgomp. -
-muniform-simt -
Переключается на вариант генерации кода, который позволяет выполнить все потоки в каждом варпе, сохраняя состояние памяти и побочные эффекты так, как если бы активным был только один поток в каждом варпе за пределами областей OpenMP SIMD. Все атомарные операции и вызовы времени выполнения (malloc, free, vprintf) выполняются условно (если текущий индекс лейны равен индексу главной лейны), и регистр, которому присваивается значение, копируется через инструкцию перестановки из главной лейны. За пределами областей SIMD лейна 0 является главной; внутри, каждый поток видит себя как главную. Массив общей памяти
int __nvptx_uni[]хранит маски все-нули или все-единицы для каждого варпа, указывающие текущий режим (0 за пределами областей SIMD). Каждый поток может побитово-и умножить маску в позицииtid.yс текущим индексом лейны, чтобы вычислить индекс главной лейны. -
-mgomp -
Генерирует код для использования в OpenMP offloading: включает параметры -msoft-stack и -muniform-simt, а также выбирает соответствующий вариант multilib.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gcc/Nvidia-PTX-Options.html