CPU比GPU重要!视频转码加速对比测试
泡泡网CPU频道9月4日 一直以来,电脑中处理数据、信息的核心单元都是CPU,这已经是一个基本常识。然而最近几年来NVIDIA开始颠覆这个定律。自07年G80时代开始,NVIDIA便开始推广一项技术——CUDA。这也标志着GPGPU计算时代的到来。
CUDA是一项基于C语言的程序接口,其主要意义在于利用GPU强大的并行处理能力,协助CPU进行计算。自CUDA发布以来,技术的逐渐成熟和NVIDIA用心的推广,使得其在医疗、物理、金融、化学等领域的特殊模拟运算中得以大展身手。
NVIDIA宣称GPU的处理能力是CPU的几十倍甚至上百倍
而在个人用户方面,CUDA的主要运用在视频编码、解码处理。涉及到的具体应用就是视频格式的转换。该类型的软件现在也比较丰富、完善,功能、兼容性、支持格式、执行效率都比较成熟,可以给用户带来实实在在的便利。以往只能以来CPU进行的视频转码,现在可以在GPU的协助下进行了,效率自然大大提高。
CUDA的名气着实不小,我们也常常看到NVIDIA的显卡在专业领域打败Intel高端甚至服务器CPU的新闻,这给我们一个概念:同价格的GPU计算能力是CPU的数倍甚至数十倍。
物理加速性能,GPU是CPU的7倍
NVIDIA与Intel之间关于GPU与CPU孰强孰弱的争执由来已久,而Intel终于在ISCA大会上递交的测试技术文档中正式承认GPU运行测试速度比CPU快14倍。
虽然NVIDIA方面认为这是“难能可贵的一天”,但是依然指出Intel测试中采用的GeForce GTX 280是其上一代产品,并且没有经过任何代码优化,而实际上新一代NVIDIA GPU的运行速度是Intel CPU的上百倍。
GPU确实拥有非常恐怖的运算能力,但是GPU的潜能却很难被释放出来。NVIDIA片面强调GPU的重要性,GPU的理论运算能力看上去很美好,但在实际应用中却没有吹嘘的那么强大。
GPU如果真的强大到可以在任何方面全面代替CPU,那么CPU恐怕早就下岗了。在民用级别的应用上,GPU有多强呢?软件和硬件的支持和优化到了什么程度?我们需要了解一下才能下结论。
说道CUDA目前在民用领域最广泛的应用--视频转码,就不得不提及这款优秀的国产视频转码软件--MediaCoder。该软件是国内首款支持CUDA的视频转码软件,完全开源并且永久免费的MediaCoder在最新版本当中加入了CUDA编码器。此前MediaCoder所有编码器都是依靠CPU运算,现在能够与时俱进率先加入GPU加速支持,的确难能可贵,引用MediaCoder开发人员的话说就是:
“近两年NVIDIA的CUDA技术似乎成为业界新宠,其优良的科学运算加速能力确实首屈一指,引领着并行运算潮流,各行业都纷纷采用它来加速,搞得我们也跃跃欲试,呵呵,另外还有很多网友对MediaCoder的厚爱,希望在MC上体验一下CUDA加速的快感,于是我们决定了用CUDA加速MediaCoder转码。
年初我们几个开发人员就开始酝酿着采用CUDA加速H.264编码,毕竟H.264现在比较火,还是比较有前途。经过一段时间的紧张的开发,CUDA加速的H.264编码器终于诞生,让性能卓越的MediaCoder又添一利器。”
做为一款转码软件,MediaCoder的特点包括:支持格式广泛;硬件优化强大,执行效率高;参数、功能设定调解丰富,可满足各种转换需求。其最新版本也支持NVIDIA CUDA加速,并且也推出了一个专门的CUDA加速版本--MediaCoder NT,和Badaboom类似只支持8系之后推出的N卡。
由于MediaCoder对于Intel多核多线程CPU支持的非常好,而且也能支持CUDA GPU转码加速,对于NVIDIA GPU优化支持也非常到位,因此本次测试我们就使用这款大受欢迎的转码软件来进行测试,看看不同CPU、显卡之间的性能差异。
这次测试使用了LGA 1156平台,为了体现出性能差距,选用了Intel Core i7 870和i3 530两颗CPU。显卡则必须是N卡,我们准备了GTX 480和GT 240以准备测试。
测试选用了两段视频,一段为1920x1080分辨率,时间较短,码率较高,转换为960x640分辨率。一段为848x360,码率相对较低,但时间较长,转换为480x320分辨率。这样的输出分辨率对于移动设备来说是比较常见的。也是日常应用中较为常见的分辨率,实际使用意义很高。使用CPU和GPU转码,采用不同配置时,转换设置中除了编码器之外是完全相同的。
将两段码率和长度不同的视频分别转换。记录转码完成时间,其中CPU使用内置的Fast模式,GPU使用CUDA Fastest模式。
首先使用i7 870进行测试,显卡分别使用了GTX 480和GT240。请先看测试结果。
视频1:
视频2:
由测试结果可以得知,在不同的视频中,使用GPU加速进行转码都较单纯依靠CPU快很多,而使用GPU加速转码时,GTX 480和GT240在速度上几乎没有区别。我们通过软件查看,在使用CPU转码时,CPU使用率在80%以上,大部分时间甚至在100%,而GPU转码时CPU使用率只有不足50%,显卡使用率也只有10%左右。在日常转码中,GPU的利用率并不很高,并不需要很强劲的显卡。
接下来我们改用双核CPUi3 530。依旧搭配GTX 480和GT240
视频1:
视频2:
在更换了双核CPU后,转码时间增加。由于不同显卡做CUDA加速的效果是一样的,可以推定不同CPU对GPU转码加速也没有什么影响。相比之下,当CPU不是很强时,GPU加速提升的幅度就比较客观了。
本来在测试之前是准备了GTX 480、GTX 460、GTS 250和GT 240四块不同档次的N卡,但是在进行了GTX 480和GT 240的测试之后发现,GPU转码时负载率不高,两块性能差异最大的显卡速度也没有区别,于是放弃了对其他中档显卡进行测试。
CUDA GPU加速确实可以让原本纯CPU计算的软件快上很多,视频转码速度可以提升30%—100%之多。但是目前的CUDA编码器似乎并不需要GPU拥有很强的性能,96SP的GT240显卡就足以胜任,更高级别的显卡不会然转码速度进一步提升。
纯CPU编码显然要比CPU+GPU编码慢上很多,但不可否认的是,CPU在视频转码过程中依然起到主导作用,当我们把CPU从双核升级成四核时,速度几乎提升了一倍以上!也就是说,不管有没有GPU辅助,CPU本身的实力都可以得到完全的释放,更强的CPU显然能够大大加快视频转码。
我们的结论就是,目前CUDA在转码应用中,如果你有一块N卡,那么便可以免费获得额外的转码性能提升,但只要一块中低端显卡就足以胜任CUDA的需求了,目前民用的CUDA软件尚不能完全发挥出高端显卡的计算能力。目前来看,在转码应用中,CUDA可以带来一定程度的提升,但是CPU依然比GPU更重要。一款四核CPU搭配GT240级别的中低端显卡,可以达到最快的视频转码速度。■<