CUDA系列二:向量的相加

      本文主要介绍下cuda的向量加法的实现,该代码只是为了熟悉概念和初步上手cuda,过程也比较简单。cuda c上手其实还是挺简单的,但是要精通还是需要通过大量实践才能达到的,有兴趣的同学需要多加练习。本文的向量相加,由简逐渐深入。

初步实现只使用了一个block:

#include <iostream>


#define N 10

static void HandleError( cudaError_t err,
                         const char *file,
                         int line ) {
    if (err != cudaSuccess) {
        printf( "%s in %s at line %d\n", cudaGetErrorString( err ),
                file, line );
        exit( EXIT_FAILURE );
    }
}
#define HANDLE_ERROR( err ) (HandleError( err, __FILE__, __LINE__ ))

//核函数具体实现
__global__ void add(int *a,int *b,int *c)
{
	int tid = threadIdx.x; //获取数据索引位置,每个线程对应一个位置
	if(tid < N)
		c[tid] = a[tid] + b[tid];
}

int main(void)
{
	int a[N],b[N],c[N];
	int *dev_a,*dev_b,*dev_c;

    //设备端内存分配
	HANDLE_ERROR(cudaMalloc((void**)&dev_a,N * sizeof(int)));
	HANDLE_ERROR(cudaMalloc((void**)&dev_b,N * sizeof(int)));
	HANDLE_ERROR(cudaMalloc((void**)&dev_c,N * sizeo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值