CUDA并行计算 #include __global__ void add(int x,int y,int *z){\x05*z=x+y;}int main(void){\x05int c;\x05int *dev_c;cudaMalloc( (void**)&dev_c,sizeof(int) );\x05 add(2,7,dev_c);\x05 cudaMemcpy(&c,dev_c,sizeof(int),cudaMemcpyDeviceToHost);\x05 print

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 13:05:54
CUDA并行计算 #include __global__ void add(int x,int y,int *z){\x05*z=x+y;}int main(void){\x05int c;\x05int *dev_c;cudaMalloc( (void**)&dev_c,sizeof(int) );\x05 add(2,7,dev_c);\x05 cudaMemcpy(&c,dev_c,sizeof(int),cudaMemcpyDeviceToHost);\x05 print

CUDA并行计算 #include __global__ void add(int x,int y,int *z){\x05*z=x+y;}int main(void){\x05int c;\x05int *dev_c;cudaMalloc( (void**)&dev_c,sizeof(int) );\x05 add(2,7,dev_c);\x05 cudaMemcpy(&c,dev_c,sizeof(int),cudaMemcpyDeviceToHost);\x05 print
CUDA并行计算
#include
__global__ void add(int x,int y,int *z){
\x05*z=x+y;
}
int main(void){
\x05int c;
\x05int *dev_c;
cudaMalloc( (void**)&dev_c,sizeof(int) );
\x05 add(2,7,dev_c);
\x05 cudaMemcpy(&c,dev_c,sizeof(int),cudaMemcpyDeviceToHost);
\x05 printf("2+7=%d\n",c);
\x05 cudaFree(dev_c);
\x05 return 0;
}
//这段程序为何运行出来结果为2+7=0?求指教

CUDA并行计算 #include __global__ void add(int x,int y,int *z){\x05*z=x+y;}int main(void){\x05int c;\x05int *dev_c;cudaMalloc( (void**)&dev_c,sizeof(int) );\x05 add(2,7,dev_c);\x05 cudaMemcpy(&c,dev_c,sizeof(int),cudaMemcpyDeviceToHost);\x05 print
可能是环境配置的问题,cuda运行环境需要配置各种各样的参数什么的,不建议你自己配,cuda的sdk里面有很多例子,源码和vs工程文件都有,里面的环境都是配好的.
建议你先导入一个简单的例子,在你的机器上跑一遍看看有没有问题,如果没有问题再改成你的程序,一般情况下sdk的例子能正确执行的话,改成你这个简单的例子应该是不会有问题的.
推荐你可以先把sdk里面的DeviceQuary跑一遍,那个程序是检查你的gpu设备的.

我用你的程序测试了,一点问题也没有2+7=9。估计你参数配置的问题,在模拟状态下?