您的位置:首页 > 编程语言

基于MPI的H.264并行编码代码移植与优化

2012-02-06 09:18 260 查看
2010 03 25

基于MPI的H.264并行编码代码移植与优化

范 文

洛阳理工学院计算机信息工程系 洛阳 471023

摘 要 H.264获得出色压缩效果和质量的代价是压缩编码算法复杂度的增加。为了寻求更高的编码速

度,集群并行计算被运用到H.264的视频编码计算中。分析H.264可实现并行计算的任务单元选择;采用

了片(slice)级的H.264并行编码计算方法,实现了基于MPI并行环境的X264源代码移植;针对实验室的小

型集群平台,通过测试给出较优的并行任务分配方案,结果表明对标清视频在分8片以上并行编码时能够

达到实时编码的要求。

关键词 H.264;视频编码;并行计算;MPI

引言

随着计算机、通信、广播等技术的发展,数字视

频(Digital Video)已应用于许多领域,如可视电话、会

议电视、安全监控、高清晰度电视(HDTV),视频点播

(VOD)等。多媒体视频应用的广泛普及,高质量的视频

服务市场潜力巨大。实时的高清晰视频编码传输技术成

为视频发展重点。视频业务的实时应用,面临着视频图

像的大数据量、有限的通信信道的传输率、存储容量及

计算机的处理速度的瓶颈。如果单靠增加通信信道的带

宽、存储器容量及提高计算机的运算速度,效果有限而

且也不经济。而对视频数据进行高效的编码压缩,不仅

可以提高通信传输效率也节省了存储空间。

数字视频压缩技术在各种需求的推动下,不断得到

发展和提高。由视频编码专家小组(VCEG)和运动图像

专家小组(MPEG)成立的联合视频专家小组JVT (Joint

Video Term)共同制定的H.26L标准草案,其成果成为

MPEG-4的第十部分,于2002年底正式命名为H.264,

并且成为ITU-T和MPEG联合专家组JVT制订的下一代

视频编码标准AVC(Advanced Video Coding)的基础[1]。

它具备很多以往同类标准没有的优点,适用范围广泛,

发展潜力巨大。

为了获得更好的视频编码效果,视频编码计算的复

杂性也就随之极大的增加,它对计算机的处理能力要求

也越来越高。仅依赖于单核计算机处理器速度的提高,

现在还无法达到高清和标清视频的实时H.264编码压

缩。因此需要寻求一种利用现有的资源能够更高效地完

成复杂任务的方法:通过高速网络,充分利用网络连接

的计算机资源,实现复杂问题的并行计算。本文研究利

用MPI来实现视频编码的并行处理,实现H.264并行视

频编码计算,从而有效提升了H.264编码的速度。在实

时的高清、标清视频编码压缩方面,对H.264编码压缩

代码的并行处理移植实现,是一个较新并具有应用价值

的研究,这也是本论文研究的主要课题。

1 并行计算

并行计算,简单地讲就是在并行计算机或分布式计

算机等高性能计算系统上所做的大型复杂计算,其物质

基础是高性能并行计算机(包括分布式网络计算机)。并

行计算的发展基于两方面的认识:第一,单处理机性能

不可能满足大规模计算和工程问题计算的需求,而并行

计算机则是实现高性能计算、解决挑战性问题的唯一途

径;第二,同时性和并行性是客观物质世界存在的普遍

属性,具有实际物理背景的计算问题在许多情况下都可

划分为能够并行计算的多个子任务。

实现并行算法的常用软件环境是操作系统( 如

Research & Development

研究与开发

Research & Development

26 信息通信技术

L i n u x , Windows等)配合并行计算环境加上工具

语言(如C, C++, Fortran)。并行计算环境随着近

年来分布式M P P 系统与工作站集群系统的发展得

到了迅速发展,相继出现了PVM,MPI,Express,

Linda,PARMACS,P4,Nx和Zipcode等基于消息传递的

并行计算环境,目前常用的是PVM和MPI。我们选用

MPI并行环境进行研究。

MPI(Message Passing Interface)是并行计算机的

消息传递接口标准的简称,提供了一组可用于消息传

递的通信原语。MPI的标准化开始于1992年4月29日至

30在威吉尼亚的威廉姆斯堡召开的分布存储环境中消

息传递标准的讨论会,由Dongarra、Hempel、Hey和

Walker建议的初始草案,在1992年11月推出并在1993

年2月完成了修订版,这就是MPI1.0。1995年6月推出

了MPI的新版本MPI1.1,对原来的MPI作了进一步的

修改完善和扩充。MPI仅仅提供并行库,而不是一门语

言,是一种对原来的串行程序设计改动最小的并行化方

法[2]。这样,原来的串行编译器也能够使用,不需要任

何修改。编程者只需要在原来的串行程序中加入对并行

库的调用,就可以实现并行程序设计。

MPI库可以被Fortran77,Fortran90,C,C++调

用,从语法上说它遵守所有对库函数/过程的调用规

则,和一般的函数/过程没有什么区别。MPI是目前最

重要的并行编程工具,它具有移植性好,功能强大,效

率高等多种优点。

2 H.264并行化编码分析与实现

H.264的码流数据层次包括一个表头、一个或多

个图像片及序列的结束标志码。如图1所示,视频序

列(Sequence)是由一系列的图像(Picture)组成,每帧图

像由一个或多个片(slice)组成,每个片又由多个宏块

(Macroblock)组成[3]。

为了追求更高的压缩效率,去除图像序列间时间冗

余度,同时满足多媒体播放等随机存取要求,H.264将

视频序列中的图像帧划分为I帧图像(帧内编码图像)、P

帧图像(预测编码图像)和B帧图像(双向预测编码图像);

组成图像的16×16大小的宏块(Macroblock)又可以分为

4个8×8的块(Block)。在H.264中,组成片(Slice)的连

续宏块是按照一定编码顺序排列的,Slice表示的是一个

独立的编码单元,也就是说它不需要参考同一帧中其他

Slice来进行编码。通过有效的调度算法,从以上这些数

据结构中选择一个合适的并行任务单元,能够获得一个

高效率的并行编码处理器[4]。

主从模式并行处理的工作流程模型如图1所示。

本论文试验环境为小型的工作站集群。工作站机群

是将联网的多台工作站组成一个并行集群,适用于中等

规模的并行系统,价格便宜、配置灵活,但规模及并行

效率受网络设备的制约。所用的节点机器是由5台DELL

工作站组成,由千兆交换机和千兆网卡连接组成的小型

集群,采用Windows操作系统。每台工作站的配置为

Intel Xeon DualCore CPU 5130 2.0GHz两颗、内存

4G、千兆网卡。每台机器安装有MPI的MPICH-1.2.5

实现版本。本文选择X264源代码作为实现H.264并行编

码的原因,是由于X264中采用了一些算法优化,程序

结构优化及MMX, SSE, SSE2等指令优化,对原本消

耗较大的去块滤波器等做了较大程度的优化。

具体实现过程如图2所示。

3 结论

移植后的并行H.264编码程序可以运行在不同的

系统平台上。根据实验室使用的Windows平台小型集

群,每个节点有两个双核2.0GHz CPU的特点,我们

用多个不同的视频序列,采用不同的任务分配方式,测

试并行编码统计数据。

通过测试结果及实验分析,得出以下结论:影响

大分辨率视频H.264并行编码加速比的一个主要原因是

网络通信问题。提高并行编码速度的一种方法是做并

行编码时先把要编码视频数据存放在各台节点机器上,

让每个节点机器上运行的任务程序从本节点机器上读取

相应的数据片进行编码。因为YUV的视频序列数据量

很大,这种静态的数据获取可以节约大量的通信开销。

但是这种静态的数据调用,对于要实现实时分发并行编

研究与开发

2010 03 27

码是没有意义的,所以我们的H.264并行编码方案是直

接从主机向各从机实时的分配图像帧片数据。由于要通

过一个节点机器的网卡出口,同时向多台从机节点并发

数据,所以主机网络发送就成为一个提高并行编码速度

的瓶颈。虽然对于目前的720*576数据可以达到实时编

码,但是更高分辨率的视频图像,数据增加必然给主机

端的网络发送造成压力。这些可能需要双网卡的绑定,

或者其他的数据获取方式,提高并行传输的数据量。

实现并行编码还要根据不同的平台,实现不同的策

略。如上述的实验室5台工作站组成的集群平台,根据

它的特点我们得出适应并行编码的最佳条件:

1) 当分配相同工作任务数量时,在主机上工作的

任务数越多效率越高,因为每台机器是2个双核CPU相

当于有4个核,可以同时执行4个任务。在主机上工作任

务多就意味着可以尽量少的通过网络传输数据,节省整

体的通信时间。

2) 同样并行片编码任务数目时,在充分利用主机

的处理器条件下,相同的任务数量分配机器数越多速度

越快。因为H.264编码对内存的要求较高,当多个任务

分配在一个节点机器上的不同CPU核时,在一个节点

机器上各处理器共享内存,工作时对内存资源的需求造

成了冲突。所以要获得高的并行效率,需要根据集群平

台的实际情况优化任务分配策略,这也是同一个程序能

获得不同并行效果的因素。

3) 经过多组视频图像的测试,发现在8片时编码的

平均速度为27.32fps,并且每组视频序列也都达到了实

时编码的要求。

在实验室5台并行机器能实现上述任意任务的分

配,是由于我们可以写配置文件来指定任务工作方式、

任务分配节点位置、数量。在这种小型的集群平台上我

们可以按照我们的要求,最优地分配任务。学校集群平

台上的实验结果与实验室5台有所不同,是因为我们不

Research & Development

图1 主从模式并行处理的工作模型

28 信息通信技术

图2 X264程序并行执行流程

研究与开发

2010 03 29

作者简历

H.264 Code Parallel Implementation and Optimization

Based on MPI

Fan Wen

Computer and Information Engineering Department, Luoyang Institute of Science and

Technology, Luo Yang 471023, China

Abstract The cost of H.264 geting good coding effect and quality is algorithms complexity increased.

The High Perfermance Parallel Computing was used in the H.264 video coding for getting faster

speed, Choosing slice as a unit for H.264 Parallel Computing and implementing X264 codec Parallel

Computing with MPI, then the best Parallel task work effi ciency based on lab´s cluster was got and test

results indicated that the parallel coding speed of SD Video can meet real-time requirement when sliceses

are more than 8.

Keywords H.264; Video Coding; Parallel Computing; MPI

范 文

洛阳理工学院,计算机与信息工程系。

能像实验室平台那样可以在主机上多分配执行任务,节

省部分通信时间。学校的集群平台上完全是把每片数据

都通过网络发送给从机节点进行编码计算,耗费网络通

信时间较多,这是两个平台实验数据有差别的一个原

因。学校这种规模较大,为众多公众服务的集群,我们

不易按配置文件来指定任务在节点的工作方式,因为可

能同时有别的用户在使用。对于不同的集群平台要根据

实际情况优化并行任务。

参考文献

[1]

[2]

[3]

[4]

Iain E.G.Richardson.H.264 and MPEG-4

Video Compression Wiley.2003

都志辉.高性能计算之并行编程技术—MPI并行程

序设计.北京:清华大学出版社,2001

I T U - T R e c . H . 2 6 4 / I S O / I E C 1 1 4 9 6 - 1 0 .

Advanced Video Coding.Final Committee

Draft,Document JVT-F100,2002.12

孙彦辉.基于H_264编码码率控制方法研究[D].中

南大学大学硕士学位论文,2008

Research & Development
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息