1
回答
OpenCL,并行计算模型的统一
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

       2007年的GPU领域,nVidia无疑是耀眼的,这主要归功于其统一计算架构CUDA的推出与普及。在那些支持CUDA的GPU设备上(比如GeForce 8系列和Tesla),其强大的计算能力被释放到了通用计算上,而不仅仅局限于图形处理。

       虽然我们的日常生活表面上看上去,用不到什么海量的计算,但在科学、气象、金融甚至是军事领域,高速的计算仍然是一个巨大的需求。于是乎,Intel、 ATI、IBM都纷纷研制自己的通用并行计算平台。一时间,场面比较混乱。比如我们如果利用CUDA开发了一个高速视频转换的软件,可以大大提高将普通视 频文件转换成适合手持设备观看的视频。这是一个非常有用的应用。但是,我们的程序只能运行在支持CUDA的nVidia设备上,如果你使用的是ATI显 卡,那么这个程序将一无是处。

       天下大势,分久必合。这次关于通用计算平台的统一,发起于苹果公司。苹果电脑一向以拥有高端的显卡著称,自然而然地,他们想将这些计算能力释放出来。这个新的标准就是OpenCL,英文全称是 Open Computing Language。他们将这个标准提交到了The Khronos Group,这是一个业界的标准化组织,目前管理着OpenGL和OpenAL。这两个标准主要应用于图形和声音计算,显然,OpenCL将是这两个标准的升级,甚至替代?

OpenCL <wbr>并行计算模型的统一 <wbr>(转)

       OpenCL将统一管理一台电脑上的所有计算资源,比如你的多核CPU,以及多个GPU。OpenCL将这些资源统一看待,算作计算单元,并配置各种级别的内存:private, local 和 global。每个计算单元可以容纳多个工作单元,类似CUDA里的thread概念。

       苹果公司还表示,将在未来的操作系统Snow Leopard中集成OpenCL的支持。我们知道,并行计算的算法和普通顺序计算的算法是不一样的,在设计时,必须考虑到数据的切分,使各个计算单元可 以相对独立地计算。所以,要普及并行计算,一个统一的标准是非常必要的,一来各个硬件厂家不会像无头苍蝇一样去各自研发自己的系统和规范,二来程序员们也 不用针对不同的硬件编制相同的算法。而将这种平台集成进操作系统,使得我们可以方便地扩充一个系统的计算能力。想想,在未来,我们如果觉得一个机器的计算 能力不够了,我们唯一所需要做的,就是去购买一个新的计算设备(类似现在的Tesla卡),将其插入我们的计算机,即可大大提高我们的计算速度。

       下图是Tesla系统,可以通过增加Tesla卡来增强计算能力,但这种系统基于CUDA,所以只能使用nVidia的设备。这种专一性非常不利于并行计算的普及,OpenCL有望打破这种情形。

OpenCL <wbr>并行计算模型的统一 <wbr>(转)

       目前OpenCL还未正式发布,预计将在明年发布(博主注:OpenCL将在2008年12月11日的SIGGRAPH Asia2008 上发布1.0),并且已经得到不少大厂商的支持。

       届时,我也需要将我的CUDA程序更新为OpenCL了。顺便说句题外话,估计到时候,咱们的1024位RSA秘钥也会存在威胁了吧,毕竟,暴力破解所需的时间将会大大缩减,呵呵。

写了这一堆,总结下OpenCL和CUDA的不同:

  • OpenCL提供统一的标准,让不同厂家的设备来支持,使得我们可以统一看待计算资源。这个计算资源不但包括GPU,也包括CPU。
  • OpenCL更关注于多个计算资源的管理,不但在计算单元内部可以实现并行,而且对于一台宿主机上的所有计算设备的并行化进行管理。
举报
红薯
发帖于9年前 1回/1K+阅
顶部