CUDA 计算两个向量的和
由于cpu计算相对于GPU来说太慢了,所以使用cuda (c 语言)来调用数据到Gpu中计算,这样可以大大的提高计算时间。
使用软件:在windows下使用 vs2017+ cuda10 进行代码编写
分析:使用cuda求两个向量相加具体可分为5步
- 申请数据存储空间
- 拷贝host端数据到device端(CPU 到 GPU)
- 调用kernel
- 复制结果返回给host端
- 释放空间
全部代码如下:
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
__global__ void vecaddtion(float *d_a, float *d_b, float *d_c,int nElem)
{
int t = threadIdx.x +blockDim.x*blockIdx.x; //t(向量索引号)大小 //t (tid)表示全局线程的索引号
//threadIdx是一个uint3类型,表示一个线程的索引。
//blockIdx是一个uint3类型,表示一个线程块的索引,一个线程块中通常有多个线程。
//blockDim是一个dim3类型,表示线程块的大小。
//blockDim.x,blockDim.y,blockDim.z相当于这个dim3的x,y,z方向的维度 这里是x(一维,向量)方向上
if (t < nElem)