我正在学习PTX而我并不理解.param
和.local
州空间之间的区别。
.local
是线程可见的变量并存储在它们的堆栈中(顺便说一下,它是线程内存)
.param
是用于对象分配的变量(如果通过值传递),函数参数和返回值以及输入参数,它们也在堆栈上分配
在PTX手册上:
在PTX中,函数输入参数的地址可以移动到a 使用mov指令注册。请注意,参数将是 必要时复制到堆栈,因此地址将在
.local
州空间,可通过ld.local
和st.local
访问 指令。
我不明白:如果.param
== .param
并且所有内容已经在堆栈中,为什么要将.local
复制到堆栈?
答案 0 :(得分:2)
.param是对作为内核调用的一部分从主机传递到设备的数据的PTX级抽象,即这些是内核调用参数或参数。在早期的GPU中,用于此目的的实际存储是共享内存,在以后的GPU中,它被更改为恒定的内存库。