我正在研究 PTX,但我不明白.param
和.local
状态空间之间的区别。
.local
是线程可见的变量并存储在它们的堆栈中(顺便说一下,线程内存)
.param
是用于对象分配(如果按值传递)、函数参数和返回值以及输入参数的变量,它们也在堆栈上分配
在 PTX 手册上有:
在 PTX 中,可以使用 mov 指令将函数输入参数的地址移动到寄存器中。请注意,如果需要,参数将被复制到堆栈中,因此地址将在
.local
状态空间中,并通过ld.local
和st.local
指令访问。
我不明白:.param
如果.param
==.local
并且所有内容都已经在堆栈上,为什么要将 a 复制到堆栈中?