最近忙私活忙得昏天黑地的,好久没有给大家上课了。上次说好CUDA以后有些同学热血沸腾,都说这玩意儿好,NVIDIA捣鼓得有意义。大家有些意犹未尽的味道,今天我们再来说说CUDA的一些事儿,还有CUDA计算能力强弱的对比,大家期待哦~
LESSON 11
1,流处理器多少够用
今天老师就不和你们哈拉了,直接进正题。
上次说到CUDA的可以用来解码H.264格式的高清电影。把CPU从繁重的工作中解放出来,又能克服硬解兼容性不好的问题,的确是居家旅行,出门探亲必备佳品。高清玩家又有一个解码的途径。CUDA运用了GPU中大量闲置的流处理器的资源,进行科学计算。比如上一讲采用的XFX 9800GTX中就有多大128个流处理器。这些处理器在硬解码和软解码的时候都是限制的。我们采用了COREAVC这个插件来充分调动起这些沉睡闲置的流处理器来进行解码的工作。虽然一个流处理器和一个单核的CPU来相比,浮点运算能力肯定不如后者,但是采用“群狼战术”就能够比双核多核CPU更有效率得完成这项解码工作。
那么要完成解码任务,究竟需要多少个流处理器才够用呢?这是我们接下去要讨论的问题:9800GTX是128个,9800GT是112个,这些都是曾经的高端级别的显卡。最近发布的诸如GT220也是一款适合HTPC使用的显卡,它只有48个流处理器,会不会不够用?我们今天探究的意义在于能够让大家用更少的钱买到最适合性能的显卡,性能过剩也是浪费。
先来看下这次的主角:
先来说说这款XFX送来的魔方版GT220:采用XFX惯用的黑色非公版PCB的设计,搭配ZALMAN的一款硕大的三热管被动散热器。这样做的好处就是可以借助直垂式CPU散热器的风帮助显卡散热,降低系统噪音。实际在应用过程中,在室温15℃的条件下,笔者用红外线温度计测试了背部散热片上的温度不超过36℃,而显卡正面和GPU接触的吸热金属处的温度大约为40℃。这块显卡的确适合于采用被动散热的方式。
说一下老师的测试平台:
CPU: E5200@3.6G
主板: XFX 680i SLI
内存: GSKILL 2GDDR1066*2
硬盘: WD10EADS*2
WD640AAKS*1
HITACHI 320G SATA*1
WD1600BEVT*1
显卡: XFX9800GTX
XFXGT220
INNO3D9800GT
电源: UCP700
软件: FORCEWARE 191.00
终极解码2009国庆版
说下测试方法:用KMPLAY播放采用H.264编码的高清影片,采用 CoreAVC 1.9.5.0 作为解码器,记录CPU占有率和功耗。
测试结果:CPU占用率几乎相同,都在10%-20%区间徘徊,对比上次测试的9800GTX,这个成绩都在一个水平上。
但是彼此的成绩差距不大,就在几瓦之内。说明了48个流处理器已经足够应付CUDA的软解。H.264的复杂程度还不够,完成这样的工作还是比较轻松的。听闻离子平台的ION/MCP79/GeForce 9400M只有16个处理器,玩起CUDA解码还是得心应手,CPU占有率依然还能够压制在30%以下。要知道ATOM处理器的性能,那是一个“弱”字可以概括,就算是双核也是。
从这段测试可以看出,笔者认为如今的软解硬解之争可以暂时告一段落:主流硬件无论是软解还是硬解都已经不存在任何问题。CUDA的加入更加应正了这一观点:无论你用何种解码方式,我们一般用户只要求能够达到目的,不会重视通过何种方式达到目的。无论是软解也好硬解也好,打开播放器能够欣赏视频就可以了。人应该活得简单点,不是吗?不过建议那些播放软件的开发者应该以硬解作为默认选项,以达到节能的目的。
2,SIMHD
ArcSoft TotalMedia Theatre 3(TMT3)如今越来越被大家追捧,因为他比起老牌的POWERDVD操作更为简便,支持的格式多,体积小,对REMUX的支持较好。SIMHD这是一个TMT3的一个插件。从字面上我们就能看出这款插件是用来“模拟高清”的。借住 CUDA 的平行运算架构,以 GPU 运算把标准分辨率的DVD影像升频至接近高清分辨率的画质,这是以往CPU需要很长运算时间才能完成,而通过CUDA把任务交给GPU则可以达至实时处理。我们知道DVD的分辨率一般为在NTSC下为720*480,PAL下为720*576,也就是480i或者576i,这样的分辨率现在看来的确是惨了点。如今用了这款插件就可以让480i的分辨率提升到至少720P,今天我们就来试试。
SIMHD这个插件在普通的TMT3版本里面是没有的,需要额外付费购买:
http://www.arcsoft.com/EN-US/software_title.asp?ProductCode=simhd#
单独这个插件价值USD10。嫌贵?其实这个插件是非常有市场的:发售了将近10年,数量巨大的DVD的存量决定了它的基础是非常扎实的。只要这个插件能够使得画质“看起来”像高清就足够了。下面我们来看看这款用到CUDA的插件的效果究竟如何。
这是已经安装了SIMHD的TMT3,会有一个SIMHD的专属页面设置
勾选“启用SIMHD”后会有三个模式可供选择:
“正常模式”就是画面经过SIMHD处理后输出的高清画质。因为没有原画质的对比,所以也仅供直接欣赏影片时使用。
“拆分模式”就是将整幅完整画面的一分为二,右边为处理过的画质,左边为原始画质。
“对比模式”就是将屏幕分为左右两块,显示同样的内容,右边一块为处理过的画质。
这里选择了D9的《斯巴达三百勇士》的DVD作为样片。原片的原始分辨率为480P,我们来试试通过CUDA的演算输出1080P的效果。
截取了一张人物的脸部特写,拆分模式来观察。
我们可以看到原始画质当中人物的细节处比较模糊,经过CUDA的演算,细节明显,人物脸部更有层次,面部反光自然。画质的确有所提升。不过笔者认为这样的画质和真正的1080P仍然有所差距:
上图是1080P的画面截取图片,虽然不是同样一幅画面,但是人物的脸部细节,脸上的刀疤,皱纹,胡渣都能够清晰辨识。看得出 Vincent Regan 是一个大约四十几岁的中年人。因为毕竟DVD的数据量和REMUX的数据量毕竟不是一个数量级别的,能够通过插件演算出这种效果也是非常不错的。对于那些家中收藏有大量DVD的用户来说,这个插件能够让他们享受到“伪高清”(请允许我在这里用这个词)的视觉享受。
老规矩,我们下面来看看采用SIMHD的功耗:
功耗测试成绩为:GT220<9800GT<9800GTX,CPU占有率也没有超过15%,这也是意料之中的事。
说明了就算是NVIDIA的GT200系列的低端卡在进行CUDA处理H.264和SIMHD运算时,性能还是有所过剩的。功耗也在可接受范围之内。我们更希望能够多多出现一些正对我们一般用户的CUDA插件,来解放CPU资源。在不运行游戏的时候,这些闲置的资源实在是一种浪费。如果CPU和GPU的资源能够整合在一起,那就更好了。不过目前最有可能做到这种效果的只有AMD了,INTEL的图形芯片不行,NVIDIA的CPU依然停留在纸面阶段,期待AMD 的fusion。
3,CUDA的未来
CUDA利用GPU强大的浮点运算能力,可以通过插件来完成一些以前显卡无法涉及的工作。我们甚至可以用显卡来替代CPU来做很多事情,强大的浮点运算能力,已经超过主流CPU的几个身位。不过NVIDIA毕竟是一家做图形芯片的厂商,加之最近的其他领域业务不佳:听闻准备淡出MCP市场,悲痛啊,被AMD和INTEL联合排挤出这块市场。
CUDA不能过于显山露水,因为INTEL已经发话了:像CUDA这种GPGPU通用计算编程模型是没有未来的,因为程序员们没时间学习一种新架构。INTEL的话不是圣旨,但是是风向标,是行业老大的最高指示,下游厂商都要按照老大的指示行事。真希望CUDA能够发扬光大,为了用户能够实现更多功能,能够不必再为过剩的技术买单。但是往往厂家只会追求自身的利益,消费者仅仅跟着被动买单强制升级。而且CUDA还有一个隐患:非开源。这是NVIDIA的一个私心:CUDA是个由NVIDIA自己建立的封闭的标准。让开发者担心的是现在NVIDIA在推广CUDA期间未曾提及权利金一事,但是一旦成为主流做大了以后不排除会收费的可能。
ATI这边已经明确了态度:全力支持OpenCL。早在X1000系列的时代,ATI就已经通过软件实行了并行加速技术,我们可以将其看做为试水的举动。AMD将其这项技术命名为STEAM。AMD于去年宣布加入OpenCL。OpenCL由苹果发起,Khronos Group掌管的,业界众多著名厂商共同制作的面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境。NVIDIA这次反应很快,主动和苹果拉拢关系,高调宣布加入OpenCL,为的是在局势不明朗的时候,为自己留一条后路。不过毕竟拥有自己的CUDA技术,肯定不会对OpenCL这个潜在的对手投入全部精力。
目前看来CUDA已经领先OpenCL推出了实际的应用产品。不过今后怎么还是很难说,OpenCL有了AMD和INTEL等大腕的支持会有更好的前景。但是只要对我们消费者有益我们都是欢迎的。