第一个cuda程序-基于VS2010+CUDA5.0 两个向量相加的GPU实现
2013-12-30 23:06
302 查看
第一个cuda程序-基于VS2010+CUDA5.0 两个向量相加的GPU实现
<适合入门同学,有错误或是不妥的地方欢迎指正>
第一个cuda程序-基于VS2010+CUDA5.0 两个向量相加的GPU实现
1.新建一个空白的控制台应用程序。
![](https://img-blog.csdn.net/20131230230810000?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQ5NTc0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.在项目中添加一个.cu源文件,(也可以添加一个cpp文件然后改后缀为.cu)
![](https://img-blog.csdn.net/20131230231052296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQ5NTc0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.工程名右键——BuildCustomiztions…勾选CUDA
5.0(.targets,.props)
![](https://img-blog.csdn.net/20131230231203531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQ5NTc0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
4.右键.cu文件——Properties——General——Item
Type选择CUDA C/C++——Apply
![](https://img-blog.csdn.net/20131230231258109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQ5NTc0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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 确定
![](https://img-blog.csdn.net/20131230232129125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQ5NTc0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
编译-运行
运行结果:
![](https://img-blog.csdn.net/20131230232146656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQ5NTc0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
<适合入门同学,有错误或是不妥的地方欢迎指正>
第一个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 确定
编译-运行
运行结果:
相关文章推荐
- 第一个基于GPU CUDA的程序--向量相加的并行处理
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- GPU/CUDA程序初体验 向量加法
- [菜鸟每天来段CUDA_C]向量相加的CUDA实现和顺序执行比较
- cuda第0课环境配置+建立第一个程序:cuda4.2+VS2010+GeForce8500GT
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 命令行方式实现第一个CUDA程序的运行(Win7环境)
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 基于opencv的计算机视觉技术实现 第五章节第一个程序 改错
- 基于SNMP的MIB库访问实现两个简单的画验证码图形程序
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:输入t
- 基于gpu与cuda c的神经网络实现
- 汇编程序_实现任意两个五位数相加的
- 用vs2010开发基于VC++的MFC串口通信程序2***一台机子的两个串口进行通信****
- 我的第一个CUDA程序——向量点乘(修正)
- CUDA下的GPU编程入门--第一个CUDA程序
- 用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。