滚动新闻:
首页 > 应用案例 > 渲染与计算

CUDA加速FLAC音频编码 FlaCuda使用实例

  在PC应用中,CPU和GPU的新技术近年来大多服务于视频和音频的多媒体应用,而更多可能偏重于视频一些,如果大家熟悉Intel在2008年发布45nm处理器时加入的SSE4.1新多媒体指令集,那么应该知道Penryn 45nm家族的引擎和指令集优化都对视频编码非常有利,至少Intel是这么宣传这么说的。而在NVIDIA GPU并行计算高性能计算端得到很多应用的同时,它在个人电脑上的应用最大表现也在视频处理方面,而音频编码也是重要的一项。

  今天我们来看一下这两项技术在音频编码方面的应用,虽然音频编码复杂程度和文件的数据流量都要比视频小得多,这也是为什么在这些新技术如此晚的应用于音频编码的原因。这里推荐两个编码器,一款是支持64bit Windows系统,并支持SSE2和SSE4.1多媒体指令集加速的FLAC编码器fpflac;另一款是支持NVIDIA CUDA架构GPU加速的FLAC编码器FlaCuda编码器。

  支持 nVIDIA Cuda 的 FLAC编码器

  首先说一下,目前SSE4.1和 CUDA硬件支持情况。Intel 酷睿2 E7000以上系列的CPU(E7000、E8000、Q8000、Q9000、i5、i7)是全部支持SSE4.1的;支持CUDA架构的GPU,是NVIDIA GeForce8系列所有GPU(包括主板整合)、GeForce9、GT100/200所有显卡均支持,值得注意的是GPU利用多个流处理器并行计算的方式,所以编码性能好坏与流处理器工作频率以及流处理器个数均有很大关系。

  fpFLAC编码器介绍与使用

  用Windows性能监视器监控SSE4 fpflac编码器工作状态

  fpFLAC编码器制作者曾经发布过fpMP3编码器,它也是较为流行的基于LAME编码器开发,能够很好的支持多核心CPU的一款MP3编码器,同时fpFLAC的老版本也是一款可以很好支持多核CPU的编码器,此次新版本开始支持SSE4.1多媒体指令集,同时有64位版本。从我们提供的链接上,大家可以下载到相关软件,软件内有一个英文的Readme,写的较为详细,我们把重要的几点做以下总结。

  fpFLAC编码器文件夹

  首先,下载的压缩包解压后并不是说明中所说的安装包,其实软件也并不用安装,只是选择一下使用Win32的文件夹还是Win64的,打开这两个文件夹,../win64/sse2(sse4),可以看到SSE4和SSE2的文件夹,打开后拷贝里面的 dll文件到../win64这一层目录中,覆盖原有的dll。这款编码器同样是与FLAC”官方“编码器定义相同的,在编码级别上支持0-8级的不同等级,8级编码后文件尺寸最小计算最复杂。

  编码器的作者为用户设计好了一个bat文件,在Windows的命令窗口下执行这个BAT即可,BAT内默认FLAC的级别是5,也可以通过编辑BAT来改变这个级别。

  FlaCuda编码器介绍与使用

  FLACCUDA编码器工作窗口

  NVIDIA CUDA是GeForce 8以后,NVIDIA提出的用GPU进行并行计算的一个架构,对于我们来说可以认为是显卡加速。之前,GPU加速在视频编码方面表现的非常好,而在Lame的CUDA版上表现极为一般,这与音频编码中算法有很大关系,不过我们目前只有一款显卡,所以不对其效率进行测评,只是来谈一下应用和看看它大概水平。我们使用GeForce GT240显卡,拥有96个流处理器,流处理器工作频率是1340MHz。

  使用时可以直接在Windows的命令窗口下执行编码器的exe文件,其中有两个参数比较重要,在exe后直接可以加-0...11的参数,这个FLAC编码器将文件压缩分为了11个级别,与原始FLAC编码器似乎有较大差别。另外,在命令行最后要用-o<文件名>的方式来写上输出文件的名字。其他高级参数我们目前不太清楚其用途。

  Intel Q9550 CPU参数

  Intel Q9550 CPU,四核心,主频 2.83GHz,定位高端售价1600元左右。

  NVIDIA GT240显卡参数

  NVIDIA GT240显卡,96个流处理器,售价500-600元左右。

  FLAC编码器时间统计表格

  从测试来看,我们选用了6张CD合成的一个WAV文件,总时长达到了6小时36分39秒,下表可以看到我们整个测试编码锁消耗的时间。与FLAC原始编码器相比速度都有很大提升,原始编码器完成这段编码的时间是163秒(默认等级5,不支持多核心CPU)。使用500-600元级别的GT240显卡,在基本不占用CPU的情况下,可以达到的速度虽然不如高频率的4核心CPU快,但与主流双核CPU相比肯定有明显优势,同时CUDA的FLAC编码器5级的文件要比fpFLAC最高8级的文件更小对应时间更短得多。当然,使用酷睿2四核心Q9550 2.83GHz的CPU在默认等级下编码速度是最快的,不过,我们发现在支持SSE4.1的CPU上似乎无法测试SSE2加速的情,当然也不排除SSE2和SSE4差别很小的情况。

  目前这两款编码器都基于命令行窗口模式运行,对于普通用户来说操作还不够方便。不过我们可以看到,无论是CPU的多媒体指令集还是GPU的并行计算,已经在音频编码上带来了很大的提速。