现在的位置: 首页 > 综合 > 正文

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

2017年11月05日 ⁄ 综合 ⁄ 共 1310字 ⁄ 字号 评论关闭

第一个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    确定


编译-运行

运行结果:









抱歉!评论已关闭.