【发布时间】:2011-06-27 21:15:33
【问题描述】:
对于 CUDA 内核如何工作,我有一个新手疑问。
如果有以下代码(使用从here获取的函数cuPrintf):
#include "cuPrintf.cu"
__global__ void testKernel(int param){
cuPrintf("Param value: %d\n", param);
}
int main(void){
// initialize cuPrintf
cudaPrintfInit();
int a = 456;
testKernel<<<4,1>>>(a);
// display the device's greeting
cudaPrintfDisplay();
// clean up after cuPrintf
cudaPrintfEnd();
}
执行的输出是:
Param value: 456
Param value: 456
Param value: 456
Param value: 456
我不知道内核如何读取我传递的参数的正确值,它不是在主机内存中分配的吗? GPU 可以从主机内存中读取数据吗?
谢谢,
安德烈亚
【问题讨论】:
-
函数变量被 NVCC 编译器隐式编组并复制到设备中。