中国教育和科研计算机网
EDU首页 |  中国教育 |   高校科技 |   教育信息化 |   CERNET
教育信息化

资讯 | 专题 会议 观点 专栏 访谈 企业 产品 CIO 技术 校园信息化 下一代互联网 IPv6视频课堂

中国教育网 > 教育信息化
您现在的位置: EDU首页 > 教育信息化 > 集成应用 > 科研应用 > 高性能计算
为什么要使用OPenCL
http://www.edu.cn   2011-09-19 中国教育网 作者:

字体选择:【大】 【中】 【小】

  利用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支持各种各样的并行处理器的组合平台。

页面功能 【打印】 【关闭】 【我有话说

MOOC风暴来袭

版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号

关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com