【发布时间】:2015-09-28 02:48:41
【问题描述】:
如题,在cuda程序中,内核参数在内核启动后驻留在GPU的本地内存还是全局内存中?
例如,在 cuda 程序的 LLVM IR 中:
__global__ kernel(int param1):
%0 = alloca int
store param1, %0
那么,在这种情况下,%0 指向哪里?本地内存还是全局内存?
另外,我看到有时内核参数被保存并直接在寄存器中使用,而不是存储在任何内存中。这个决定是如何做出的?
【问题讨论】:
-
在 CUDA 7 或 7.5 支持的所有设备上,它位于 constant memory。如果您转储生成的机器代码 (SASS),您将能够观察到这一点。
-
@RobertCrovella 谢谢!那么CUDA 6呢?如何查看它在 SASS 中的内存?是否为此在 SASS 中标记了特定的限定符?