CUDA应用:引领未来超级计算

2009-5-20 来源: 互联网

关键字: CUDA NVIDIA GPU 

  随着电脑技术的不断发展,我们感受很深的是两大电脑部件的升级越来越快,处理器的发展从单核到双核,根据摩尔定律,其并行性还会不短发展。显卡的发展,也是同样不断发展,当人们认为显卡只能单单在视觉化不断给与我们更多的享受,例如游戏画面从2D到3D,然后是要求更加真实的物理效果,商业用户利用显卡进行3D电影的制作,NVIDIA方面已经在研究如何不单单只是在视觉化上更真实,并性架构的双核处理器目前已经成为主流的配置平台,为未来相信随着时间的推移还会继续普及更多核心的处理器。但是显卡的架构我们来分析一下,会发现其不单单是双核那么简单,而且就是采用并行架构来处理数据的。

  上图可以看出CPU除了专门的运算的ALU之外,还集成了一大块的缓存Cache,这样设计是因为CPU处理数据比较弹性,从简单的逻辑运算到复杂的高级运算。但是对于很多的科学运算来说,很多都是简单的数据处理,这样的话就好比一个人做同样的工作,后面拍了很长的任务都是一样的。

  而看GPU的架构图可以看出,GPU专为计算密集型、高度并行化的计算而设计的,因此,GPU的设计将更多的晶体管用与数据处理,对于高度的并行化运算,利用 CUDA 处理的问题,可以同时大量并行化的运算。相当于一下子多了很多个人同时工作,大大减少等待的时间。当然最适合利用 CUDA 处理的问题,是可以大量并行化的问题,才能有效隐藏内存的 latency,并有效利用显示芯片上的大量执行单元。使用 CUDA 时,同时有上千个 thread 在执行是很正常的。因此,如果不能大量并行化的问题,使用 CUDA 就没办法达到最好的效率了。

  GPU的发展现在越来越强大,而且GPU为显示图像做了优化。在计算上更已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此在GPU领域有着举足轻重的NVidia推出CUDA,让显卡可以用于图像计算以外的目的。GPU的性能已经远比当初强大,昔日停留在“视频卡”的概念也逐渐改变,GPU负责的事情已经超越原本单纯的2D/3D处理,它更多以协处理器的形式服务于制图工作者以及科研人员。未来的计算机时代将是视觉处理技术的时代,业界的领军者曾经指出。

  工作负荷迅速从CPU向GPU(图形处理器)的转移不断鼓舞着消费类应用程序的开发。在NVISION 2008大会上,全球视觉计算技术的行业领袖NVIDIA(英伟达)公司向世人展现了新GPU时代的四大技术:使GPU担负更多应用工作的CUDA、进一步从游戏中解放CPU的游戏PhysX加速、为游戏用户提供亲历其境体验的3D Stereo、为发烧游戏用户提供更极致体验的SLi技术。nVIDIA将这四项技术统称为GeForce四大内功(Force WithIn)。说到这里我们不能不说说CUDA这个改变GPU的技术。

  那么什么是CUDA,CUDA是一种并行编程模型和软件环境,用于应对这种挑战。而对于熟悉C语言等标准编程语言的程序员来说,迅速掌握CUDA绝非难事。

  CUDA的诞生

  在CUDA诞生之前,GPU的主要作用是进行图形渲染,业内公司曾提出过各种GPU运算的解决方案,但是真正成形的屈指可数。NVIDIA CUDA技术是当今世界上唯一针对NVIDIA GPU 的C语言环境,该技术充分挖掘出NVIDIA GPU巨大的计算能力。凭借NVIDIA CUDA技术,开发人员能够利用NVIDIA GPU(图形处理器)攻克极其复杂的密集型计算难题。

  首先我们介绍一下CUDA这个技术,和对于用户和行业来讲有什么促进和帮助?

  CUDA的诞生

  在CUDA诞生之前,GPU的主要作用是进行图形渲染,业内公司曾提出过各种GPU运算的解决方案,但是真正成形的屈指可数。

  NVIDIA CUDA技术是当今世界上唯一针对NVIDIA GPU 的C语言环境,该技术充分挖掘出NVIDIA GPU巨大的计算能力。

  凭借NVIDIA CUDA技术,开发人员能够利用NVIDIA GPU(图形处理器)攻克极其复杂的密集型计算难题。

  那么CUDA有什么优势,我们引用了一下NVIDIA官方网站的描述

  CUDA开发包是一个完整的使用GPU的软件开发方案。在SDK包含了标准的FFT和BLAS库、使用NV GPU的C编译器和运行时驱动。CUDA运行时驱动是与常用的同DX和GL协同工作的驱动独立的。同时CUDA对Linux和XP的支持也是相同的。

  技术特性 

  • CUDA为线程计算提供了一个统一的硬件和软件解决方案来使用支持CUDA的GPU
  • 可支持CUDA的GPU为高性能计算提供并行数据缓冲和线程执行管理器的支持
  • 可以在GPU上使用的标准C语言
  • 提供了标准数值库FFT和BLAS
  • 为计算提供了独立的CUDA驱动
  • 优化了GPU和CPU之间的数据通信路径
  • CUDA驱动可以在图形设备之间互操作
  • 支持 LINUX 与 XP 操作系统
  • 从高性能的专业图形解决方案到移动和嵌入式GPU均能使用
  • 为高计算密度程序内建多GPU支持
  • 为程序开发和优化提供硬件调试的性能测试的支持

  下面是引用了NVIDIA(英伟达)亚太区技术经理邓培智先生的演讲:实际上我们八系列研发的时候,CUDA已经开始提出来了,我们就考虑到用GPU做通用计算的可能性,因为过去要用GPU做通用计算是很复杂的,你没有关键工具,你必须要使用OP机啊,3D这些来进行编程,这个编程是非常复杂的,比如说像计算编程里面,或者各种各样的计算程序编程人员对图形不是很了解,如果用3D来进行编程这是很痛苦的事情,而CUDA,你可以把它看成图形处理器也可以看成通用处理器,可以用C语言对GPU进行开发,这样就是这么一个瓶颈就不存在了,用GPU进行编程跟C语言编程是一样的了。

  统一渲染架构

  这一概念的出现,其初衷就如前面说到,在目前许多新的大型3D游戏中,许多独立渲染的场景由大量多边形组成,对GPU的Vertex Shader(顶点着色器)要求很大,而这时相对来说,并不需要太多的像素渲染操作,这样便会出现像素渲染单元被闲置,而顶点着色引擎却处于不堪重荷的状态,统一渲染架构的出现,有助于降低Shader单元的闲置状态,大大提高了GPU的利用率。

  所谓统一渲染架构,大家可以理解为将Vertex Shader、Pixel Shader以及DirectX 10新引入的Geometry Shader进行统一封装。此时,显卡中的GPU将不会开辟独立的管线,而是所有的运算单元都可以任意处理任何一种Shader运算。这使得GPU的利用率更加高,也避免了传统架构中由于资源分配不合理引起的资源浪费现象。这种运算单元就是现在我们经常提到的统一渲染单元(unified Shader),大体上说,unified Shader的数目越多,显卡的3D渲染执行能力就越高,因此,现在unified Shader的数目成为了判断一张显卡性能的重要标准。


步入DX10时代,shader单元数量成为衡量显卡级别的重要参数之一

  GT200核心架构分析

  GeForce GTX 200系列带来了全新的第二代统一架构。而第二代统一架构最大的特点就是在全部继承第一代统一架构的优点后,提升各单元处理器能力的同时也提升了效率,真正意义上把同一架构发挥至极点。为了适应未来并行运算的需要,GeForce GTX 200系列显卡开创性提供了2种不同的架构——并行处理架构与图形处理器架构。


完整的GT200架构

  从上面的架构图可以看出,GeForce GTX 200系列可以分为四个层,最上面一层包括了图形处理器所需要的几何着色器(Geometry Shader)、顶点着色器(Vertex shader)以及像素着色器(Pixel shader)。中间一层包括了10组TPCs(计算处理器群集),每组TPC里面又包含了3组SMs(流处理器组),每组SM里面就包含了8个流处理器单元或计算单元。这样一来,GeForce GTX 200显卡就一共包含了240个流处理器单元或计算单元。在TPCs下面就是纹理单元以Atomic单元(在并行计算中负责处理冲突的单元)。在下面就是ROPs(光栅化处理器引擎)以及显存接口。

  在NVIDIA八代显卡和GTX200都是并行架构设计,下面我们分析一下GPU的处理架构。




<<首页 <上一页  1  2  3  4  5  下一页>  末页>>  
责任编辑:熊东旭