OpenCL:释放你的GPU和系统资源

对于外行来说,OpenCL看上去也许只是一个以简便的方式访问GPU的工具,相当于在ATI显卡上工作的CUDA。这么看就把OpenCL想得过于简单了。事实上,OpenCL提供了一系列丰富的功能,给应用程序开发者提供了必要的基础,来充分利用将来的异构硬件。在本文中,我们要带大家了解一下OpenCL是怎样解决一些未来的挑战,以及OpenCL社区所做的努力,因为越来越多的用户都从厂商锁定的方案转到OpenCL上来了。

现在,我们都已听说过功率墙(耗能限制问题),而且我们都知道,翻过它的唯一途径就是并行。数据级并行是新的计算时代的第一个有影响力的技术。使用高度统一的工作单元,数据并行在许多科学算法上取得了不错的性能提升,OpenCL当然支持这么模式。

然而,事情还没完。因为CPU厂商正试图让它们的架构适应这种新的并行模式(而GPU厂商在发展它们自己的),如何在程序中使用并行计算的替代办法正在涌现。这些设计试图降低大部分工作不适合非发散单元执行的算法的性能限制。

其中一种方法就是采用一种多核心架构,并对它进行扩展,为并行任务提供更多的资源。这方面的一个例子就是2012年发布的英特尔至强Phi架构。与CPU和GPU类似,至强Phi的编程模型对这两者都需要一点点。像CPU的部分就是,至强Phi喜欢时间更持久的工作项,这样它的缓存系统就能更有效地工作,减少内存访问延迟。同时,至强Phi比传统的SMP(对称多处理)提供了更多的执行单元。对于许多应用程序来说,它在数据与任务并行之间找到了平衡,而对于开发者来说,值得庆幸的是,英特尔对它们的整个处理器产品线都提拱了OpenCL支持,包括至强Phi和嵌入式显卡。OpenCL显示局部累积没有问题,有或没有受限的内存访问,管理工作组的界面对于任何级别的数据并行计算都能胜任。这些特点使得它能够无缝地集成反映至强Phi硬件混合特性的混合编程模型。

另一种已被广泛开发,而尚未充分利用(甚至往往不被承认)的硬件策略就是异构片上系统(SoC)。由现已不在的IBM Cell服务器首创,结合所谓的延迟优化的核心(CPU)与吞吐量优化的核心(GPU),异构架构试图要两全其美,只不过两个部分是分开的。如果你正在使用移动设备阅读本文,很有可能你已经用上了异构芯片:苹果A Series,NVIDIA Tegra,AMD Fusion,高通Snapdragon和英特尔Ivybridge都是异构的。其中一些还可能用于下一代的超级计算机中。如果是这样的话,除非你明确地利用这些资源,否则它们就会成为你系统的能耗源头,而没有任何好处。OpenCL为开发者打开了异构架构的无限潜能。

最后一个值得一提的硬件策略就是Field Programmable Gate Array现场可编程门阵列(FPGA)。没有几个通用的处理架构可以和自定义电路的能效相抗衡。不幸的是,很少有开发商会愿意花时间和精力来学习VHDL或Verilog,让它们的想法变成实际能用的核心。OpenCL的一个非常新颖的应用程序,通过在OpenCL C编程语言编写的内核中创建FPGA固件,意图消除这一阻碍。Altera公司(Stratix V架构的制造商)已经发布了用于OpenCL的Altera SDK。使用这套工具,开发者可以生成专为他们的应用程序量身定制的自定义硬件。这使得应用程序开发者摆脱了本该属于电气工程师的沉闷工作,与此同时,它还开启了一个充满无尽可能的迷人世界。

我们已经讨论的所有硬件趋势,合起来,对于任何供应商特定工具链来说都是巨大的挑战。要考虑使用异构主机处理器,外加离散加速器(GPU或其他)的系统的编程模型。对这些资源的有效利用需要紧密结合数据并行与任务并行工作的能力,以及各种计算单元之间的数据移动。我们真的要指望着那些东拼西凑的厂商特定的工具来迎接这样的挑战吗?设想一下,你现在必须支持一个配置相似的,但是是由一套不同的架构建立的系统。你要写多少个版本的代码?这样一个工作,你需要用多少年才能完成?

有了OpenCL,实现这样一个模型就非常简单了。因为设计用于运行在各种相互竞争的硬件架构之上的OpenCL是对它们的自然反映。OpenCL可以容纳上面提到的每一个架构,而且把它们协调在一起也没有问题。作为一个开放的标准,新的厂商都能参与到OpenCL的讨论中来,确保OpenCL能够支持未来的硬件发展,无论方向如何。此外,关于OpenCL对自定义设备的支持,它提供了更大的灵活性,可以加入当下的计算设备概念不能满足的系统资源,为集成DSP或内部开发的ASIC创造了机会。

对于OpenCL的疑虑主要集中在OpenCL的可移植性是暂时的。这就是在转移问题的焦点。显然,所有的硬件是都不一样,在各种架构上表述并行算法的方法没有单一一个最佳方法。这不是OpenCL的意义所在。OpenCL的真正作用是它提供了一个基础,让我们可以在一个单一框架里设定各种硬件组合。使用OpenCL,开发者可以轻松地在不同的内核,执行拓扑和内存模式之间切换。这种灵活性就是OpenCL的核心。

有一个问题就是,OpenCL迄今一直缺少一个正式的用户组织。为了解决这个问题,一些主要的OpenCL倡导者们组织了一个新的用户群体。由于OpenCL是关于计算的可移植性的,所以这个新的组织就命名为Comportability。作为一个非营利公司,Comportability就是一个有关OpenCL一切的开放论坛。会员是免费的。个人被邀请参与讨论,上传软件,参加一年一度的研讨会。机构和厂商作为投票成员参与其中,被邀请形成地区分会,举办研讨会。

第一届OpenCL世界研讨会,将在2013年5月13日至14日于佐治亚理工学院举办。