论文部分内容阅读
帧率上转换(Frame Rate Up-Conversion,FRUC)算法通过在原有两个视频帧中插入中间帧的方式,实现将视频从一个较低的帧率提高到一个较高的帧率。随着超高清4K视频的出现,像素点的急剧增多,导致一些传统的串行帧率上转换算法难以达到快速处理甚至实时的要求。近年来,异构多核设备已经成为高性能计算领域的重要设备,2012年Intel发布了支持X86指令架构的Intel Xeon Phi协处理器,该设备具有57个以上的基于X86架构的计算核心。同时该协处理器支持多种并行编程语言,如OpenMP,Pthread,OpenCL等。所以本文提出了基于Intel Xeon Phi的并行帧率上转换算法,对算法中的两大核心模块运动估计算法和运动补偿算法进行并行研究,本文所研究的主要工作有以下两个方面:(1)提出了基于MIC架构的OpenCL并行视频帧率上转换算法。首先,我们对运动估计模块进行了并行分析,针对3DRS算法具有空间候选运动矢量相互依赖的特性,我们提出了一种基于宏块级的并行思路。首先将图像划分为240×135个块,我们利用MIC多线程的优势,将每行的240个块进行并行操作,即每个核单独进行每个块候选运动矢量的计算。然后,我们对运动补偿模块进行了并行分析,图像中每个像素点在运动补偿模块处理的操作流程完全一致,且相互独立,不存在任何的依赖关系,所以,我们对图像中所有像素点的插值过程进行了并行。最后我们对并行帧率上转换算法的实验结果进行了理论分析。(2)提出了基于双MIC卡的视频帧率上转换算法。我们设计了一种异步式处理的方案,即将运动估计模块和运动补偿模块同时进行处理,由于实验环境的节点拥有两块MIC卡,所以我们将运动估计模块放在一块MIC卡上进行,运动补偿模块放在另一块卡上进行。利用Pthread在CPU端开启两个子线程,分别控制与两块MIC卡之间的数据交互,第一块MIC卡计算完的数据传输回主机端,再由主机端把数据传输给第二个MIC卡,当第一块MIC卡计算完成后,直接进行下一帧的处理,无需等待第二块MIC卡是否执行完成。其中两个MIC卡与主机端数据拷贝是用信号量控制的。为了发挥MIC多线程的优势,我们在MIC上分别实现了Open MP和OpenCL的并行模式。最后,我们对比了OpenMP和OpenCL两种编程模型在MIC上的计算时间,并对实验结果进行了理论分析。