OpenCL标准制定组织Khronos Group |
业界标准组织KHRONOS在今天正式发布了通用计算标准OpenCL 1.0(Open Computing Language)。
OpenCL是首个开放的免费通用并行计算标准,将统一管理一台主机的所有计算资源,比如你的多核CPU、GPU等,OpenCL将这些资源统一看作计算单元,共同发挥运算能力完成各类计算任务。OpenCL统一编程环境,开发者能轻松利用异构平台写出高效的程序来。OpenCL将在服务器、PC和手持设置等上得到广泛应用。
OpenCL最早由Apple在六月提交到了Khronos Group,这是一个业界的标准化组织,旨在提供一个通用的开放API,在此基础上开发GPU通用计算软件,随后Khronos成立“OpenCL工作组”负责标准的制订工作,在短短的几个月时间内,OpenCL就完成了从无到有的蜕变。
OpenCL工作组的成员包括:3Dlabs、AMD、苹果、ARM、Codeplay、爱立信、飞思卡尔、Graphic Remedy、IBM、Imagination Technologies、Intel、诺基亚、NVIDIA、摩托罗拉、QNX、高通、三星、Seaweed、德州仪器和瑞典Ume大学等。像Intel、NVIDIA和AMD都是这个标准的支持者,不过微软并不在其列。
<noscript type="text/javascript"></noscript>
|
<noscript src="http://txt.go.sohu.com/ip/soip" type="text/javascript"></noscript>
<noscript></noscript>
|
作为倡导者苹果已经宣布其明年发布的Mac OS X 10.6 Snow Leopard操作系统将集成OpenCL标准,实际上这也是促成OpenCL标准发布的重要条件之一。
◆ NVIDIA和AMD宣布采用OpenCL 1.0标准
作为图形芯片的两大巨头,NVIDIA拥有自己的CUDA架构,AMD有自己的Stream Acceleration,同时他们又是OpenCL的支持者。在OpenCL标准发布之后,AMD和NVIDIA立即表态,宣布即将采用OpenCL 1.0编程规范。
AMD会将合适的编译器和运行库整合进免费的ATI Stream软件开发包(SDK),作为OpenCL的创始人之一,AMD一直以来都极力推崇OpenCL,并尽力赶在2009年上半年开发出ATI Stream SDK的开发者版本,实现对OpenCL 1.0的支持。而NVIDIA则会把它加入GPU计算工具包,因此,这两家的显卡都将支持OpenCL 1.0。从长远来看,这两家厂商共享同一个开放型的规格对于消费者来说是件好事。
◆ OpenCL不会取代CUDA
CUDA作为NVIDIA最近力推的并行计算架构,目前已取得非常不错的成就。显然大多数的读者都有一个疑问,开放式的OpenCL标准的出台,CUDA将何去何从?
作为OpenCL标准的制定者之一,NVIDIA肯定不会蠢到作自掘坟墓的事。实际上现在OpenCL工作组的主席就是NVIDIA的一位副总裁任职,引导很多OpenCL的开发,NVIDIA公司不少员工都在参与这项工作,当然还有很多其他公司的开发人员。从OpenCL一开始NVIDIA就和Apple公司进行非常紧密的合作,OpenCL开发的过程中,它的技术平台都是NVIDIA的GPU,换而言之OpenCL是在NVIDIA GPU的平台进行开发的。OpenCL在大概两个多月以前进行的第一次演示平台也是NVIDIA的GPU,可以说NVIDIA是第一家展示运行中OpenCL程序的公司。从这个角度看,NVIDIA和OpenCL之间在关系十分密切。
对于CUDA而言,最主要的包含两个方面:一个是ISA指令集架构,另一个是硬件计算引擎,这两个方面是CUDA的架构。CUDA到目前为止,它包含了一个C语言的编译器,不仅如此,还可以支持其他的API,包括OpenCL或者DirectX,以后还将有其他语言的接口,包括Fortran、Java、Python等。可以说这种架构是原生的,专门为计算接口而建造的一个架构。
有了CUDA指令集,有了支持CUDA的硬件,就可以利用不同的途径来进行开发调用GPU的计算能力,你可以用OpenCL或者DirectX这样的API来进行开发,也可以用C语言或者Fortran或者Java开发,最终的结果是殊途同归。
当然API和C语言进行开发是有些不同的,API作为编程接口,它的核心是函数库和应用程序开发的一个硬件接口,它有一个好处就是可以访问比较低层次的硬件,对于硬件有比较好的控制权,很多的东西特别是像内存的管理,是需要开发者自己来进行管理的。而在利用CUDA C语言来编程的时候,很多东西是由开发环境来进行管理的,比如内存他是用runtime进行管理的,相对来说要容易得多。两者的关系有点像低级语言和高级语言间的关系。
不管是用OpenCL还是用CUDA C语言来编程,最终它们都是需要通过一个驱动程序来变成一个PTX的代码,PTX相当于CUDA指令集,然后交给图形处理其或者交给硬件来进行执行。
OpenCL对开发者、业界人员和消费者来说都是一个非常好的API,它可以使得开发者很容易的开发出跨平台的GPU计算程序,充分利用GPU强大的计算能力然后应用在各种领域。对于NVIDIA来说,在CUDA架构上除了C语言以外,现在新增加了OpenCL或者DX11这样的API,提供了更多的GPU计算开发环境选择。如果开发者对API很熟悉的话,肯定会乐意看到OpenCL或者新的API的加入,对于他们来说很容易利用这些API开发出各种各样GPU计算程序。
简单的说,OpenCL只是一个API,一个编程接口,它是对CUDA架构的有益补充,实际上OpenCL是利用CUDA驱动程序堆栈来在NVIDIA GPU上实现高性能计算,OpenCL标准的出台,CUDA更是如虎添翼。
目前NVIDIA CUDA的用户超过了25000名,应用程序数量超过100个,应用范围也日趋广泛,相反AMD Stream加速的实际应用暂时是凤毛麟角。OpenCL有助于拓展GPU的功能及市场,难怪NVIDIA和AMD都会积极参与到其中。
(责任编辑:丁伟)
相关推荐
赠送jar包:opencl-3.0-1.5.7.jar; 赠送原API文档:opencl-3.0-1.5.7-javadoc.jar; 赠送源代码:opencl-3.0-1.5.7-sources.jar; 赠送Maven依赖信息文件:opencl-3.0-1.5.7.pom; 包含翻译后的API文档:opencl-3.0...
1. **线程层次结构**:CUDA程序由多个线程块组成,每个线程块又包含多个线程。这种多级结构允许高效地利用GPU的并行资源。 2. **全局内存**:这是所有线程都可以访问的内存空间,用于存储程序的数据。 3. **共享内存...
赠送jar包:opencl-3.0-1.5.7.jar; 赠送原API文档:opencl-3.0-1.5.7-javadoc.jar; 赠送源代码:opencl-3.0-1.5.7-sources.jar; 赠送Maven依赖信息文件:opencl-3.0-1.5.7.pom; 包含翻译后的API文档:opencl-3.0...
官方离线安装包,亲测可用
OpenCL,全称为Open Computing Language,是由Khronos Group开发的一种开放标准,旨在为不同的硬件平台,如CPU、GPU、FPGA等提供统一的编程接口,实现数据并行计算。 在描述中提到的“opencl代码”是指书中可能包含...
OpenCL,全称为Open Computing Language,是一个开放标准的并行编程框架,主要设计用于利用通用计算设备(如CPU)和专业计算设备(如GPU、FPGA等)进行高性能计算。这个“OpenCL代码的存储库”是针对学习者提供的一...
OpenCL,全称为Open Computing Language,是由Khronos Group推出的开源标准,它提供了一种跨平台的方法来访问并行计算设备,如CPU、GPU和其他高性能计算单元。 OpenCL的核心概念包括以下几个方面: 1. 平台和设备...
Modern processor architectures have embraced parallelism as an important pathway to increased performance. Facing technical challenges with higher clock speeds in a fixed power envelope, ...
OpenCL(Open Computing Language)是一种开放标准,用于编写程序,以高效地运行在不同架构的并行计算设备上,如CPU、GPU、FPGA(Field-Programmable Gate Array)和其他加速器。这个压缩包“采用OpenCL 标准实现...
OpenCL,全称为Open Computing Language,是一种开放标准的并行编程框架,主要设计用于异构计算平台,如CPU、GPU、FPGA以及嵌入式系统等。OpenCL V1.1是该规范的一个早期版本,虽然现在大多数设备已经支持更新的...
OpenCL是一个开放式开发语言,旨在提供一个跨平台的统一标准语言,而CUDA是NVIDIA自己的技术。 四、 OpenCL和CUDA的优缺点 OpenCL的优点是: * 跨平台的统一标准语言 * 可以控制GPU和CPU的计算能力 * 通用运算API...
社区提供了一系列开源和商业工具,如AMD APP SDK、NVIDIA CUDA Toolkit等,以支持OpenCL开发。 通过阅读《OpenCL编程指南》,开发者可以学习如何利用OpenCL编写高效、跨平台的并行程序,充分利用现代硬件的计算能力...
- **文档目的**:本指南旨在帮助开发者开始编写能够利用OpenCL的应用程序,即使是在OpenCL v1.0符合要求的实现尚未可用的情况下。 - **过渡到OpenCL**:通过使用C for CUDA计算内核和CUDA驱动API,本指南提供了一种...
### OPENCL最新规范文档version1.0.48 #### 引言 本文档提供了OpenCL(Open Computing Language)版本1.0.48的详细规范。OpenCL是一种用于异构平台上的并行编程和计算的框架,支持跨平台的GPU、CPU和其他处理器的...
为OpenCL:trade_mark:1.2设备构建以NVIDIA:registered:CUDA:trade_mark:代码编写的应用程序。 概念 将应用程序留在NVIDIA:registered:CUDA:trade_mark:中 编译成OpenCL 1.2 在任何OpenCL 1.2 GPU上运行 如何使用 ...
CUDA由NVIDIA公司推出,主要用于其GPU(图形处理器)的编程,而OpenCL则是一个开放标准,适用于多种硬件平台,包括AMD、Intel和NVIDIA的GPU,以及CPU和其他加速器。本文将重点讨论标题为"swan-10-03-12.tar.gz_...
OpenCL,全称为Open Computing Language,是一种开放标准的并行编程框架,主要设计用于利用现代计算机的异构计算资源,如CPU、GPU、FPGA以及ASIC等。它为开发者提供了跨平台的API(应用程序接口),使得开发人员可以...