GPU 单指令多数据流(SIMD) 大规模的并行计算
CPU 多指令单数据流(MISD) 逻辑控制
异构: 一个CPU(控制单元)+ 几个GPU(计算单元)
OpenCL(OpenCompute Library) 异构计算的标准
OpenCL由两部分组成,一是用于编写Kernels的语言,二是用于定义并控制平台的API。
OpenCL程序同CUDA程序一样,也是分为两部分,一部分是主机CPU上运行,一部分是在设备GPU上运行。
编写OpenCL程序的基本步骤:
(1)获取平台 clGetPlatformIDs
(2)从平台上获取设备 clGetDeviceIDs
(3)创建上下文 clCreateContent
(4)创建命令队列 clCreateCommandQueue
(5)创建缓存 clCreateBuffer
(6)读取程序文件,创建程序 clCreateProgramWithSource
(7)编译程序 clBuildProgram
(8)创建内核 clCreateKernel
(9)为内核设置参数 clSetKernelArg
(10)将内核发送给命令队列,执行内核 clEqueueNDRangeKernel
(11)获取计算结果 clEnqueueReadBuffer
(12)释放资源 clReleaseXXxx