巧用CUDA玩高清

DIY研究所

显卡高清硬解码这个概念对于玩家来说并不陌生,我们都知道现在GPU的性能很强,可以完成很多以前用CPU来完成的工作,而且效率更高,不过真的要玩转GPU通用加速,熟悉的朋友就比较少了,这期我们的DIY明星林以诺就和大家分享一下他用NVIDIA显卡的CUDA通用计算技术来完成视频转码和优化的经验。

你知道吗

什么是CUDA

CUDA(Compute Unified Device Architecture)是一种新的基础架构,通过这个架构可以使用GPU来完成很多在以前只有x86处理器才能进行的复杂计算。简单一点来说,CUDA能够让GPU的使用范围不再局限于游戏,还可以更多地分担原先属于CPU的那部分计算任务。以前的视频优化技术主要都是依靠CPU来完成庞大而繁琐的运算,现在利用CUDA能够让GPU与CPU通力合作,大大提高视频优化的效率。

如何支持CUDA

作为NVIDIA的特有技术,目前只有NVIDIA GeForce 8及以上级别的显卡才能支持CUDA,而具体支持的版本也有不同:GeForce 8/9系列支持CUDA 1.1版本,GTX/GTS 200系列支持CUDA 1.3,最新的GF100则能够支持到CUDA 2.0。我们可以利用EVEREST来查看显卡所支持的CUDA版本。进入“显示设备-GPGPU”选项,点击查看“Compute Capability”,此处即显示CUDA版本信息。

CUDA还需要软件的支持,首先要安装带CUDA驱动包的NVIDIA显卡驱动,还要求使用的软件能够调用CUDA来进行通用计算。目前支持CUDA的常用软件主要有:Badaboom、MediaCoder、vReveal、TotalMedia Theatre 3、完美解码、PowerDVD 10等等。

用HTPC或者是随身的媒体播放器播放电影的应用已不新鲜,不过视频转码和画面的优化始终是一件比较伤脑筋的事情,用CPU来完成的话,十分耗时,而且有些视频优化的功能也不能实现,下面笔者就介绍一下如何利用NVIDIA CUDA通用计算技术来非常快速地完成这些工作。

实战CUDA视频应用

测试平台

CPU:Core i7 860 2.8GHz

主板:微星 P55-GD65

内存:金士顿 DDR3 1800 2GB×2

显卡:GeForce GTX260+

视频压缩、编码转换

高清视频文件的体积庞大,有时候为了方便分享或者是掌上设备使用,我们可以利用CUDA技术进行快速的视频压缩及编码转换。Badaboom、MediaCoder都是用于视频压缩、编码转换的工具软件(都支持CUDA)。其中Badaboom无需特别设置即默认支持CUDA,而MediaCoder则需要在“视频-编码器”菜单中选择“CUDA Encoder”(图1),接着可以在右边的CUDA子菜单中自由选择编码的各个特殊选项,例如“去方格噪声”、“反交错”等(图2),以进一步提高视频画质。测试中我们选用TS格式、H.264编码的高码率1080P高清视频《深蓝》的片段,转码为MP4格式,并利用NVIDIA System Monitor软件监测转码过程中CPU、GPU各自的占用率。

16-d07-2.jpg
图1

从测试数据中可以看到,Badaboom转码的整个过程中CPU占用率都非常低,基本是依靠GPU对视频进行编码转换。而MediaCoder在开启CUDA之后,更多的是采用CPU+GPU的协同工作模式,CPU占用率为25%~31%,GPU占用率也只是45%~55%,两者的负载率相差不是很大,但转码速度最快,可以看出两者协同工作时效率是最高的。在关闭CUDA之后,MediaCoder完全是依靠CPU进行转码,GPU基本处于休息状态,此时转码所需时间最长,达到278秒,是开启CUDA时的4倍,GPU的通用计算威力可见一斑(当然,这也受GPU本身的性能影响,GTX260和9400GT的通用计算能力当然不能同日而语)。

16-d07-3.jpg
图2
16-d7-b1.jpg

视频画质优化

通过视频优化技术,还可以提高一些非高清视频文件的画面质量,事实证明效果还不错。

vReveal

vReveal是一款优秀的视频画质优化软件,该软件采用的超分辨率技术可提高视频分辨率,并去掉噪点和色块等视频瑕疵,还能有效增强晃动视频的稳定性。我们可以在“Tools”菜单中勾选“NVIDIA GPU On”来开启软件对CUDA的支持(图3)。此外,它还在“Enhance”菜单中提供了丰富的视频优化模式供我们选择,笔者采用的支持CUDA 1.3的GTX 260显卡还能进入Fine Tuning菜单中对以上各个优化模式进行微调。

16-d07-4.jpg
图3

在测试中,我们选用MKV格式封装、AVC编码、分辨率为624×352的影片《证人》进行视频优化,启用除了“2x Resolution”之外的其他五个优化模式。在关闭CUDA之后,影片的播放帧速仅为1fps~6fps,根本无法正常观看,i7 860的CPU占用率达到了80%~100%。开启CUDA之后,CPU占用率下降为16%~27%,而GPU开始工作,占用率达到65%~80%,播放速度达到了正常的25fps,画面非常流畅,优化后的画质效果可以媲美720P高清视频(图4,左边为原画面,右边为优化后的画面)。如果利用vReveal把优化后的效果保存到影片文件之中,开启CUDA时需要大约1小时17分,而关闭CUDA之后大约需要5个小时,速度相差3~4倍。

16-d07-5.jpg
图4
16-d8-b1.jpg

Total Media Theatre

Total Media Theatre的视频优化功能虽然不如vReveal,但它的SimHD小插件能够实现DVD播放机上常见的“倍线”功能。所谓“倍线”,就是在分辨率只有720×576的DVD机上,通过插值算法和边缘锐化,实现720P甚至1080P的“准高清”视频输出。我们为Total Media Theatre安装SimHD插件之后,勾选“启用ArcSfot SimHD”就可以开启支持CUDA的“倍线”视频优化(图5),在不增加CPU占用率的前提下最大幅度提高画面质量。

16-d07-6.jpg

图5

PowerDVD 10

CyberLink PowerDVD一直是深受玩家们喜爱的播放软件之一,从PowerDVD 9开始就加入了TureTheater视频优化技术,其中的TureTheater HD更是号称能够让DVD实现蓝光影碟的画质。在TureTheater HD下方的菜单中勾选“启用NVIDIA CUDA”(图6)就可以方便地开启对CUDA的支持,利用GPU强大的通用计算能力,在不提高CPU占用率的情况下最大程度地进行实时画质优化(图7)。

16-d07-7.jpg
图6
16-d07-8.jpg
图7 TureTheater HD优化前(左)后(右)的画面质量对比

写在最后>>

随着支持软件的日益增多,NVIDIA显卡的CUDA通用计算能力终于不再只是“看上去很美好”,而是确确实实有了用武之地,特别是在视频处理方面。正在使用NVIDIA显卡的朋友不妨多关注一下GPU在通用计算方面的潜力,没准就会有令人惊喜的发现,让你的工作和娱乐更加方便快捷。