我是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)中有介紹。 –