0

我正在研究 PTX,但我不明白.param.local状态空间之间的区别。

.local是线程可见的变量并存储在它们的堆栈中(顺便说一下,线程内存)

.param是用于对象分配(如果按值传递)、函数参数和返回值以及输入参数的变量,它们也在堆栈上分配

在 PTX 手册上有:

在 PTX 中,可以使用 mov 指令将函数输入参数的地址移动到寄存器中。请注意,如果需要,参数将被复制到堆栈中,因此地址将在 .local状态空间中,并通过ld.localst.local 指令访问。

我不明白:.param如果.param==.local并且所有内容都已经在堆栈上,为什么要将 a 复制到堆栈中?

4

1 回答 1

2

.param 是作为内核调用的一部分从主机传递到设备的数据的 PTX 级抽象,即这些是内核调用参数或参数。在早期的 GPU 中,用于此目的的实际存储是共享内存,在后来的 GPU 中,这被更改为常量内存库。

于 2013-07-18T05:29:37.960 回答