通用计算领域新贵—CUDA和OpenCL

2009-4-22 来源: 互联网

关键字: NVIDIA CUDA OpenCL 

  GPU经过多年的发展,从功能单一的3D计算逐步扩充了视频解码、通用计算等,而且值得一提的是通用计算这个目前最璀璨的技术新星被科研单位及个人消费者普遍关注。

  众所周知,NVIDIA是GPU的通用计算技术先驱者,它的CUDA架构产品深入人心。而在通用计算的API层面不止NVIDIA一家独秀,Apple(苹果)公司主导的OpenCL也赢得了业界同行的大力支持,当然NVIDIA也是OpenCL的核心成员之一。

  2008年12月9日,2008亚洲SIGGRAPH大会上,全球视觉计算技术的行业领袖NVIDIA公司于今日正式宣布,完全支持Khronos Group新近发布的OpenCL 1.0技术规范。OpenCL(开放式计算语言)是一种全新计算应用程序接口(API),它让开发人员能够利用GPU内部巨大的并行计算动力。OpenCL的加入是GPU革命史上又一重大的里程碑,为NVIDIA开发人员提供了另一个功能强大的编程选择。

  Khronos Group是一个非营利的,会员组织的行业协会;Khronos 致力于创造免授权费用的应用程序接口 API 及相关标准生态系统,并将其标准及相关技术应用于包括手持设备,控制台以及嵌入式系统中的高级动态多媒体应用,以提供用以将这些多媒体技术转化为现实生产力的基础。例如OpenGL ES、OpenKODE、OpenMAX、OpenVG、OpenSL ES、COLLADA等,当然还有今天的主角OpenCL。

  OpenCL一经提出就得到了全球顶级软硬件厂商的广泛支持,尤其是已经走在通用计算前沿的NVIDIA公司更是大力支持,NVIDIA公司嵌入式内容副总裁Neil Trevett就在Khronos机构中担任OpenCL工作组主席一职。

  Neil Trevett先生表示:“OpenCL技术规范是NVIDIA等行业领袖意识到这一机遇之后所取得的成果。凭借其开放式、跨平台的标准,该技术规范将在整个异构并行计算市场中得到更多的认可。NVIDIA将继续活跃于OpenCL工作组以便推动该技术规范的发展,并在所有NVIDIA平台中提供对OpenCL的支持,从而为开发人员提供另外一种方式来利用我们GPU中的超强计算动力。”

  OpenCL是什么?与CUDA关系如何?

  OpenCL实际上是针对异构系统进行并行编程的一个全新API,简单来说OpenCL它可以利用GPU进行一些并行计算方面的工作。这是API应用程序的编程接口,图形里面也有很多API,比如OpenGL、DirectX是针对图形的,OpenCL是针对并行计算的API。

  OpenCL开发人员可以利用GPU和CPU的计算能力,把GPU和CPU异构的系统运用在很多并行计算的领域里面。Khronos就是这样一个组织,它由很多厂商组成,并有非常多的成员,这个工作组同时也是OpenCL的一个协调机构,也就是Khronos这个工作组它来负责制定OpenCL的规格、架构等等各方面。业界最主要的和图形或者和计算相关的厂商都是Khronos的成员。

  值得一提的是OpenCL得到Khronos组织里很多成员的支持,同时也验证大家对开发GPU并行计算的能力这个需求越来越多,也正是因为有这个需求成就了OpenCL。

  那么NVIDIA和OpenCL是一个怎样的关系呢?

  实际上OpenCL对于业界来说是非常重要也是非常好的一个标准,它的出现令业界拥有了一个共同的标准利用GPU的强大计算能力,然后应用在图形以外各种各样的并行计算中。其中NVIDIA一直也参与OpenCL的工作,正如前文所提及的NVIDIA副总裁Neil Trevett先生,他现在就任OpenCL工作组的主席,引导很多OpenCL的开发,当然这个组织中还有很多其他开发公司。

  OpenCL最早是Apple公司提出来的,从OpenCL一开始NVIDIA就和Apple公司进行非常紧密的合作。OpenCL开发的过程中,它的技术平台都是NVIDIA的GPU,实际上OpenCL是基于NVIDIA GPU的平台进行开发的。另外OpenCL的第一次演示,也是在NVIDIA的GPU上演示的,可以说到目前为止NVIDIA GPU几乎是进行OpenCL程序的唯一的平台。

  另外还有非常重要的一点,对于Apple公司来说,他们是把GPU计算当成一种未来的趋势,他们非常重视OpenCL,他们将会在新一代的产品里面选择最适合于OpenCL运行的平台。所以说他们新一代苹果的笔记本电脑全都采用了NVIDIA的平台,不管是MacBook Pro、Mac OSX都是采用了NVIDIA公司的平台。实际上这也是从另外一个方面证明NVIDIA的GPU对于OpenCL的支持,到目前为止是最好的一个硬件的平台。

  OpenCL未来发展目标激进

  对于CUDA C语言,NVIDIA一直不断地对其进行更深层次的开发,同时也不断的有新版本的出现,到目前为止已经是CUDA 2.0。CUDA C语言NVIDIA研发已经超过5年时间,基本上从2003年左右就开始开发这个语言开发。

  并且到目前为止,开发人员的数量已经是超过25000人,应用程序超过100个,特别在科学计算的领域里CUDA的应用极为广泛,几乎涉及到各种各样的HPC高性能计算的领域。甚至现在HPC进入排行榜前100的高性能计算机里面也有使用NVIDIA基于CUDA的Tesla系统,它的开发语言正是使用了CUDA C语言。目前GPU集群组成的高性能计算机集群数量已经达到了30个,在中国也有相关产品。

  CUDA C语言是一个跨操作系统的开发工具,现在支持Windows、Linux、Mac OS,几乎把控了目前最主流的操作系统。NVIDIA的CUDA C语言提供了很多的库,这些库主要包括FFT、BLAS等,它们可以提供各种各样现成的代码让编程人员使用。

  也许有这样的开发者,他可能对CUDA并不熟悉,但他又想要使用CUDA的高性能计算该怎么办?很简单,他就把现有的应用软件,例如FFT,使用CUDA的FFT的代码直接替换,就这样他便可以获得20倍以上的性能提升。也就是说,这些库是CUDA C语言非常重要的资源,可以让大家缩短研发周期、体验CUDA带来的高性能,例如一些数学软件像Matlab、Mathematica、LabView都有CUDA的插件,可以使用C语言的插件让他更容易的利用CUDA。

  CUDA/OpenCL共进退 前途无量

  这是NVIDIA的CUDA C语言路线图,现在CUDA正处于2.0版本,到今年年底NVIDIA可能会推出CUDA 2.1版本,到明年会有CUDA 2.2、CUDA2.3版本,最后迎来CUDA 3.0。随着CUDA版本的升级,它的功能也在不断地升级,比如最早的CUDA只能支持单精度的浮点计算,现在可以支持双精度,还可以支持各种各样的库。

  总结的来说,OpenCL无论对开发人员还是业界人员、消费者来说,都是一个非常好的API,一个应用程序的接口。它可以使开发者更容易的开发出跨平台GPU计算程序,并将GPU强大的计算能力利用到各种各样应用计算中。

  对于NVIDIA来说,现在CUDA架构上除了C语言以外,现在新增加了OpenCL或者DX11这样的API,对于开发人员来说也是提供了一种更好的GPU计算的开发环境。因为对API很熟悉的开发人员,他们肯定会很高兴的看到OpenCL或者新的API的加入,对于这些人来说他们很容易利用这种API进行各种各样GPU计算程序开发。对于NVIDIA来说还会继续对C语言包括其他语言的支持,实际上对NVIDIA CUDA C语言来说Runtime C仍是目前唯一的语言环境。今后除了C语言外,NVIDIA还会推出更多的CUDA语言,这包括Fortran,还会有Java等。

 



责任编辑:熊东旭