PTX - разница между.local и.param
Я изучаю PTX, и я не понимаю разницу между .param
а также .local
государственные пространства.
.local
переменные, видимые потокам и хранящиеся в их стеке (который, кстати, является памятью потоков)
.param
переменные, используемые для размещения объектов (если они передаются по значению), параметры функций и возвращаемые значения, а также входные параметры, и они также размещаются в стеке
В руководстве по PTX есть:
В PTX адрес входного параметра функции может быть перемещен в регистр с помощью инструкции mov. Обратите внимание, что параметр будет скопирован в стек при необходимости, и поэтому адрес будет в
.local
пространство состояний и доступ черезld.local
а такжеst.local
инструкции.
Я не понимаю: зачем копировать .param
в стек, если .param
== .local
и все уже в стеке?
1 ответ
.param - это абстракция PTX-уровня для данных, передаваемых с хоста на устройство как часть вызова ядра, то есть это параметры или аргументы вызова ядра. В ранних графических процессорах фактическое хранилище, используемое для этой цели, было общей памятью, в более поздних графических процессорах это было изменено на постоянный банк памяти.