硬体加速搞不懂?CUDA让一切变得更简单电脑DIY

分类:圈新益智 973赞 2020-05-22 453次浏览
显示卡
  • 硬体加速搞不懂?CUDA让一切变得更简单

    硬体加速搞不懂?CUDA让一切变得更简单电脑DIY

     自从NVIDIA推出CUDA核心运算技术之后,不但对游戏、文书处理或是影音转档都帮助甚大,今日的GPU在浮点运算效能上早已超越CPU,不但现在的电脑应用中CPU与GPU是共同存在的,连原本是需要CPU来运算

    的资料现在都可以藉由GPU来执行,而且还做得更好!以NVIDIA所推出的CUDA技术来说,源起于GPGPU的运算技术经过改良之后正式命名为CUDA,但是有多数玩家并不了解何谓CUDA?今日NVIDIA的绘图核心已经全面导入CUDA的技术,在软体方面,厂商们支援CUDA的意愿度也越来越高,从Adobe、Google和多家游戏公司的支持可以看到,将来的CUDA会在我们的生活应用上扮演着相当重要的角色,本期就要告诉各位读者CUDA技术如何运用在我们的电脑生活上!

      ■      GPU概念的起源  绘图处理器英文为Graphic Processing Unit,简称就是各位读者们所熟悉的GPU。打从GPU问世以来对我们的生活有颇大的帮助,但大部分的人还是比较熟悉中央处理器CPU,对于GPU似乎了解不多,但我们换个方式来介绍,GPU就是显示卡中的微处理器,当然不只是用在显示卡上,在主机板上或是游戏机中等等,只要有拨放多媒体的需求都有GPU的身影,这样解说各位也许就容易明白,不过GPU这词儿是怎幺来的呢?相信读者们肯定听过NVIDIA,是现今最大的绘图处理器製造商之一,全球有难以计算的个人电脑、工作站、游戏机甚至智慧型手持装置都使用NVIDIA所提供的绘图处器,然而NVIDIA在1999年发表GeForce 256的时候一併提出多媒体处理概念GPGPU(General-Purpose Computing on Graphics Processing Units)。 硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / NVIDIA在发表GeForce 256架构的同时也提出GPGPU的运算架构   不过在GPGPU概念推出前,x86架构的处理器就一直担负着多媒体处理的重要角色,在Intel推出Intel 8086处理器时问世,多年来有许多厂商尝试着推出x86架构的处理器,但是看到现今市场上只见到Intel和AMD,就知道这并不是一件简单的事情,事隔多年,直到现在x86架构还是全球最多的平台,不过这后面却隐藏一些技术上的难题。x86处理器中的CISC架构(Complex Instruction Set Computer – 複杂指令集)实际上因为暂存器数量有限,所以并不擅长多媒体运算,虽然如此还是得不断改善CISC架构以及SIMD运算的能力,进而发展出多媒体加速指令集MMX来加速多媒体运算的能力。 硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / Intel 8086微处理器在GPU推出以前担起多媒体运算的重要任务    多媒体加速指令集的出现的确改善了x86处理器先天的缺陷,然而跟着使用环境的需求,很快的就发现这样还是不够!x86处理器多媒体指令集的发展已经开始以SSE(Streaming SIMD Extensions)指令集为标準,SSE后续的版本为SSE2、SSE3和SSE4,这些指令集的发展主要的重点不外乎就是强化多媒体的运算能力,例如图形、影片编码或是游戏方面的运算,各位可以回想看看个人电脑从什幺时候开始强调游戏或影像编码效能,如果没错的话差不多应该是从Pentium 3~Pentium 4的年代吧,使用者慢慢仰赖电脑来处理影音、图像处里以及游戏等等的多媒体运用,但这样还是有问题,因为多媒体运算大多需要拥有非常强大的浮点运算以及平行运算,如果要达到非常高效率的输出,就必须要有数量非常之多的CPU来进行所谓的平行运算,不过这并不容易,先撇开开发的难度不说,光是这幺多的CPU串接在一起的体积会相当庞大,更不用说那非常惊人的功耗了,但是这也没办法,x86架构先天就是如此。 硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / SSE是x86多媒体运算中最为主要的指令集   所以自从NVIDIA提出GPU概念之后,就将显示多媒体运算从中央处理器中分离,独立出来成为显示核心,主要工作就是分担CPU在多媒体影像方面的运算,相对也会大幅降低CPU的负担,因为目前市面上消费级的处理器也只是六核心,特别是Intel的处理器拥有超执行绪技术,可以让1个实体核心模拟出两个执行绪,像是消费型旗舰款六核心Core i7 980-X就有6个实体核心及12个执行绪,能以相当高速来处理纯量运算,但是多媒体运算需要的并不是纯量运算,而是向量运算,不过向量运算要快,就得藉由庞大的平行运算能力!目前GPU的核心架构设计採用单元串流的方式(Stream Processors),内建的处理单元少说也有数十个,多则高达到数百个,这些数量众多的处理单元用来平行运算再好不过了,尤其是运算3D图形时更是能突显出GPU的效能优异,单以浮点运算的效能来看CPU约在50~100GFLOPS左右,对一般使用纯量运算上已经够快了,不过GPU的浮点运算却早已达1,000GFLOPS以上,经过这几年的进化之后,用于超级电脑上的GPU在浮点运算能力上达到了兆级的水準,可想而知这是多幺庞大的平行运算架构!简单来说CPU可以轻鬆的记下非常大量且複杂的指令,但是处理时会有先后顺序的问题,每条指令必须一一运算,就算是大量且简单或是重複的资料呢?没意外的话结果还是一样,CPU是非常遵守运算的顺序,虽然快速但还是得要从头运算一遍。 硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / Tesla系列是NVIDIA用于工作站级的CUDA处理器,其浮点运算能力是消费级产品的数倍之多。    硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / 透过数张的Tesla就能组成超级电脑所使用的运算核心,其运算效能更是惊人。    还是不明白平行运算的原理吗?小编在此举个简单的例子解说一下什幺是平行运算,不知道各位读者有没有点过速食的外送服务,现在有很多速食店都有外送服务,当然有会有许多人喜爱这样的服务,因为太方便了,不过会发现到不论哪家速食店的外送服务都採用机车来外送,并不会用货车,虽然货车可以载的数量多,就算是需要载运100份或送往100个地方也没问题,但是运送时就必须一家家的跑,但只要越多人点餐就会增加运送地点,如此也会有效率上的问题!如果所有车辆都外出之后还有人点餐,餐车就必须送完一圈之后再回到起点接收新的任务,这就是CPU运算资料的模式,当然为了提升效率,可以添增车辆(增加核心数量)或是将快取容量加大(可以放更多份餐),甚至提高运作时脉(提高运送速度),这样还是可以改善效率,但这样总是会有上限的问题!而GPU的平行运算模式就如同机车外送,需要送达几个地点就会派出几台机车,每个处里单元就会以最快速的方式将资料送达每个地点,如果GPU核心有100个处理单元就能同时运算100笔资料,重点就是效率的问题,总不会是希望送到家的餐点是已经冷掉了! 硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / 从图中可以明显看到CPU与GPU之间的架构差异,一般主流CPU产品内建为4个核心,但是主流的GPU产品却内建上百个处理单元,比起CPU,GPU更适合用来大量的平行运算。    █      CUDA的崛起  说到平行运算效能不得顺便提一下目前全球排名第一、三、四名的超级电脑都使用NVIDIA的GPU,相信很多人一定觉得这很奇妙,为什幺超级电脑不是使用CPU来运算而是GPU?其实就是前面所提到的处理单元的数量和平行运算效能上的差异,另一方面就是记忆体的不同,我们都知道CPU因为要提升纯量运算的效能需要更低延迟的记忆体,而目前记忆体的时脉以Intel的X58晶片组主机板所支援的三通到来说基本就有DDR3-1333,理论频宽约有35~40GB/s左右,但记忆体本身的位元宽却只有64bit,反观绘图核心所使用的记忆体位元宽起码都有128bit,主流产品大多都是256bit,高阶规格的绘图卡的记忆体位元宽都甚至达到512bit,可见CPU与GPU相较之下的频宽速度或位元宽都难以相提并论! 硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / 全球最强悍的超级电脑「天河一号」,搭载7168张的Fermi架构的Tesla M2050。    看到这里读者们是否开始感觉到,我们一直以来所使用的显示卡核心原来这幺了不起!如果以向量运算来看的确是这样,加上平行运算、浮点运算等各方面GPU确实有相当高的运算能力,不过GPU概念一开始并没有发展的很顺利,因为这是一个全新的架构,虽然可以解决多媒体加速运算的问题,但是光有架构是没办执行指令,必须要有能够与GPU沟通的语言,所以NVIDIA在2006~2007之间发表了一项全新的运算架构并称为CUDA(Compute Unified Device Architecture)。这也是NVIDIA正式给GPGPU的名称,简单来说是一种用在GPU複杂平行运算时的指令集,类似中央处理器x86架构的指令集,这也是自GPU概念推出之后首次可以让程式设计师使用C语言运用GPU那蕴藏已久的强大运算能力,所以NVIDIA从GeForce 8系列之后的显示卡开始支援CUDA技术。 硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / NVIDIA在推出8系列显示卡时开始支援CUDA运算技术,大幅减少CPU的运作负担。    █      强大的向量运算在今日的现实生活上被广泛运用  前面说那幺多的指令集、GPU技术和CUDA技术,那幺到底CUDA能为我们做些什幺事情呢?或是在我们的生活上的电脑应用扮演着什幺角色?先不讨论CUDA在我们认知的电脑应用上有多幺活跃,别以为NVIDIA CUDA显示卡就只能玩游戏!因为CUDA技术在伺服器上的应用远远超过我们能想像的範围,在各种科学、工业或商业运用都受到肯定,只要任何你想得到的作业环境几乎都有CUDA的存在,举例来说像是电影工业、学术研究、医疗领域、气象模拟和图形开发等等,都需要使用大量GPU的CUDA技术来运算,就以电影举例来说,先前轰动全球的3D电影阿凡达前后两个多小时的拨放时间,却带给人们相当震撼及壮观的视觉感受,但是这幕后的製作有多幺的艰难相信很少人能知道。阿凡达电影中的场景有相当多的部分无法透过拍摄实景来呈现,甚至其中也有数百个人物是虚拟出来的,这些无法从无到有的物件都必须由图形开发的设计师来製作,但製作需要时间,对于拍摄电影来说时间就是金钱,所以提升运算速度是必然的!  只要有看过阿凡达的人应该都被那壮观的潘多拉星球给吸引了,不过几乎都是经由CUDA运算过后的背景,实际拍摄时演员只需要在棚内特製的布景前摆出动作,然后再和CUDA运算好的虚拟场景结合后,就成为我们在萤光幕前所看到的一切,像是身高达3公尺的那美人当然不是靠演员化妆来呈现,而是图形设计师预先使用3D绘图软体製作影片中的那美人,然后在摄影棚内的演员全身会戴上数个感应器,透过演员做出任何动作,感应器会将动作讯号的参数传送到电脑中的模型,3D的那美人图形即可呈现同步动作。  硬体加速搞不懂?CUDA让一切变得更简单电脑DIY   硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / 当你看到阿凡达的製作方式,你就会了解到现今的GPU效能可以让演员连化妆都不需要,就能呈现逼真的画面!(图片来源:Discovery)    有了动作之后还需要加上「渲染」,所谓的渲染就是将基础图形贴上材质贴图,让潘多拉星上的那美人模型物件呈现逼真的皮肤,最后当然不能缺少现实世界中最重要的「光影」,各位读者是否还记得本刊在上一期有解说过「光线追蹤技术」,透过这项技术能够模拟出真实的光源反射,让所有虚拟的物件、人物、背景都能够像是活生生的在潘多拉星球上一样,逼真的程度让你在观赏时也无法分辨真假!结合上面所有的特效处里,我们就能得知一个完整的画面中需要有基本图形、渲染纹理和光影效果。 

     以上所说的电影特效製作过程重点在于突显GPU的重要性,我们所看到的一切都必须要藉由强大的CUDA技术来做平行运算,透过大量的GPU核心运算来输入和输出3D材质与画面的像素,和CPU所擅长的纯量运算特性是完全不一样的,当然,这也不是一般的电脑就可以独力完成,因为这样如此庞大的平行运算,需要数量相当多的GPU串在一起做平行运算。以上的解说是要强调CUDA GPU在电影工业上的特效运算拥有强大的效能表现。

    硬体加速搞不懂?CUDA让一切变得更简单电脑DIY 

    资料来源:NVIDIA

    硬体加速搞不懂?CUDA让一切变得更简单电脑DIY

    资料来源:NVIDIA

     NVIDIA CUDA的问世,对于大部分的玩家来说还是相当陌生,也许你只听过CUDA,但是却不知道它能带来哪些好处,这次小编所介绍的CUDA只是皮毛而已,是整个CUDA架构的冰山一角。其实GPU效能在生活上的电脑应用相当重要,显示卡除了用来显示画面之外,图形运算也是显示卡的主要工作,基于开发游戏的绘图引擎等级越来越高,图形物件的複杂度比起以前提升了不少,再者,为了追求拟真场景,游戏中加入了相当多的光影特效,这些都已经远远超越了内显所能运算的範围了,不单只是游戏能看出显示卡的重要性之外,现今最多人使用的美工绘图软体Adobe CS系列,在显示卡的帮助下明显提升绘图效率,尤其是CS4之后的版本支援NVIDIA的CUDA技术,处理速度更是大幅提升,近年来影音转档更是能藉由显示卡的运算技术提升速度,而CUDA可以快速高画质转档、破解密码或是将拍坏的影片变清晰、把DVD变高清蓝光画质影片,还可以透过影音软体CyberLink PowerDVD 10让您的2D影片变立体3D,透过NVIDIA 3D VISION LIVE的网站,玩家们可以上传自己所拍摄的3D照片与影片,让远方的亲朋好友也都能欣赏,所以NVIDIA的CUDA技术处理速度不只是提升平台的整体效能,在我们的生活上电脑应用可说是彻底发挥CUDA GPU的附加价值。

    █      你所不了解的CUDA技术,一直在我们的生活应用中 别以为CUDA运算技术只能运用在开发或是工程运算,事实上从我们平常的生活中就已经融入CUDA的运用了,只是各位不知道而已,举例来说,电脑普及的现在,家用游戏机已经不是游戏玩家的唯一选择,电脑游戏所能发挥的空间比家用主机还大上许多,近年来电脑游戏慢慢注重画面的呈现以及临场感,以前在还没有CUDA GPU的时候,游戏中会尽量避免有大量的动态物件或是物理运算,就如同小编先前所提到的,这并不是CPU所擅长的工作,只要有动态的物件需要运算就只会大量增加CPU的负担,不过当CUDA技术应用在游戏上的时候,就可以接手所有的物理运算,其中像是动态水、烟雾尘埃、爆破碎片,甚至像是衣服布料、头髮等等的物理特效,尤其是布料和头髮是游戏中最难表现的部分,到现在为止大部分的游戏都还没办法将头髮逼真的呈现出来,有绝大部分都还是以块状来大略呈现,这也是因为要符合大众玩家的硬体环境需求,当然比较高阶的游戏也慢慢将细节表现出来,毕竟现在的GPU的运算能力都比多年前来得好。 硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / 经由CUDA的密集平行运算之后,可以将模拟出最难呈现的动态水。   不知道各位是否还记得在三年前有款游戏名称为「末日之战」?这款游戏的推出瞬间被挂上硬体杀手的封号,虽然在网路上被热烈讨论,但其实有玩的玩家并不多,这是因为这款游戏使用非常大量的物理特效,前所未有的爆破特效以及大量可破坏的物件、使用大面积的物理动态水等等,多种动态特效来呈现逼真的临场感,但是当时显示卡效能还无法完全对应到,没有中高阶以上的特效都开不到一半,小编曾经使用NVIDIA当年的旗舰产品8800GTX来运行,无奈却还是无法开启最大特效,但由于NVIDIA在8系列已经开始支援CUDA技术,运用平行运算的优势来处理物理特效,所以和其他品牌的显示卡相较之下还是顺畅许多!  以上是CUDA在游戏方面的运用,但这只是一小部分而已,除了游戏之外还有像是影片转档加速、提升影片画质、修复拍坏的影片、加速YouTube影片播放、Adobe绘图软体硬体加速、FlashPlayer网页加速等等,相当多的运用都是我们生活上能够直接感受到,尤其是转档更是现在最常使用的多媒体应用,小编我自己也常使用智慧型手机录上一段高画质影片,之后上传到网路上与大家分享,但是如果档案过大就无法快速上传到网路上,所以会需要转档将影片压缩!只要使用支援CUDA的转档软体,就可以发挥CUDA大量串流处理器的优势,进行硬体编码加速与硬体解码加速的功能,当然现在支援CUDA转档加速的软体越来越多,大家最熟悉的应该就是讯连科技所推出的产品较多,像是「威力导演」、「威力製片」、「魅力四射5」等多套影音编辑软体,都有支援NVIDIA的CUDA GPU加速功能,除了以上这些之外,市面上还有许多影音编辑软体都陆续有支援CUDA硬体加速功能,NVIDIA官方网站上也可以找到支援CUDA转档的「BADABOOM」,这也是一套不错用的影片转档软体,透过CUDA技术在转档速度上提升许多,善加利用这些有支援CUDA的软体,相信可以提升许多编辑多媒体的时间! 硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / 讯连科技推出的影音编辑相关软体大部分都有支援NVIDIA CUDA硬体加速功能   Quick Sync Video,且必须要搭配H67主机板和有支援的软体才能运用Quick Sync的效果,因为本测试是针对NVIDIA CUDA开启前后的差异性来做比较,所以不另外测试 以上的测试成绩是使用CyberLink Media Espresso将25分钟的1080i的MPEG-2影片转成720p的MPEG-4,显卡採用NVIDIA GTX560 Ti,转档时开启NVIDIA CUDA硬体加速技术,所得到的结果还算不错,不过有一点要先说明一下,因为一般的处理器并没有像Sandy Bridge有支援Intel Sandy Bridge所支援的Quick Sync Video技术。从测试成绩来看,转档的过程中有没有开启CUDA影响的确颇大,开启CUDA之后转档的速度快了50%以上。另一方面要提醒一下各位读者,转档的速度快或慢不能单单只是以硬体来决胜负,挑对软体使用也是很重要的唷!  █      上网CUDA不缺席,日后应用无限可能  也许玩家们不常需要转档,所以比较没办法感受CUDA所带来的效益,但是总是会上网吧!现在的电脑使用者每天使用电脑的时间内,浏览网页的时间应该是最多的,不过也许你不知道今年开始,许多浏览器已经开始支援最新的FlashPlayer和HTML5,而各家浏览器供应商也开始释出相对应的浏览器版本,以微软来说就是Internet Explorer 9或是估狗大神的Google Chrome、Opera Mobile、苹果自家的Safari和许多人爱用的Firefox等各位所熟悉的浏览器,都将完整支援最新的HTML5语法,连大家每天都会浏览的YouTube都已经支援HTML5,然而制定网页标準的协会W3C(World Wide Web Consortium)也会在今年订出标準。在HTML5的网页设计标準中相较于以前增加了section, video, progress, nav, meter, time, aside等数十种元素,设计网页时可运用这些元素做出各种效果,网页设计师可以轻鬆绘製2D或3D图形,然后再以动画方式呈现,当然最重要的一点是可以直接在浏览器上拨放影片。 其实现在的网页都已经使用大量的Flash、2D和3D图形以及影片,比起以前,现在电脑更需要多媒体的运算速度,就举例Flash来说,这是属于多媒体运用的一种,并且支援用H.264标準製作的HD Flash影片,较特别的是Flash Player有支援NVIDIA的CUDA平行运算技术,连同上段所说的新一代浏览器语法HTML5也都会支援CUDA的硬体加速功能,这就是意谓着只要使用支援CUDA的NVIDIA显示卡,就会自动启用硬体加速功能,不论是浏览网页或是播放Flash影片速度都会比一般平台还要快! 硬体加速搞不懂?CUDA让一切变得更简单电脑DIY图 / 下一代最新的浏览器支援HTML5语法,让网页能添加更多的多媒体特效,透过CUDA的支援能见少CPU的负担,加速播放并提升平台效能。    █      善加运用CUDA,让一切变得更简单NVIDIA CUDA的问世,对于大部分的玩家来说还是相当陌生,也许你只听过CUDA,但是却不知道它能带来哪些好处,这次小编所介绍的CUDA只是皮毛而已,是整个CUDA架构的冰山一角。其实GPU效能在生活上的电脑应用相当重要,显示卡除了用来显示画面之外,图形运算也是显示卡的主要工作,基于开发游戏的绘图引擎等级越来越高,图形物件的複杂度比起以前提升了不少,再者,为了追求拟真场景,游戏中加入了相当多的光影特效,这些都已经远远超越了内显所能运算的範围了,不单只是游戏能看出显示卡的重要性之外,现今最多人使用的美工绘图软体Adobe CS系列,在显示卡的帮助下明显提升绘图效率,尤其是CS4之后的版本支援NVIDIA的CUDA技术,处理速度更是大幅提升,近年来影音转档更是能藉由显示卡的运算技术提升速度,而CUDA可以快速高画质转档、破解密码或是将拍坏的影片变清晰、把DVD变高清蓝光画质影片,还可以透过影音软体CyberLink PowerDVD 10让您的2D影片变立体3D,透过NVIDIA 3D VISION LIVE的网站,玩家们可以上传自己所拍摄的3D照片与影片,让远方的亲朋好友也都能欣赏,所以NVIDIA的CUDA技术处理速度不只是提升平台的整体效能,在我们的生活上电脑应用可说是彻底发挥CUDA GPU的附加价值。