您的位置:首页 > 编程语言

第一个cuda程序-基于VS2010+CUDA5.0 两个向量相加的GPU实现

2013-12-30 23:06 302 查看
第一个cuda程序-基于VS2010+CUDA5.0     两个向量相加的GPU实现 
<适合入门同学,有错误或是不妥的地方欢迎指正>

第一个cuda程序-基于VS2010+CUDA5.0     两个向量相加的GPU实现

 

1.新建一个空白的控制台应用程序。



2.在项目中添加一个.cu源文件,(也可以添加一个cpp文件然后改后缀为.cu)



3.工程名右键——BuildCustomiztions…勾选CUDA
5.0(.targets,.props)



4.右键.cu文件——Properties——General——Item
Type选择CUDA C/C++——Apply



5.编辑.cu文件(给出源代码,实现两个向量相加的简单代码)

#include"cuda_runtime.h"

#include"device_launch_parameters.h"

#include"stdio.h"

#include"windows.h"

int M=1;

__global__void add(int *a,int
*b,int *c)

{

 int x=threadIdx.x;

 c[x]=a[x]+b[x];

}

void main()

{

   int*dev_a,*dev_b,*dev_c;

   intm[5]={0,1,2,3,4};

   intn[5]={5,6,7,8,9};

   intq[5]={0};

   cudaMalloc((void**)&dev_a,5*sizeof(int));  //apply
memory onthe device

   cudaMalloc((void**)&dev_b,5*sizeof(int));

   cudaMalloc((void**)&dev_c,5*sizeof(int));

   cudaMemcpy(dev_a,m,5*sizeof(int),cudaMemcpyHostToDevice);

   cudaMemcpy(dev_b,n,5*sizeof(int),cudaMemcpyHostToDevice);

   add<<<1,5>>>(dev_a,dev_b,dev_c);   

   cudaMemcpy(q,dev_c,5*sizeof(int),cudaMemcpyDeviceToHost);

   cudaFree(dev_a);

   cudaFree(dev_b);

   cudaFree(dev_c);                           

   printf("{%d%d %d %d %d}+{%d %d %d %d %d}={%d %d %d %d %d}\n",m[0],m[1],m[2],m[3],m[4],n[0],n[1],n[2],n[3],n[4],q[0],q[1],q[2],q[3],q[4]);

system("pause");

}

6.添加附加依赖项

右键工程名——Properties——Configuration Properties——Linker——Input——AdditionalDependencies添加cudart.lib    确定



编译-运行

运行结果:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐