基于多核并行计算的舰艇通用视频录取系统

2011-05-21 00:42王黎明杨飞海
电子设计工程 2011年13期
关键词:视频文件采集卡线程

王黎明,郑 健,吕 琳,杨飞海

(中国人民解放军91388部队 广东 湛江 524022)

海军战略战术演练与评估需要参与舰艇大量的显控台视频信息,包括雷达、武器发控、声纳、水声对抗等标准显控台视频信息。传统用摄像机摄录的方法有下列弊病:1)录取视频画面抖动严重且清晰度不高,无法准确识别视频图像包含的数据信息;2)演练时战位点除战位人员外往往聚集了许多专家与技术人员,摄录位置不能保证。视频录取系统在海军多次的试验与演练中发挥了重大的作用,为评估专家与数据处理人员提供确实可信的数据,以供分析和决策。但是现有单套视频录取设备最多只能同时录取两个显控台视频,如要进行扩展则需要极高的系统硬件配置要求。多核并行计算技术的出现解决了这一难题,减少了硬件改造成本,也避免了同一战位需建设多套设备的情况,从而减少占用舰艇空间过多的问题。

1 多核并行计算技术

并行计算系统是由硬件和软件组成的统一整体,理想的系统应该是无瓶颈、结构支持应用且应用适应结构的均衡系统[1]。并行计算的基本思想并不复杂,它将一个复杂的工作任务进行分解,然后在多核CPU上同时执行这些分解后的任务。CPU多核化要想真正发挥效益,必须依赖于精心设计的软件,软件本身必须具备将工作任务划分为可并行执行的子任务的能力,在操作系统的支持下,将这些任务分配给计算机所配备的多个CPU处理核心并行执行,并将结果进行组合得到最终结果。之所以要研究并行计算,其目的是获得更好的性能。一个软件系统的性能,通常使用响应速度和吞吐率来进行衡量。响应速度是指用户向软件系统提交一个任务,软件系统处理完毕将结果响应给用户所花费的时间。吞吐率指单位时间间隔内软件系统最多处理的任务数。并行计算的优势在于它可以提升多任务环境下系统的响应速度和吞吐率。实际应用中纯粹的并行算法很少,一般的算法包含并行与串行两部分。常常使用Amdahl加速比定律来衡量一个算法的并行能力[2]:

其中 S是加速比,也称加速系数(Speedup Factory),p表示处理器数量或核心数,f表示串行算法所占比例。显然,处理器或处理器核心越多,或串行算法比例越小,加速系数就越大,性能提升越明显。因此实际应用中,硬件方面应尽可能选择核心数多的CPU,软件部分应尽可能减少程序中的串行算法,提高并行能力。

2 系统设计与实现

2.1 系统硬件结构

目前舰艇上标准显控台视频输入输出一般采用RGB/RGBHV接口,符合通用军工标准,因此研制的视频录取系统也采用这种视频标准,具有高度通用性[3]。

视频录取系统硬件包括视频录取机、高清视频采集卡、视频分配器以及标准的RGBHV视频线缆。视频录取机是采用Intel Q8400四核CPU的工业级便携式工控机,存储设备采用RAID0+RAID1的磁盘冗余策略,工控机内置4块符合军用总线标准[4]的PCI-E高清视频采集卡。系统可以同时录取4路1280×1024分辨率的高清视频。录取设备与舰艇显控台对接的示意图如图1所示。

图1 视频录取设备与舰艇显控台对接示意图Fig.1 Connection diagram of video-capturing device to display-console

RGBHV标准视频线一端连接标准显控台机柜视频输出端,另一端接视频分配器输入端;再用一条视频线分别接视频分配器输出端和显控台显示器;最后用一条视频线分别接视频分配器另一输出端和视频录取机的一块视频采集卡。其他3路的连接方法与之类似。

2.2 系统软件实现

2.2.1 基于多线程并发计算的视频录取系统的弊端

现有的视频录取系统软件是基于多线程并发计算技术开发的,没有考虑当前多核CPU硬件环境带来的优势,程序完全交于操作系统分时调度。操作系统按照时间片将CPU分配给各个线程,在处理当前线程时其他线程处于等待状态,对于多核CPU环境来说利用效率太低,而且多路视频同时采集时会出现各线程执行效率不均衡的现象。另外,程序中控制代码复杂,容易出现多线程编程中常见的线程同步异常以及死锁现象[5]。

2.2.2 关键技术

为克服旧有系统的弊病,这里用到了微软.NET4.0中的并行任务库(Task Parallel Library,TPL),它是.NET 4.0 为开发者提供的一组类,位于System.Threading和System.Threading.Tasks这两个命名空间下,驻留在3个.NET核心程序集mscorlib.dll、System.dll和 System.Core.dll里。它将并行程序抽象级别从“线程(Thread)”提升到“任务”级别[6]。

软件编写使用C#语言,在Microsoft Visual Studio 2010环境下进行开发。以下是部分关键代码。

1)并行执行任务代码,用于并行调用4路视频录取代码。

//引用两个命名空间

Using System.Threading;

Using System.Threading.Tasks;

//......

//获取当前系统CPU核心数

Int numberofCPU=System.Environment.ProcessorCount;

//视频采集代码分配到不同的CPU核心,并行调用视频录取代码

Parallel.For(0,numberofCPU,i=>{

Int iCurrUsedNo;//视频采集卡卡号

VideoCapture(iCurrUsedNo);}

);

//......

2)视频录取(VideoCapture)关键代码。其中,部分函数引用视频采集卡公司提供的二次开发包,视频编码可设置为H.264或MPEG4算法。

//......

//打开指定的视频采集卡

hBoard=okOpenBoard(iCurrUsedNo);

//指定文件路径以及编码格式

filename1=fnametmp+".AVI,MPG4" ;

//获取当前系统时间,精确到毫秒

systime=CurrentTime();

//将时间信息叠加到当前帧

okSetTextTo hBoard,BUFFER, rcRect, lfLogFont, textmode,systime, 23;

//将当前帧存储到指定的文件

okSaveImageFile hBoard,filename1,imageseq,BUFFER,0, 1;

//以上代码循环,直到“停止”操作

//......

2.3 系统性能实验

视频录取过程是一个持续的过程,可以在程序中设置测试点来测试响应速度。吞吐率在这里是指单位时间内处理的视频数据流,也就是视频的帧率。旧有系统的程序是基于多线程并发计算的,并发的概念与并行有着本质不同,不是真正意义上的“并行”。将这两种不同算法的软件安装在该视频录取机上,按图1布置连接视频信号源,分别运行这两种程序,同时录取4路1280×1024分辨率的视频,在程序中设置测试点记录响应时间,并在过程中某一时刻查看CPU使用情况,结束后查看录取的视频文件帧率。并行计算性能测试结果如表1所示,视频文件帧率对比结果如表2所示。

表1 并行计算性能Tab.1 Parallel computing performance

表2 两种算法录取结束后文件帧率的对比Tab.2 File frame rate comparison by two different algorithms

从表1看出,基于新算法的系统体现了真正意义上较好的并行计算性能。

从表2可知,基于旧算法系统录取的各视频文件之间帧率相差很大,体现了多线程分时调度的弊病,如要克服这种不均衡需要编制复杂的控制代码,而这又会造成不小的系统开销和增加线程同步异常的机率。基于新算法的系统是将不同通道的视频采集代码分配到不同的CPU核心上,录取的视频文件帧率基本上接近,体现了系统良好的均衡控制能力。

在实验过程中某时刻查看CPU使用情况时,发现基于旧算法系统的CPU核心使用率达到78%,CPU 4个核心的使用记录曲线极不平衡,如果系统要增加其他功能或运行其他进程有可能会造成阻塞,因此系统可扩展性差;而基于新算法系统的CPU使用率仅为46%,且各核心使用记录曲线非常均衡,系统仍有较大的可扩展性。

3 结束语

笔者介绍了一种基于并行计算技术的舰艇标准显控台视频录取系统,重点叙述了该系统软件关键部分的技术及实现。通过与旧有基于多线程并发计算技术的视频录取系统的性能对比,基于新算法系统录取的视频数据帧率均衡稳定,系统响应快,CPU使用率低,系统总体开销小,系统可扩展性强。该系统可以根据舰艇任务的实际需求,扩展视频采集卡数量,增加其他功能(如作战系统总线数据录取等),从而实现更高的系统集成度和使用效率。

[1]杨晓东,陆松,牟胜梅.并行计算机体系结构技术与分析[M].北京:科学出版社,2009.

[2]孙敏.基于并行结构骨架的并行程序设计环境研究与实现[D].天津:天津大学,2008.

[3]陈正捷,蔺宏江,陈志昊.国外军用计算机数据交换技术的发展[J].兵工自动化,2010,29(4):25-29.CHEN Zheng-jie, LIN Hong-jiang, CHEN Zhi-hao.Development of foreign military computer data exchange technology[J].Ordnance Industry Automation, 2010, 29(4): 25-29.

[4]唐慧.基于PCI总线多路图像采集卡的研究[D].哈尔滨:哈尔滨工业大学,2006.

[5]Michaelis M著.C#本质论[M].周靖,译.北京:人民邮电出版社,2008.

[6]金旭亮.NET 4.0面向对象漫谈—应用篇[M].北京:电子工业出版社,2010.

猜你喜欢
视频文件采集卡线程
流媒体视频文件相似性识别的方法
高精度AD采集卡性能测试及评价方法研究
随心定制视频文件的缩略图
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
面向数控机床的多通道传感数据采集卡设计
浅谈linux多线程协作
并行高速采样在地震物理模拟采集中的应用
PCI-e高速数据采集卡的驱动与上位机软件设计
视频网格中自适应热度变化的条块化存储