论文部分内容阅读
在过去的几十年中,多媒体处理受到了极大的关注,消费者对高清晰度多媒体内容特别是高清视频和图像的创建和处理的需求也越来越大。然而,由于高清晰度多媒体内容中包含了大量的数据,处理和分析他们需要我们具备高性能计算能力。随着CPU+GPU异构计算环境的普及和OpenCL异构并行计算的兴起,利用GPU的大规模并行计算能力可以产生几个数量级的性能提升。因此,本文进行了基于OpenCL的高清视频实时去雾与H.264视频解码并行加速研究,具体如下:1)目前,基于单幅图像的去雾算法的研究重点大多集中在算法复杂度和图像的去雾效果上,对算法进行并行加速的研究还很有限。由于高清视频的分辨率比普通视频高出很多,这使得高清视频实时去雾的计算量非常巨大,需要更快的去雾速度。在本文中,我们基于一种单幅图像去雾算法(FHRUSI算法)提出了面向高清视频实时去雾的OpenCL并行实现和优化。首先我们实现了该算法的CPU串行版本,接下来根据串行版本提出了对应的基本OpenCL并行程序,我们根据嵌入式系统硬件平台的特点和算法本身的特点进行了优化设计。我们的优化工作充分利用了 AMD GPU的存储器层次结构,在降低内存访问延迟的同时提高了算法的并行度,大大减少了 FHRUSI去雾算法的执行时间。最后,我们将OpenCL并行优化版本作为独立的模块移植到开源多媒体框架FFMPEG中进行视频去雾实验。结果表明,我们可以以实时速率(每秒超过41帧)处理1080p(1920×1080)高清视频,并且高清晰度视频的去雾效果良好。优化后程序的执行速度提高了 4.8倍以上。2)在本文中,我们提出了基于开源多媒体框架FFMPEG的H.264逆离散余弦变换IDCT算法的OpenCL并行实现和优化。首先,我们将IDCT从宏块解码的循环中分离了出来并根据块大小把它的核心代码改写为两个在GPU上执行的OpenCL内核函数。其次,将IDCT计算任务从CPU端卸载到GPU端会带来额外的开销(内存拷贝和OpenCL运行时)。因此,我们对上述OpenCL程序进行了进一步的优化,包括CPU-GPU通信优化、本地内存优化以及进一步的优化。实验结果显示优化的GPU内核相比在CPU上执行的SIMD版本取得了显著的加速,然而,当考虑到内存拷贝和OpenCL运行时开销时,我们的实现并没有在应用层获得性能加速。