【发布时间】:2013-07-15 10:04:10
【问题描述】:
我正在研究 PTX,但我不明白 .param 和 .local 状态空间之间的区别。
.local 是线程可见的变量并存储在它们的堆栈中(顺便说一下,线程内存)
.param 是用于对象分配(如果按值传递)、函数参数和返回值和输入参数的变量,它们也在堆栈上分配
在 PTX 手册上有:
在 PTX 中,函数输入参数的地址可以移动到 使用 mov 指令注册。请注意,参数将是 如有必要,复制到堆栈中,因此地址将在
.local状态空间,可通过ld.local和st.local访问 说明。
我不明白:如果 .param == .local 并且所有内容都已在堆栈中,为什么还要将 .param 复制到堆栈中?
【问题讨论】:
-
.param 是作为内核调用的一部分从主机传递到设备的数据的 PTX 级抽象,即这些是内核调用参数或参数。在早期的 GPU 中,用于此目的的实际存储是共享内存,在后来的 GPU 中,这被更改为常量内存库。
-
@njuffa 根据您的回复,发帖人没有提出任何其他问题,在我看来,您的评论足以作为答案。如果您将其发布为答案,我会赞成。
-
@Robert Crovella 谢谢我已将信息复制到答案中