# 浅谈出现在新Mac OS中的OpenCL

- 作者：neo1211
- 发布时间：2009-01-13 22:21
- 分类：公司
- 原文：https://www.ifanr.com/1108

关于OpenCL，除了时刻关注新闻的Geek外，估计大部分人都会从新的MacOS中见到这个名词，虽然现在MacOS还没出来。但是实际上 OpenCL（Open Computing Language）的概念，或者用另一个大众耳熟能详的名字–通用计算，已经为大家了解。潜移默化的，我们已经知道可以用GPU，用PS3去算 Folding@HOME计算；可以用GPU去加速视频解压缩等等。马上，连Adobe也开始支持GPU进行PDF、PS的加速。这对于释放那块比CPU还要复杂昂贵的GPU芯片的性能来说，真是可喜可贺的事情。毕竟谁也不愿意花上成百上千块钱买块只能玩3D游戏的电热片。

复杂的OpenCL文档俺就不翻译了，其实很多代码俺也看不懂。这里简单说说OpenCL和过去通用计算的不同，和实现方法。

之前的通用计算绝大多数都是通过显卡的GPU（PS3除外），但是OpenCL在开发之初就针对整个IT范围内的高性能处理器。也就是说不但在 PC中跨硬件架构，而且跨硬件平台。如果今后的高性能处理器都能遵循OpenCL协议规范，那么今后就不需要为AMD 5850显卡和PS4游戏机单独开发Folding@HOME计算程序了。

值得注意的是，OpenCL还囊括了掌上设备。实际上目前掌上设备的处理核心SOC已经集成了ARM、2D、3D、Media等等处理模块，不同的应用程序调用不同的部分，和PC在原理上无异。虽然相比PC，SOC能够关闭耗电巨大的3D、media模块，但同时这部分的强大处理能力也浪费了。而加入OpenCL后的掌上设备，在性能上将会面临一次飞跃。

OpenCL通过类似虚拟机这样的系统抽象方法来实现通用加速计算：

&lt;!–\[if gte mso 9\]&gt; Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 &lt;!\[endif\]–&gt;&lt;!–\[if gte mso 9\]&gt; &lt;!\[endif\]—&gt;

将系统中各个处理器，或者处理核心看作一个个处理单元。每个处理单元既能够自行处理数据，又可以通过OpenCL内核进行相互交流，提高工作效率。而建立在OpenCL内核之外的应用程序面对的是一个抽象对象，自身并不需要去关心调用的是CPU还是GPU，只需要将待处理数据甩给OpenCL内核就可以了。如下图，OpenCL内核将系统中存储器抽象成一个全局内存模型。如笔者的电脑有4G内存，1G显存，那么OpenCL子程序看到的可能就是一个有5G存储器的抽象系统模型。

   
![opencle58685e5ad98e8b083e794a8](https://s3.ifanr.com/wp-content/uploads/2009/01/opencle58685e5ad98e8b083e794a8.bmp "opencle58685e5ad98e8b083e794a8")

目前三大顶级处理器公司都已经宣布支持OpenCL，但是个人打算各不相同：

Nvidia自己的CUDA通用计算平台已经初具规模，但是如果得不到同行的支持，靠自己推广，一来难度大，二来见效慢。现在有了OpenCL，Nvidia的推广工作省下了很多麻烦。而且Nvidia已经准备将CUDA升级为OpenCL的高级套件。也就是说普通应用使OpenCL，专业（利润增长点）领域还是靠 CUDA，反正两者都是基于C语言，移植升级都不是问题。

AMD（前身ATI）算是第一家用GPU不务正业的公司，从早期的DVD加速到 Folding。不过受困财务问题和研发力度，通用计算上落后Nvidia了。现在有了OpenCL，AMD又可以潜心研究自己的事情了，推广的事情丢给 Khronos吧（OpenCL的管理组织，还管理OpenGL）

Intel估计心有不甘。懂点技术的人都觉得intel正在捣鼓的Larrabee怎么看怎么不像显卡。将几个X86核心集成在一起，插在PCIE上面，谁也不知道基于这个全新架构的3D游戏什么时候出来。所以俺早就断定Larrabee显卡不过是个烟雾弹，intel醉翁之意就在通用计算。3D加速卡能攒多少钱？ATI把自己卖了，Nvidia要是没有芯片组估计也很艰难。所以这么多年，看着GPU 市场的血雨腥风，intel自己安稳的慢慢耕耘集成显卡这个一亩三分田。但是intel明显能够嗅到通用计算的钱景，而且如果将来通用计算使得GPU称霸 PC，这对靠CPU立家的intel将是致命伤。（越和Nvidia炒得起劲，越说明自己没底气。）所以Larrabee就是intel自家的通用计算平台。可惜了可惜了，intel还没捣鼓出 来，OpenCL就来了。如果intel不支持，将来世界就不是它的了。

![larrabee](https://s3.ifanr.com/wp-content/uploads/2009/01/larrabee.jpg "larrabee")

![](file:///F:/neo/%E5%86%99%E4%BD%9C/OpenCL/Larrabee.jpg)![](file:///F:/neo/%E5%86%99%E4%BD%9C/OpenCL/Larrabee.jpg)

最后，软软（Microsoft）居然没有支持OpenCL。这很不正常呵。看看哪个“歪门邪教”里没有软软的名字？俺干脆再做一次猜想，软软也在闭门（或者和intel私通）玩通用计算，可能准备集成在DX11或者DX12中。intel不支持OpenCL可能很危险，但是软软可不怕，谁让他家有窗窗。到时候来个原厂配件嘛，反正这事软软也干多了，大不了赔钱嘛！

OpenCL什么时候能用上？如果想今年用上，去买台带有最新OS的Mac就行。不过考虑到经济危机问题，还是等等吧，2010年，PC应该也能用上了。
