cuda编程初尝试

部署运行你感兴趣的模型镜像

纸上得来终觉浅,绝知此事要躬行

看了很久很久的书,觉得自己大致的框架以了解,但是从未动手尝试,一旦动手你就会发现很多地方就卡顿了,当你把这些卡顿解决以后,你才踏入cuda编程的大门;

#define data_size 5
__global__ void addKernel(const int *a,const int *b,int *c)
{
	int tid;
	tid = threadIdx.x;
	c[tid] = a[tid] + b[tid];
	
}
int main()
{
	int a[data_size] = { 1,2,3,4,5 };
	int b[data_size] = { 2,4,6,7,8 };
	int c[data_size] = { 0 };
	int *da, *db, *dc;
	cudaMalloc((void**)&da, data_size * sizeof(int));
	cudaMalloc((void**)&db, data_size * sizeof(int));
	cudaMalloc((void**)&dc, data_size * sizeof(int));
	cudaMemcpy(da, a, data_size * sizeof(int), cudaMemcpyHostToDevice);
	cudaMemcpy(db, b, data_size * sizeof(int), cudaMemcpyHostToDevice);
	cudaMemcpy(dc, c, data_size * sizeof(int), cudaMemcpyHostToDevice);
	addKernel << <1, data_size>> > (da, db, dc);
	cudaMemcpy(c, dc, data_size * sizeof(int), cudaMemcpyDeviceToHost);
	printf("%d%d%d%d%d\n", c[0], c[1], c[2], c[3], c[4]);
	cudaFree(da);
	cudaFree(db);
	cudaFree(dc);
	return 0;
}
这是一个很简单的数组相加的程序,程序还是分为两部分host和device:

host:负责变量申明,赋初值,内存分配,函数调用

device:负责计算的描述,线程的分配,内存的使用

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值