CUDA应用文章.docx

上传人:b****6 文档编号:15875465 上传时间:2023-07-08 格式:DOCX 页数:9 大小:204.44KB
下载 相关 举报
CUDA应用文章.docx_第1页
第1页 / 共9页
CUDA应用文章.docx_第2页
第2页 / 共9页
CUDA应用文章.docx_第3页
第3页 / 共9页
CUDA应用文章.docx_第4页
第4页 / 共9页
CUDA应用文章.docx_第5页
第5页 / 共9页
CUDA应用文章.docx_第6页
第6页 / 共9页
CUDA应用文章.docx_第7页
第7页 / 共9页
CUDA应用文章.docx_第8页
第8页 / 共9页
CUDA应用文章.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

CUDA应用文章.docx

《CUDA应用文章.docx》由会员分享,可在线阅读,更多相关《CUDA应用文章.docx(9页珍藏版)》请在冰点文库上搜索。

CUDA应用文章.docx

CUDA应用文章

随着电脑技术的不断发展,我们感受很深的是两大电脑部件的升级越来越快,处理器的发展从单核到双核,根据摩尔定律,其并行性还会不短发展。

显卡的发展,也是同样不断发展,当人们认为显卡只能单单在视觉化不断给与我们更多的享受,例如游戏画面从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(图形处理器)的转移不断鼓舞着消费类应用程序的开发。

在NVISION2008大会上,全球视觉计算技术的行业领袖NVIDIA(英伟达)公司向世人展现了新GPU时代的四大技术:

使GPU担负更多应用工作的CUDA、进一步从游戏中解放CPU的游戏PhysX加速、为游戏用户提供亲历其境体验的3DStereo、为发烧游戏用户提供更极致体验的SLi技术。

nVIDIA将这四项技术统称为GeForce四大内功(ForceWithIn)。

说到这里我们不能不说说CUDA这个改变GPU的技术。

  那么什么是CUDA,CUDA是一种并行编程模型和软件环境,用于应对这种挑战。

而对于熟悉C语言等标准编程语言的程序员来说,迅速掌握CUDA绝非难事。

  CUDA的诞生

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

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

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

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

  CUDA的诞生

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

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

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

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

  CUDA开发包是一个完整的使用GPU的软件开发方案。

在SDK包含了标准的FFT和BLAS库、使用NVGPU的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的VertexShader(顶点着色器)要求很大,而这时相对来说,并不需要太多的像素渲染操作,这样便会出现像素渲染单元被闲置,而顶点着色引擎却处于不堪重荷的状态,统一渲染架构的出现,有助于降低Shader单元的闲置状态,大大提高了GPU的利用率。

  所谓统一渲染架构,大家可以理解为将VertexShader、PixelShader以及DirectX10新引入的GeometryShader进行统一封装。

此时,显卡中的GPU将不会开辟独立的管线,而是所有的运算单元都可以任意处理任何一种Shader运算。

这使得GPU的利用率更加高,也避免了传统架构中由于资源分配不合理引起的资源浪费现象。

这种运算单元就是现在我们经常提到的统一渲染单元(unifiedShader),大体上说,unifiedShader的数目越多,显卡的3D渲染执行能力就越高,因此,现在unifiedShader的数目成为了判断一张显卡性能的重要标准。

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

  GT200核心架构分析

  GeForceGTX200系列带来了全新的第二代统一架构。

而第二代统一架构最大的特点就是在全部继承第一代统一架构的优点后,提升各单元处理器能力的同时也提升了效率,真正意义上把同一架构发挥至极点。

为了适应未来并行运算的需要,GeForceGTX200系列显卡开创性提供了2种不同的架构——并行处理架构与图形处理器架构。

完整的GT200架构

  从上面的架构图可以看出,GeForceGTX200系列可以分为四个层,最上面一层包括了图形处理器所需要的几何着色器(GeometryShader)、顶点着色器(Vertexshader)以及像素着色器(Pixelshader)。

中间一层包括了10组TPCs(计算处理器群集),每组TPC里面又包含了3组SMs(流处理器组),每组SM里面就包含了8个流处理器单元或计算单元。

这样一来,GeForceGTX200显卡就一共包含了240个流处理器单元或计算单元。

在TPCs下面就是纹理单元以Atomic单元(在并行计算中负责处理冲突的单元)。

在下面就是ROPs(光栅化处理器引擎)以及显存接口。

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

行处理架构:

GPU将比CPU更主要

  GeForce系列的GPU同样是一款非常出色处理器并行架构处理器,而NVIDIA提出的CPU+GPU的异构运算平台在目前众多领域有着非常大的优势。

随着越来越多的应用程序对GPU并行运算的支持,相信未来GPU重要性超过CPU也并非天方夜谭。

并行处理器在各个方面都有优势

  NVIDIA方面,上代G8X图形核心就采用了先进的统一渲染架构,拥有多达128个流处理器,引入几何着色器功能……这一切简直就是专为GPGPU运算而生!

为了最大程度的发挥几何着色器的威力,G80还专门设置了一个名为流输出层(StreamOutputState)的部件来配合它使用。

这个层的功能是将VertexShader和PixelShader处理完成的数据输出给用户,由用户进行处理后再反馈给流水线继续处理。

它可以直接读写本地显存。

我们可以通过StreamOut把GPU拆成两段,只利用前面的一段几何运算单元。

对某些科学研究,也可以通过streamout来利用GPU的数学运算能力,等于在CPU之外又平白多得了一个数学协处理器。

我们可以这样理解G80图形核心的几何着色器和StreamOut单元:

GS提供了改变图形数量的能力,Streamout提供了硬件Multi-pass的支持。

可以预见,今后围绕这些全新的功能,又会有一批新的GPU通用计算程序出台。

面向未来:

CUDA应用方向

  随着显卡的发展,GPU越来越强大,第一代统一渲染架构的GTX280核心中就已经拥有240个单独的ALU,因此非常适合并行计算,而且浮点处理能力也远远优于目前的多核CPU,加上GPU为显示图像做了优化。

在众多计算领域上已经超越了通用的CPU。

如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像计算以外的目的。

CUDA(ComputeUnifiedDeviceArchitecture)工具包是一种针对支持CUDA功能的GPU(图形处理器)的C语言开发环境,未来还将发布Fortran语言版本。

  CUDA(ComputeUnifiedDeviceArchitecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。

跟以往的GPGPU概念不同的是,CUDA是一个完整的解决方案,包含了API、C编译器等,能够利用显卡核心的片内L1Cache共享数据,使数据不必经过内存-显存的反复传输,shader之间甚至可以互相通信。

对数据的存储也不再约束于以往GPGPU的纹理方式,存取更加灵活,可以充分利用streamout特性。

以上几点都将大大提高GPGPU应用的效率。

例如,在游戏中我们可以使用CUDA来让GPU承担整个物理计算,而玩家将会获得另他们感到惊奇的性能和视觉效果。

另外,用于产品开发和巨量数据分析的商业软件也可以通过它来使用一台工作站或者服务器完成以前需要大规模的计算系统才能完成的工作。

这一技术突破使得客户可以任何地方进行实时分析与决策。

同时,一些以前需要很先进的计算技术来达到的强大计算能力的科学应用程序,也不再受限在计算密度上;使用CUDA的计算可以在现有的空间里为平台提供更强大的计算性能。

CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。

并行处理器在各个方面都有优势

  CUDA工具包推出已有1年,它的推出马上受到了众多软件/游戏开发商以及科研机构和程序爱好者的欢迎,NVIDIA方面也将发布最新的CUDA2.0版本。

相信在未来,CUDA将会受到越来越多的领域的支持。

目前,支持CUDA环境的GPU主要有采用统一渲染架构的显示核心。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2