我们来看看基本的CUDA C++写法
CUDA的GPU计算操作,它让GPU的线程分别对dev_p数组的每个元素并行地执行+1操作。
选中待使用的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计算结果传回主存。