And*_*rea 16 c c++ memory cuda
关于CUDA内核如何工作,我有一个新手怀疑.
如果有以下代码(使用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();
}
Run Code Online (Sandbox Code Playgroud)
执行的输出是:
Param value: 456
Param value: 456
Param value: 456
Param value: 456
Run Code Online (Sandbox Code Playgroud)
我无法得到内核如何读取我传递的参数的正确值,是不是它在主机内存中分配?GPU可以从主机内存中读取吗?
谢谢,
安德里亚
phi*_*hil 17
根据E.2.5.2节." CUDA C编程指南"中的"函数参数"
__global__函数参数传递给设备:
Jes*_*all 13
声明void testKernel(int param)
说,它param
是通过值传递的,而不是通过引用传递的.换句话说,堆栈包含a
值的副本,而不是指向的指针a
.CUDA将堆栈复制到GPU上运行的内核.
归档时间: |
|
查看次数: |
18106 次 |
最近记录: |