什么是OpenCL
OpenCL是面向由CPU、GPU和其他处理器组合构成的计算机进行编程的行业标准框架。这些所谓的 “异构系统” 已经成为一类重要的平台,OpenCL是直接满足这些异构系统需求的第一个行业标准。OpenCL于2008年12月首次发布,早期产品则在2009年秋天才推出,因此OpenCL是一项相当新的技术。
利用OpenCL,可以编写一款能够在各类系统上成功运行的程序,这些系统包括移动电话、笔记本电脑,甚至是大规模超计算机中的节点。
OpenCL通过公布硬件来提供高度的可移植性,而不是将硬件隐藏在精巧的抽象之下。这说明OpenCL程序员必须显式地定义平台、上下文,以及在不同设备上调度工作。并不是所有程序员都需要(或者希望得到)OpenCL提供的详细控制。没关系,如果可以做其他选择,高层编程模型往往是更好的方法。不过,即使是高层编程模型,也需要一个牢固(而且可移植)的基础,OpenCL就可以作为这个基础。
多核的未来:异构平台
在过去十年间,计算机界发生了显著的变化。早年间总是由原始性能驱动革新。不过,从最近几年开始,关注点已经转向每瓦特功耗提供的性能。半导体公司还将继续把越来越多的晶体管压缩在一个芯片上,不过这些生产商竞争的方向不再是原始性能,而是功耗效能。
这种转变很大程度上改变了这个行业生产的计算机。首先,由多个低功耗核构建计算机中的微处理器。多核的概念首先由 A.P.Chandrakasan 等人在他们的文章“Optimizing Power UsingTransformations”中提出。他们的观点如图1-1所示。