我是CUDA编程的初学者,有一个问题。当按参数值传递给内核函数时,参数在哪里复制?
当我通过值传递参数,如下所示:
__global__ void add(int a, int b, int *c) {
// some operations
}
由于可变一个和b被传递到核函数添加如在函数调用栈复制的值,我猜到一些存储器空间将需要复制。
如果我是正确的,那些参数在GPU或Host的主内存中复制 的额外内存空间?
我想知道这个问题的原因是我应该将一个大结构传递给内核函数。
我也想过传递结构的指针,但这些方式似乎需要调用cudamalloc为结构和每个成员变量。
通过噪声值参数到一个核心调用,被放置在'__constant__'存储器,这是一种特殊的设备存储器。在内核代码的开始处(通常),所需参数将从'__constant__'内存复制到寄存器中。这在编程指南[这里](http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#function-parameters)中有介绍。 –