【IT168 文档】概况
OpenCL是一个开放的国际标准,可以用来在不同架构的CPU, GPU使用统一的接口来编程, 包括了编程语言, API接口, 运行时库. 最大的好处,也是我最喜欢的特性,就是可以写出高效的可移植代码.简单的说,过去你用CUDA写的代码就只能在Nvidia的卡上跑,StreamSDK写的代码就只能在ATI的卡上跑,但是有OpenCL,你就不用这么烦恼了,nvidia, ati, intel的GPU都可以通吃了.
平台模型
OpenCL的平台中,是一个主机控制控制多个设备,每个设备有多个CU(computer units),每个CU又包含多个PE(processing elements),可以理解成CPU做主控,多个GPU做数字协处理运算,如下图所示:
在这个模型中,host可以理解成cpu,device可以理解成是显卡芯片,CU可以理解成是显卡芯片中的流处理器,PE可以理解成是流处理器中的运算单元ALU.举个简单的例子,在比较新的nvidia显卡和ati显卡中:Geforce GTX 280有240个流处理器,每个流处理器每个周期可以处理一个标量运算.所以Geforce GTX 280可以说是有240个CU,每个CU有1个PE,所以一共有240个PE.HD4850有160个流处理器,每个流处理器每个周期可以处理五个标量运算.所以HD4850可以说是有160个CU,每个CU有5个PE,所以一共有800个PE.但是实际上由于每次不可能把五个标量运算都用满,实际处理能力应该远没这么多.但是个人觉得理论值上A卡还是要多点.