CUDA C++基本写法

it2023-10-26  70

我们来看看基本的CUDA C++写法

需要包含的头文件

#include "cuda_runtime.h" #include "device_launch_parameters.h"

GPU计算函数:

__global__ void addKernel(int *dev_p) { int i = threadIdx.x; dev_p[i]++; }

CUDA的GPU计算操作,它让GPU的线程分别对dev_p数组的每个元素并行地执行+1操作。

必须用到的几个函数:

cudaSetDevice(0);

选中待使用的GPU设备。

int *dev_p; cudaMalloc((void**)&dev_p, arrSize * sizeof(int));

在GPU中分配内存空间,并使指针dev_p指向该空间的首地址。只有分配了GPU内存空间,才可以传递数据到该空间。

cudaMemcpy(dev_p, p, arrSize * sizeof(int), cudaMemcpyHostToDevice);

将指针p指向的主存地址数据复制到指针dev_p指向的GPU内存地址,即在作GPU计算前将所需数据传给GPU。

addKernel<<<1, arrSize>>>(dev_p);

分配一些GPU的线程来执行addKernel函数,传入指针参数dev_p。共分配了1个线程块,该个线程块有arrSize个线程。

cudaMemcpy(dev_p, p, arrSize * sizeof(int), cudaMemcpyDeviceToHost);

将指针dev_p指向的GPU内存地址数据复制到指针p指向的主存地址,也就是将GPU计算结果传回主存。

最新回复(0)