第一个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 确定
编译-运行
运行结果: