cuda入门之二

本文通过一个简单的CUDA程序介绍了如何在GPU上分配内存并执行加法运算,演示了从设备到主机的数据传输过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<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;
}




                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值