CUDA编程的理论部分可以参考模型部署篇 中的GPU 的 CUDA 编程方法。
虽然CUDA有很多的C代码,这里我们主要以C++为主。一个完整的CUDA程序,需要经历7个步骤
- 设置显卡设备
- 分配显存空间
- 从内存到显存拷贝数据
- 执行CUDA并行函数
- CUDA函数结束后,将结果从显存拷贝回内存
- 释放显存空间
- 设备重置
如果是单GPU的话可以省略1跟7两个步骤。
#include
#include
#include
#include
/* 核函数 */
__global__ void kernelFunc(float *a) {
a[threadIdx.x] = 1;
}
int main(int argc, char **argv) {
//设置显卡设备
cudaSetDevice(0);
//分配显存空间
float *aGpu;
cudaMalloc((void**)&aGpu, 16 * sizeof(float));
//从内存到显存拷贝数据
float a[16] = {0};
cudaMemcpy(aGpu, a, 16 * sizeof(float), cudaMemcpyHostToDevice);
//执行CUDA并行函数
kernelFunc > >(aGpu);
//CUDA函数结束后,将结果从显存拷贝回内存
cudaMemcpy(a, aGpu, 16 * sizeof(float), cudaMemcpyDeviceToHost);
for (int i = 0; i
CUDA的源码文件以.cu为后缀,编译命令如下(需要先安装CUDA,安装方式可以参考乌班图安装Pytorch、Tensorflow Cuda环境 )
nvcc main.cu -o main
运行结果
1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net