您的位置:首页 > 其它

CUDA开源 轻松跑AMD GPU/Intel x86 CPU

2014-01-17 15:35 183 查看
第1页:NVIDIA宣布开源CUDA

英伟达公司近日宣布,公司将向学术研究人员与软件工具开发商提供用于新款英伟达 (NVIDIA) CUDA LLVM 编译器的源代码,让他们能够更轻松地为更多编程语言增添 GPU 支持、在替代处理器架构上支持 CUDA 应用程序。这标志着原本封闭的CUDA走向了开放,CUDA既可以运行非NVIDIA GPU产品也可以运行其他家的解决方案,并且能够让原本用于CUDA的程序也能够用于其他的平台进行高速计算,那么今天我们就目前异构计算的三大阵营:CUDA、DirectCompute、OpenCL进行对比分析,明年将是异构计算发展重要的一年,很值得了解。

  LLVM 是一款应用广泛、采用模块化设计的开源编译器基础架构,这种设计使其能够轻松地支持新的编程语言和处理器架构。诸多领先企业将 LLVM 用于各种编程需求,这类企业包括 Adobe、苹果、克雷以及美国艺电等等。



  基于 LLVM 的新款 CUDA 编译器在架构方面增强了对英伟达并行 GPU 的支持。现已上市的最新版本 CUDA Toolkit (v4.1) 包含该编译器。

  Ocelot 项目的内容是把运用 CUDA C 语言编写的软件移植到不同的处理器架构上来。佐治亚理工学院教授兼 Ocelot 项目负责人 Sudhakar Yalamanchili 表示:“开放 CUDA 平台是英伟达迈出的重要一步。异构是未来计算的大势所趋,而 CUDA 编程模型可提供一种十分有效的方法,让开发者能够在多种不同类型处理器上最大限度提升性能,其中包括AMD GPU 和Intel x86 CPU。”



  开发者需要针对特定领域的问题和未来编程模型而对异构并行系统进行编程,促成这种编程的替代方法有助于加速实现百亿亿次级 (Exascale) 计算。 通过发布 CUDA 编译器和内部表示 (IR) 格式的源代码,英伟达将让研究人员能够更灵活地将CUDA编程模型移植到其它架构上来,推动下一代更高性能计算平台的发展。

  软件工具开发商还可以利用编译器源代码技术来打造定制的解决方案。

  The Portland Group主任Doug Miles 表示:“这一积极的行动让PGI能够开发出原生CUDA Fortran 和OpenACC 编译器。与英伟达CUDA C/C++一样,这些编译器能够利用相同的设备级优化技术。 此举将让开发者能够利用现有工具实现无缝调试与分析,而且让PGI能够专注于更高级别的优化与语言特性。”

第2页:NVIDIA开放替代封闭

像CUDA这样的GPGPU技术原来是属于高性能计算、大规模模拟等领域的。例如,CUDA是一个安全团队在2009年用于计算GSM加密代码本的系统。但是,GPGPU正在越来越多地用于桌面应用程序,特别是在图像和视频处理方面。用于开源三维软件Blender的3D渲染器正在研究支持GPGPU。流行的开源软件全景照片编辑器Hugin使用的Nona连接工具有一个GPU后端。Gimp公司已经在试验为其GEGL图像处理库编写一个GPU后端。

对于Linux用户来说,CUDA的主要问题是它是一个专有的软件,一个仅用于NVIDIA的标准,需要运行闭源的、仅二进制的NVIDIA驱动程序。这使许多发布版软件不可能包含这个软件,从而限制开发人员编写只能在一家厂商的硬件上运行的代码。

ATI在2007年推出了一个名为CTM(Close To Metal)的与闭源的GPGPU竞争的系统。这是为其GPU设计的。然而,在2008年,ATI宣布它将在未来的发布中支持开放标准OpenCL(用于开放计算语言)。OpenCL原来是在苹果开发的,但是,现在由Khronos Group管理。这家公司还维护OpenCL标准。

自从ATI宣布支持OpenCL以来,NVIDIA开始为其GPU研制OpenCL。测试版开始在2009年年底出现。不过,同CUDA发布版一样,NVIDIA用于Linux的OpenCL工具需要二进制的NVIDIA驱动程序。寻求完全免费的GPGPU框架的开发人员也许必须要等待开源软件Gallium3D计划。

同时,如果你要开始编写在Linux中利用GPU的代码,CUDA架构是目前可用的速度最快的和最成熟的解决方案。

不知道是不是由于AMD 最近在OpenCL的开源方面动作带来的压力,NVIDIA宣布开源旗下的通用 GPU 计算 CUDA 编译器。

在 GTC Asia 上 NVIDIA 宣布将其通用图形处理器计算技术的 CUDA 的编译器开源(尚未明确将采用按照何种开源协议),从而允许软件厂商将 CUDA 程序移植到其他非 NVIDIA 设备上。业界推测此举可能是由于很多软件厂商受到来自客户方面的压力,要求将迁移到更加开放的高性能计算平台比如 OpenCL 上。

此外 NVIDIA 还宣布将和高校建立 CUDA 教育中心,在学生中传播并行计算的技术。

第3页:NVIDIA CUDA简析

CUDA(Compute Unified Device Architecture),显卡厂商NVidia推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员现在可以使用C语言来为CUDA架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA的处理器上以超高性能运行。 将来还会支持其它语言,包括FORTRAN以及C++。

简介

计算行业正在从只使用CPU的“中央处理”向CPU与GPU并用的“协同处理”发展。为打造这一全新的计算典范,NVIDIA;(英伟达)发明了CUDA(Compute Unified Device Architecture,统一计算设备架构)这一编程模型,是想在应用程序中充分利用CPU和GPU各自的优点。现在,该架构现已应用于GeForce®(精视)、ION(翼扬)、Quadro以及Tesla GPU(图形处理器)上,对应用程序开发人员来说,这是一个巨大的市场。

在消费级市场上,几乎每一款重要的消费级视频应用程序都已经使用CUDA加速或很快将会利用CUDA来加速,其中不乏Elemental Technologies公司、MotionDSP公司以及LoiLo公司的产品。

在科研界,CUDA一直受到热捧。例如,CUDA现已能够对AMBER进行加速。AMBER是一款分子动力学模拟程序,全世界在学术界与制药企业中有超过60,000名研究人员使用该程序来加速新药的探索工作。

在金融市场,Numerix以及CompatibL针对一款全新的对手风险应用程序发布了CUDA支持并取得了18倍速度提升。Numerix为近400家金融机构所广泛使用。

CUDA的广泛应用造就了GPU计算专用Tesla GPU的崛起。全球财富五百强企业现在已经安装了700多个GPU集群,这些企业涉及各个领域,例如能源领域的斯伦贝谢与雪佛龙以及银行业的法国巴黎银行。

随着微软Windows 7与苹果Snow Leopard操作系统的问世,GPU计算必将成为主流。在这些全新的操作系统中,GPU将不仅仅是图形处理器,它还将成为所有应用程序均可使用的通用并行处理器。

背景

计算正在从CPU"中央处理"向CPU与GPU"协同处理"的方向发展。 为了实现这一新型计算模式,英伟达发明了英伟达 CUDA 并行计算架构。该架构现在正运用于英伟达 (NVIDIA) Tesla、英伟达 Quadro (NVIDIA Quadro) 以及英伟达 精视 (NVIDIA GeForce) GPU上。对应用程序开发商来说,英伟达 CUDA 架构拥有庞大的用户群。

在科学研究领域,英伟达 CUDA 受到狂热追捧。 例如,英伟达 CUDA 能够加快AMBER这款分子动力学模拟程序的速度。全球有6万余名学术界和制药公司的科研人员使用该程序来加速新药开发。 在金融市场,Numerix和CompatibL已宣布在一款对手风险应用程序中支持英伟达 CUDA ,而且因此实现了18倍速度提升。

在GPU计算领域中,英伟达 Tesla GPU的大幅增长说明了英伟达 CUDA 正被人们广泛采用。 目前,全球《财富》五百强企业已经安装了700多个GPU集群,从能源领域中的斯伦贝谢和雪佛龙到银行业中的法国巴黎银行,这些企业的范围十分广泛。

发展历程

随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像计算以外的目的。

目前只有G80、G92、G94、G96、GT200、GF100、GF110平台(即Geforce 8~Gecorce GTX590)的NVidia显卡才能使用CUDA,工具集的核心是一个C语言编译器。G80中拥有128个单独的ALU,因此非常适合并行计算,而且数值计算的速度远远优于CPU。

CUDA的SDK中的编译器和开发平台支持Windows、Linux系统,可以与Visual Studio2005集成在一起。

Geforce8CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。

从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动(表2)。

开发库是基于CUDA技术所提供的应用开发库。目前CUDA的1.1版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶变换)和CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。

运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。

由于目前存在着多种GPU版本的NVidia显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVidia公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品

CUDA 工具包

是一种针对支持CUDA功能的GPU(图形处理器)的C语言开发环境。CUDA开发环境包括:

· nvcc C语言编译器

  · 适用于GPU(图形处理器)的CUDA FFT和BLAS库

· 分析器

  · 适用于GPU(图形处理器)的gdb调试器(在2008年3月推出alpha版)

  · CUDA运行时(CUDA runtime)驱动程序(目前在标准的NVIDIA GPU驱动中也提供)

CUDA编程手册

  CUDA开发者软件开发包(SDK)提供了一些范例(附有源代码),以帮助使用者开始CUDA编程。这些范例包括:

  · 并行双调排序

  · 矩阵乘法

  · 矩阵转置

  · 利用计时器进行性能评价

  · 并行大数组的前缀和(扫描)

  · 图像卷积

  · 使用Haar小波的一维DWT

  · OpenGL和Direct3D图形互操作示例

  · CUDA BLAS和FFT库的使用示例

  · CPU-GPU C—和C++—代码集成

  · 二项式期权定价模型

  · Black-Scholes期权定价模型

  · Monte-Carlo期权定价模型

  · 并行Mersenne Twister(随机数生成)

  · 并行直方图

  · 图像去噪

  · Sobel边缘检测滤波器

  · MathWorks MATLAB;

  新的基于1.1版CUDA的SDK 范例现在也已经发布了。

技术功能

  · 在GPU(图形处理器)上提供标准C编程语言

  · 为在支持CUDA的NVIDIA GPU(图形处理器)上进行并行计算而提供了统一的软硬件解决方案

  · CUDA兼容的GPU(图形处理器)包括很多:从低功耗的笔记本上用的GPU到高性能的,多GPU的系统。

  · 支持CUDA的GPU(图形处理器)支持并行数据缓存和线程执行管理器

  · 标准FFT(快速傅立叶变换)和BLAS(基本线性代数子程序)数值程序库

  · 针对计算的专用CUDA驱动

  · 经过优化的,从中央处理器(CPU)到支持CUDA的GPU(图形处理器)的直接上传、下载通道

  · CUDA驱动可与OpenGL和DirectX图形驱动程序实现互操作

  · 支持Linux 32位/64位以及Windows XP 32位/64位 操作系统

  · 为了研究以及开发语言的目的,CUDA提供对驱动程序的直接访问,以及汇编语言级的访问

其他信息

NVIDIA进军高性能计算领域,推出了Tesla&CUDA高性能计算系列解决方案,CUDA技术,一种基于NVIDIA图形处理器(GPU)上全新的并行计算体系架构,让科学家、工程师和其他专业技术人员能够解决以前无法解决的问题,作为一个专用高性能GPU计算解决方案,NVIDIA把超级计算能够带给任何工作站或服务器,以及标准、基于CPU的服务器集群

CUDA是用于GPU计算的开发环境,它是一个全新的软硬件架构,可以将GPU视为一个并行数据计算的设备,对所进行的计算进行分配和管理。在CUDA的架构中,这些计算不再像过去所谓的GPGPU架构那样必须将计算映射到图形API(OpenGL和Direct 3D)中,因此对于开发者来说,CUDA的开发门槛大大降低了。CUDA的GPU编程语言基于标准的C语言,因此任何有C语言基础的用户都很容易地开发CUDA的应用程序。

由于GPU的特点是处理密集型数据和并行数据计算,因此CUDA非常适合需要大规模并行计算的领域。目前CUDA除了可以用C语言开发,也已经提供FORTRAN的应用接口,未来可以预计CUDA会支持C++、Java、Python等各类语言。可广泛的应用在图形动画、科学计算、地质、生物、物理模拟等领域。

2008年NVIDIA推出CUDA SDK2.0版本,大幅提升了CUDA的使用范围。使得CUDA技术愈发成熟

目前

  支持CUDA的GPU销量已逾1亿,数以千计的软件开发人员正在使用免费的CUDA软件开发工具来解决各种专业以及家用应用程序中的问题。这些应用程序从视频与音频处理和物理效果模拟到石油天然气勘探、产品设计、医学成像以及科学研究,涵盖了各个领域。 目前市面上已经部署了超过一亿颗支持CUDA的GPU,数以千计的软件开发人员正在使用免费的CUDA软件工具来为各种应用程序加速。

CUDA 的核心有三个重要抽象概念: 线程组层次结构、共享存储器、屏蔽同步( barrier   synchronization),可轻松将其作为C 语言的最小扩展级公开给程序员。

CUDA 软件堆栈由几层组成,一个硬件驱动程序,一个应用程序编程接口(API)

和它的Runtime, 还有二个高级的通用数学库,CUFFT 和CUBLAS。硬件被设计成支持轻量级的驱动和Runtime 层面,因而提高性能。

所支持的OS(operating system)

CUDA目前支持linux和Windows操作系统。进行CUDA开发需要依次安装驱动、toolkit、SDK三个软件。在安装目录/C/src目录下有很多的例程可以进行学习。

第4页:Directcompute展示

除了CUDA以外,现在已经有另外两大强大的阵营:Directcompute和OpenCL,接下来就让我们来一一了解它们的详细情况吧。

Directcompute是一种用于GPU通用计算的应用程序接口,由Microsoft(微软)开发和推广,集成在Microsoft DirectX内。其中DirectX 10内集成Directcompute 4.0;DirectX 10.1内集成Directcompute 4.1;DirectX 11内集成Directcompute 5.0 。与Directcompute起到相同作用的还有OpenCL和CUDA。其中Directcompute和OpenCL是开放标准,CUDA是基于nVIDIA CUDA架构的私有标准。

支持DX10的GPU可以利用Directcompute的一个子集进行通用计算,支持DX11的GPU则可以使用完整的DirectCompute功能。nVIDIA CUDA技术和ATI Stream技术(现在称为AMD APP技术)均提供对Directcompute的支持。

Directcompute概览

1.GPU通用计算API

GPU通用计算技术,简单的说就是让GPU(显卡核心)处理图形数据之外的其他数据。

在过去的几年里,GPU一直以每年或每半年更新一代的速度发展,其发展速度已远把CPU抛在后面。随着DirectX 10规范的出现,GPU开始采用统一渲染架构,其性能与功能也变得更为强大,它能做的事情已不单只是运行3D游戏,不少科学计算领域已开始利用GPU的优势进行计算。ATI最先提出通用计算的概念,与斯坦福大学合作,在Folding@Home研究项目中利用ATI Radeon X1900作运算加速。通过GPU来模拟蛋白质合成,进而找寻有关蛋白质的疾病。自ATI R520 GPU问世以来,基于它的可编程架构,ATI投入大量资源研究通用计算,也就是说用GPU处理非图形数据,处理一般在主流服务器和桌面处理器上运行的软件,性能比CPU高出10-30倍。

由于CPU与GPU在架构完全不同,软件要在GPU上运行,就必须通过特定的环境或接口。通俗来说,就是需要一种工具,把程序员的语言翻译成GPU听的懂的语言。这个工具,就叫做GPU通用计算API。目前主流的通用计算API包括OpenCL 、Directcompute。当然还有nVIDIA CUDA架构和ATI Stream架构也可实现相同的功能 。

2.Directcompute简介

随着业界对GPU通用计算技术的认可与重视,不同的厂商开始提供不同的GPU通用计算API解决方案。其中nVIDIA最先提出CUDA,但是CUDA是一种基于CUDA架构的私有标准,非CUDA架构的GPU(例如AMD GPU)无法使用。除了CUDA外,还有OpenCL,他是由苹果提出的,得到业界多家厂商支持的开放标准。

但是OpenCL的成员中并不包括微软,作为业界的领军者,微软自己推出了DirectCompute,并集成在DirectX内。当然DirectCompute也是一种开放的标准,由于微软在业界的地位,nVIDIA和AMD均提供对DirectCompute 的支持。

另外,nVIDIA CUDA只是面向GPU通用计算,而OpenCL和Directcompute则在面向GPU通用计算的同时,还支持CPU+GPU异构运算。因此nVIDIA在不断发展自身CUDA的同时,也要同时兼顾对OpenCL和Directcompute的支持。因为任何私有标准都是没有前途的。

Directcompute是Windows 7操作系统里最重要的一个组成部分,在Windows 7中,CPU与GPU组成了协同处理环境。它们的分工是,CPU运算非常复杂的序列代码,而GPU则运行大规模并行应用程序。 因此,在Windows 7,CPU与GPU功能平衡,可以提供更快、更可视化的Windows 7体验。也标志着主流的桌面级操作系统开始迈向异构通用计算。

3.Directcompute技术的硬件支持

nVIDIA Geforce8系列,9系列,GT200系列,GT400系列,GT500系列 ,ION系列。AMD Radeon HD4000系列,HD5000系列,HD6000系列显卡均提供最Directcompute的硬件支持。

4.Directcompute的操作系统支持

Windows Vista(需更新KB971512补丁,以便打开Vista的DirectX 11支持)、Windows 7、Windows Server 2008提供对Directcompute的支持。Windows XP以下和非Windows系统不在支持之列。

Directcompute技术的实际应用

1.视频处理

GPU在视频转码方面有着得天独厚的优势。Windows 7增加了视频即时拖放转换功能,可以将电脑中的视频直接转换到移动媒体播放器上,如果你的GPU支持Directcompute,那么这一转换过程就将由GPU完成。其转换速度将达到CPU5-6倍。

Windows 7中的Windows Media Player和Windows Media Center增加了对H.264和Quicktime.mov.content高清播放的原生支持。Windows 7还增加了对由GPU支持的高清播放的in-the-box支持,可以流畅观看,同时CPU占用率很低。这一切都是借助Directcompute实现的。

CyberLink旗下软件最新版均提供Directcompute支持。

在AMD显卡上,通过ATI Stream技术实现,在nVIDIA显卡上,则通过CUDA技术实现。

2.物理加速

  

nVIDIA公司非常成功的将PhysX物理引擎,通过CUDA技术与Geforce显卡相结合,诞生了nVIDIA PhysX物理加速技术,但是PhysX物理加速技术是基于私有的CUDA标准。为了与之竞争,AMD推出了基于OpenCL和Directcompute的“开放物理计划”与之抗衡。开放物理计划联合了Havok、Bullet和Pixelux DMM三种物理引擎,基于ATI Stream、OpenCL和Directcompute,将AMD GPU中强大的并行计算能力运用到游戏中去加速物理计算。同时开放物理计划也贯彻了异构运算理念,由CPU+GPU联合进行物理计算,GPU负责柔性材料模拟、流体模拟、爆炸模拟等大计算量的物理模拟计算。任何支持Directcompute技术的显卡都将支持这一计划。

3.动态模拟

  

利用Directcompute技术,GPU可以对自然界的事物做动态模拟,达到以假乱真的效果。

右图是nVIDIA制作的DEMO,透过Directcompute技术,在GPU上运算快速傅里叶变换,展现了模拟的动态海洋。

随着技术的发展, 动态模拟越来越多的用到游戏中,为我们在游戏中带来栩栩如生的虚拟世界。

4.网页加速

Internet Explorer 9加入了对Directcompute技术的支持,可以调用GPU对网页中的大计算量元素做加速计算,从而减轻CPU的负担。 在AMD显卡上,通过ATI Stream技术实现,在nVIDIA显卡上,则通过CUDA技术实现。

5.办公软件

Excel2010、Powerpoint2010均提供Directcompute技术支持。在AMD显卡上,通过ATI Stream技术实现,在nVIDIA显卡上,则通过CUDA技术实现。

第5页:OpenCL规范简介

OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。

OpenCL工作组成员

OpenCL工作组的成员包括:3Dlabs、AMD、苹果、ARM、Codeplay、爱立信、飞思卡尔、Graphic Remedy、IBM、Imagination Technologies、Intel、诺基亚、NVIDIA、摩托罗拉、QNX、高通,三星、Seaweed、德州仪器和瑞典Ume大学等。

像Intel、NVIDIA和AMD都是这个标准的支持者,不过微软并不在其列。

历史

2008年6月的WWDC大会上,苹果提出了OpenCL规范,旨在提供一个通用的开放API,在此基础上开发GPU通用计算软件。随后,Khronos Group宣布成立GPU通用计算开放行业标准工作组,以苹果的提案为基础创立OpenCL行业规范。

仅仅半年后,标准就已经完工。Khronos工作组总裁,NVIDIA副总裁NeilTrevett对OpenCL的定稿速度相当自豪:“如果你去看看其他的大型行业标准,制定过程花上5年都是相当普遍的事情。要把这一过程缩短到18个月都相当困难,我们之前的纪录是12个月。但这一次,我们只用了6个月。”

如此赶工的目的正是为了赶上Mac OS X 10.6 Snow Leopard的发布日程。Intel公司TimMattson在发布会上表示:“当时情况就是这样,如果我们能够赶上苹果这个近乎不可能实现的时间表,就能够得到SnowLeopard的支持,那对我们将是一个巨大的推动。为了实现这个目标,我忙得都快离婚了,每周两次电话会议,面对面会议不计其数,我都不知道我在这活上花了多少个小时了。我已经精疲力竭,都快挂了。在最初的会议上,我就是那个认为这个时间不可能达成的人。但是我错了,我们办到了,而且标准定义的相当完整。对此我相当自豪。”

发布会上,Neil Trevett、Tim Mattson以及来自AMD公司的BenGaster都进行了演讲,展示了OpenCL的功能和代码范例,但并没有对该API的具体实现进行演示。因为目前该标准正在工作组各成员企业的法律顾问手中进行检查,确保不会触及公司的知识产权或专利。30天的法律问题考察期结束后,各成员将最终签字令标准生效。届时OpenCL标准的具体规格和Demo演示就将公开。而随着明年Snow Leopard的发布,OpenCL也将正式进入实用。

Neil Trevett表示,如果苹果将OpenCL嵌入SnowLeopard的工作能够顺利完成,图像处理、视频处理软件商将迎来巨大的商机:“每台Mac中都封禁了一台超级计算机,只是很难将其释放出来。OpenCL就将解放GPU强悍的运算能力。”除此之外,OpenCL还将在GPU物理加速等领域施展拳脚。更重要的是,它并不限制底层硬件。无论NVIDIA还是AMD显卡,在Snow Leopard下都能使用同样的代码实现通用计算,未来甚至iPhone等掌上设备也有可能实现支持。

OpenCL支持现状

2009年6月NVIDIA首家发布了支持OpenCL 1.0通用计算规范的驱动程序,支持Windows和Linux操作系统。   2009年8月初AMD首次发布了可支持X86处理器的OpenCL SDK——ATI Stream SDK v2.0Beta,立即交由业界标准组织KHRONOS进行审核。

使用OpenCL

目前,NVIDIA显卡对OpenCL技术支持得比较到位,所以这里仅用NVIDIA的Geforce(精视)系列显卡作解释。

中国用户可以登录英伟达中文官方网站上下载到最新的驱动程序,只要您下载的驱动是195.62版本或更高,就可以在Geforce(精视)8系列或更高级的显卡中开启OpenCL,在安装好新版本的显卡驱动程序并重新启动后,OpenCL就自动开启了。当有需要使用CPU来完成的工作如转换视频时,GPU就会帮助CPU进行运算,以提高转换速度。但是在3D游戏中应该是不会调用OpenCL的,因为显卡有自己的硬件加速功能以及物理引擎,所以Geforce(精视)8系列及以上的显卡就不需要CPU辅助进行渲染了。这时候,您就可以一边玩游戏,一边进行消耗CPU的工作了。

当然同样,在NVIDIA的Quadro系列专业显卡中,同样能够使用OpenCL技术。只要您的显卡能够达到CUDA的要求,就能够正常使用OpenCL,以获得优异的CPU运算效率。

在AMD-ATI的Stream技术中,已经为日常使用、办公、游戏等提供物理加速。原理与OpenCL基本相同,但是,目前AMD-ATI还没有进行推广,但是官方承诺,在日后会逐渐增多Stream支持的游戏。但是Stream使用的显卡平台还是比较高,而性能非常优异的显卡无疑带来更高昂的价格,我们也同样希望AMD能够做到像NVIDIA那样,只需要支持DirectX10的显卡就能开启OpenCL(Geforce 8系列显卡基本能完美支持DirectX10,所以官方将开启OpenCL的显卡最低定为8系列),以方便更多的AMD-ATI用户。

OpenCL 1.0

OpenCL 1.0主要由一个并行计算API和一种针对此类计算的编程语言组成,此外还特别定义了:

1、C99编程语言并行扩展子集;

2、适用于各种类型异构处理器的坐标数据和基于任务并行计算API;

3、基于IEEE 754标准的数字条件;

4、与OpenGL、OpenGL ES和其他图形类API高效互通。

OpenCL 1.1

Khronos Group2010年6月15日宣布,OpenCL通用计算标准的1.1版本已经发放,开发者可以免费下载,并依照新标准开始进行编程。

OpenCL 1.1标准向下兼容1.0版,提供了更多的新功能,并对性能进行了改善。主要新特性包括:

- 支持新数据类型,如3维适量和新增图像格式。

- 支持处理多Host指令以及跨设备Buffer处理。

- Buffer区域操作,包括对1D、2D、3D三角形区域的读、写和拷贝操作。

- 改进驱动和控制指令执行的事件应用。

- 增加OpenCL内建C功能。

- 通过链接OpenCL和OpenGL事件,高效共享图像和Buffer,改进与OpenGL的互操作性。

OpenCL标准由Khronos Group的OpenCL工作组制定,完全开放,任何开发者都可免费使用。OpenCL工作组成员包括(英文首字母排序):3DLABS、动视暴雪、AMD、苹果、ARM、Broadcom、CodePlay、EA、爱立信、飞思卡尔、富士通、通用电气、Graphic Remedy、HI、IBM、Intel、Imagination Technologies、美国Los Alamos国家实验室、摩托罗拉、Movidia、诺基亚、NVIDIA、Petapath、QNX、高通、RapidMind、三星、Seaweed、S3、意法半导体、Takumi、德州仪器、东芝和Vivante。

目前,NVIDIA已经表示将首家提供对OpenCL 1.1标准的支持,很快就会推出支持新标准的NVIDIA GPU通用计算驱动程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: