中国教育在线 中国教育网 加入收藏 设为首页

为什么要使用OPenCL

http://itpx.eol.cn  来源:  作者:网络  2005-04-25    

  利用OpenCL可以充分利用设备的并行特征

  现代处理器的架构已经将并行计算作为提高性能的一个最重要途径。高性能CPU由于很难克服提高时钟频率后的散热问题转而使用增加运算核心的方法加速。作为图形渲染专用的处理器,GPU具有高度的并行特性。由于相关应用的需要,GPU也从单一的图形渲染设备转化为作为通用计算的协处理器。相对于CPU,GPU有很多自己独有的特点。

  GPU的运算核心数量要远远超过高端CPU的核心数量。GPU的每个运算核心并没有CPU的运算核心工作频率高,但是其总体性能-芯片面积比和新能-功耗比都很高,在处理并行计算的先关任务中有很大优势。

  GPU是通过大量并行线程交织运行隐藏全局访问的延迟,同时GPU还拥有大量的寄存器、局部存储器及Cache等来提升外部存储的访问性能。

  除了以上两点,GPU相对于CPU还有很多其他特性。这些特性决定了GPU的计算模式是以一种并行的方式进行计算的。基于GPU或者其他并行运算设备的算法与传统的基于CPU的串行算法有大差别:

  并行算法中要有大量的线程在运行,而一般的串行算法都只有一个线程在运行。

  并行算法中的每个线程的行为需要尽量保持一致,如果分支很多,各线程又选择不同路径执行,会严重降低GPU运算的效率。在CPU中,即使有两个线程的行为高度不一致,也不会非常影响性能。

  在程序不加特殊约束的情况下,并行运算设备是不保证每个线程看到的全局内存是一致的。程序员有责任维护线程同步以及内存管理等任务。

  在传统的串行运算设备中,例如CPU,线程之间切换的开销是比较大的。所以一般来说,是不鼓励程序员为一个算法开启大量线程的。而在类似于GPU的并行运算设备中,线程之间的切换是非常廉价的。这些设备也正是通过线程之间切换来隐藏一些内存访问延迟的。与CPU相反,并行设备一般是不鼓励设备运行具有很少线程的算法。

  OpenCL为程序员提供了控制并行计算设备的一些接口以及一些控制运算单元行为的类C编程语言。用户可以利用OpenCL接口开发并行度很高的程序,并且将其运行在GPU或其他处理设备上。

  OpenCL为程序员提供了平台独立性

  如今大部分的高端的计算系统基本上都引入了高性能的CPU,GPU和其它类型的处理器。这就为软件开发提出了内在的要求,即必须保证编写的软件能够在各种异质平台上自由移植,并且能充分而合理的利用到整个计算机系统的所有计算资源。

  OpenCL正是为满足用户的这个要求而设计的。它应用范围广泛,从嵌入式消费类软件的开发到高性能计算解决方案,都可以通过其完成。OpenCL具有一个底层程序接口,和一个高性能,可移植的抽象层,它为并行计算提供了一个有限的开发环境,一个平台独立的工具和丰富的中间软件层。

  通过传统的方法开发一个运行在异质平台,例如包括多核CPU和GPU的平台,并行运算程序是十分困难的。传统的基于多核CPU架构的并行计算程序会假设地址空间在计算过程中是始终共享的,GPU并计算模型则有着非常杂的内存层次和矢量操作,并且不同平台,不同产品信号的GPU往往有着不同的架构。这些限制使得软件开发人员很难开发出一款能高效的运用各种异质平台计算资源的软件。

  OpenCL标准的诞生为软件开发人员能够高效利用各种异构处理平台提供了充分保障,从高性能计算服务器,到家用计算机系统内核,再到手持设备,从高端GPU,高端多核CPU到DSP,和Cell/B.E.processor.OpenCL支持各种各样的并行处理器的组合平台。

推荐给好友    我要收藏    我要纠错    分享到

免责声明:

① 凡本站注明“稿件来源:中国教育在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明“稿件来源:中国教育在线”,违者本站将依法追究责任。

② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

eol.cn简介 | 联系方式 | 网站声明 | 招聘信息 | 京ICP证140769号 | 京ICP备12045350号 | 京网文[2017]10376-1180号 | 京公网安备 11010802020236号
版权所有 赛尔互联(北京)教育科技有限公司 CERNET Corporation
Mail to: webmaster@cernet.com