科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网服务器频道服务器组件OpenCL:满足GPGPU的开放标准需求

OpenCL:满足GPGPU的开放标准需求

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

CUDA在高性能计算和其他领域快速受到青睐令人印象深刻。本文我们将谈一谈另一种GPU语言:OpenCL。

来源:ZDNet编译 2010年3月15日

关键字: GPU OpenCL

  • 评论
  • 分享微博
  • 分享邮件

CUDA在高性能计算和其他领域快速受到青睐令人印象深刻。本文我们将谈一谈另一种GPU语言:OpenCL。

笔者相信OpenCL将和NVIDIA CUDA一样赢得人们的欢迎。与CUDA一样,OpenCL也有免费可用的SDK(Software Development Kit),它是基于C语言的,可以利用低成本视频硬件进行研究。OpenCL还带来了另外两个特性,一个是开放标准规范,另外是对数据并行化(GP-GPU)和任务并行化(CPU)两种方法的支持。下面我们将具体阐述,不过首先让我们来了解一些相关的背景。

目前GP-GPU的竞争主要是在AMD/ATI和NVIDIA之间展开。IBM要把Cell芯片用在HPC高性能运算,但是已经决定转而选择一个OpenCL平台并采用AMD/ATI硬件。除此之外,受热议的Intel Larrabee最终被搁浅,因此只留下了两家主要竞争者,而且双方都有强大的桌面市场来支持开发和生产成本。

以前,AMD/ATI支持BrookGPU模式,并有了升级版本的SDK Brook+。虽然Brook+可以实现GP-GPU计算,但是整个行业已经意识到需要出台某种标准。因此在2008年6月,Khronos Group和一个由厂商组成的联盟启动了OpenCL Working Group,旨在创建一项针对GPU/CPU编程的标准。Khronos Group是一个由其成员提供基金支持的行业协会,专注于创立免授权费的开放标准,除了OpenCL以外,他们还制定了OpenCL图形标准。由于受到了来自苹果公司的支持,仅仅在该组织创立6个月之后,OpenCL 1.0标准就在2008年12月被批准通过了。该组织的成员包括3DLABS、Activision Blizzard、AMD、Apple、ARM、Broadcom、Codeplay、Electronic Arts、Ericsson、Freescale、Fujitsu、GE、Graphic Remedy、HI、IBM、Intel、Imagination Technologies、Los Alamos National Laboratory、Motorola、Movidia、Nokia、NVIDIA、Petapath、QNX、Qualcomm、RapidMind、Samsung、Seaweed、S3、ST Microelectronics、Takumi、Texas Instruments、Toshiba和Vivante。

作为OpenCL的支持者,AMD最近发布了针对Linux(RHEL 5.3、Ubuntu 9.10、openSUSE 11.0)和Windows(XP、Vista和Windows 7)的ATI Stream SDK v2.01。对于Linux操作系统,AMD/ATI的软件开发团队尝试将OpenCL与现有开放工具链集成起来。例如,现在可以使用gbd来调试OpenCL内核(在OpenCL中,内核就是可执行代码的基本单位,可以运行在GPU或者多核CPU上)。另外还有一个只针对Windows操作系统的Stream KernelAnalyzer工具。对于CUDA,OpenCL可以用于现有的AMD/ATI显卡,但是最好是检查一下系统要求以防万一。

你可能会想“那么CUDA和NVIDIA呢?”如果你查看一下OpenCL规范表中包括的厂商,你还会发现NVIDIA也是该组织的成员之一。NVIDIA非常高调地宣称他们支持任何编程语言,让你可以编程他们自己的GPU并为硬件提供他们自己版本的OpenCL。

OpenCL的标准很大程度上决定了它的未来。获得整个计算机/视频硬件行业的支持也将起到帮助作用。从独立软件开发商的角度来看,OpenCL是通向混合(GPU/CPU)计算的大门。任何涉足高性能计算领域的人都会告诉你,在非标准的API上投入资金和时间是一项具有风险的业务。MPI也是人们出于类似理由而开发的(例如程序员不希望每次服务器机房采用新并行计算机架构的时候都要进行重新编码)。

OpenCL的最后一个特点也不容忽略。正如前面提到的,OpenCL支持数据并行化和任务并行化。现在在混合计算领域有一种假定,那就是GPU是CPU的“奴隶”,也就是说,GPU必须借助CPU而自己无法独立运行。根据这种假定,人们能够编写出可以应用于硬件环境并最低限度运行在一个CPU内核上的OpenCL程序。当然它的运行速度慢一些,但仍然是运行的。如果一个不同的硬件环境中有更多核心或者GPU的话,那么一个OpenCL程序应该可以在运行过程中适用于新的硬件。令人头疼的就是将CPU和GPU资源的不同结合体区分开来。

现在大家都相信混合计算将在高性能计算领域扮演重要的角色。与所有软件一样,硬件升级的背后往往是工具的开发。虽然OpenCL没有解决像MPI这样的节点外计算问题,但是它提供了一个向混合计算迁移的标准方法。OpenCL的其他好处还包括你可以利用一个廉价的显卡和免费的OpenCL SDK来查看它是否可以运行你的代码。与其他新软件模式一样,你最大的投资就是时间和数百杯咖啡。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章