PTX - .local和.param之间的区别

时间:2013-07-15 10:04:11

标签: cuda nvidia ptx

我正在学习PTX而我并不理解.param.local州空间之间的区别。

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

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

在PTX手册上:

  

在PTX中,函数输入参数的地址可以移动到a   使用mov指令注册。请注意,参数将是   必要时复制到堆栈,因此地址将在   .local州空间,可通过ld.localst.local访问   指令。

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

1 个答案:

答案 0 :(得分:2)

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