<pre name="code" class="cpp">/*<a target=_blank href="http://www.cnblogs.com/xing901022/archive/2013/08/09/3248469.html">http://www.cnblogs.com/xing901022/archive/2013/08/09/3248469.html</a> 参考文章中的*/
#include<stdio.h>
#include<iostream>
__global__ void kernel(void)
{
}
__global__ void add(int a, int b, int *c)
{
*c = a + b;
}
int main()
{
kernel<<<1,1>>>();
printf("hello world\n");
int c;
int *dev_c;
cudaMalloc((void **)&dev_c, sizeof(int));
//当设备执行操作时都需要分配内存,这个函数告诉cuda在设备内存上分配内存
//dev_c是指向用于保存新分配地址的变量,第二个参数是分配内存的大小
//设备指针使用限制:
//1、可以将cudaMalloc()分配的指针传递给在设备上执行的函数
//2、可以在设备代码中使用cudaMalloc()分配的指针进行内存读写操作
//3、可以将cudaMalloc()分配的指针传递给在主机上执行的函数
//4、不能在主机代码中使用cudaMalloc分配的指针进行读写操作
add<<<1,1>>>(2,7,dev_c);
cudaMemcpy(&c, dev_c, sizeof(int),cudaMemcpyDeviceToHost);
printf("the result is %d\n",c);
cudaFree(dev_c);//记得释放空间
return 0;
}