为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 基于CUDA的H264视频并行编解码器的研究与实现(可编辑)

基于CUDA的H264视频并行编解码器的研究与实现(可编辑)

2018-03-13 28页 doc 63KB 52阅读

用户头像

is_003124

暂无简介

举报
基于CUDA的H264视频并行编解码器的研究与实现(可编辑)基于CUDA的H264视频并行编解码器的研究与实现(可编辑) 基于CUDA的H264视频并行编解码器的研究与实现 学校代号 10530学 号 200911041499分 类 号 TP391密 级硕 士 学 位 论 文 基于CUDA的H.264视频并行编解码器 位 申 请 人 陆 达指 导 教 师 刘国繁 教授 研究与实现学 学 院 名 称 信息工程学院 学 科 专 业信号与信息处理研 究 方 向 视频图象处理 二?一二年五月二十二日 Research and Implementation of H.264 Vi...
基于CUDA的H264视频并行编解码器的研究与实现(可编辑)
基于CUDA的H264视频并行编解码器的研究与实现(可编辑) 基于CUDA的H264视频并行编解码器的研究与实现 学校代号 10530学 号 200911041499分 类 号 TP391密 级硕 士 学 位 论 文 基于CUDA的H.264视频并行编解码器 位 申 请 人 陆 达指 导 教 师 刘国繁 教授 研究与实现学 学 院 名 称 信息工程学院 学 科 专 业信号与信息处理研 究 方 向 视频图象处理 二?一二年五月二十二日 Research and Implementation of H.264 Video Parallel Codec Based on CUDA Candidate Lu DaSupervisor Prof. LiuGuofan CollegeCollege of Information EngineeringProgram Signal and Information Processing Specialization Video image ProcessingDegree Master of EngineeringUniversity Xiangtan University Date May 22, 2012 湘潭大学 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的 研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个 人或 集体已经发或撰写的成果作品。对本文的研究做出重要贡献的个人和集体, 均 已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年 月 日学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保 留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借 阅。本人授权湘潭大学可以将本学位论文的全部或部分内容编入有关数据库进行 检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 : 日期:年 月 日 作者签名 导师签名: 日期:年 月 日 摘 要 相比此前的任何视频编码标准,H.264标准都更为先进实用,但实际上其发 布距今已有多年,仍然与真正大规模的应用实现之间存在较大距离,根本原因在 于 H.264的高性能以提高了编解码器的计算复杂度作为代价。如何利用现有的软 硬件资源,在保证高性能的前提下提高 H.264编解码器的效率,长期以来都是该 领域研究的热点。 本文首先了视频编码在应用领域所面临的挑战,再就国内外的研究现状 进行了讨论;然后对 CUDA 的编程架构进行了阐述,并介绍了 H.264 编解码架 构、主要特征,以及 H.264 的关键技术,分析了 CUDA 应用于 H.264 视频编 解 码的优势与挑战。在此基础上,对 H.264编解码框架作了并行化设计,并就其中 最为耗时且适合于并行执行的运动估计、环路滤波模块提出了 GPU 的实现,同 时对熵解码查表解码算法也作了基于 CPU的算法设计。 在编码框架设计中,本文考虑到 GPU 和 CPU 间数据传送的时间应明显小于 GPU所需要的计算时间,才适合于将该部分算法映射到 GPU中去。为了减少从 Device 端向 Host 端的回传数据量,同时又避免数据漂移现象,本文采用运动信 息来取代残差信号传回。通过对运动估计并行模型的分析,本文利用可变子块的 树状结构来分三步完成对整像素点的预测,同时也对亚像素运动估计中的插值运 算和 SAD计算的并行实现算法作了描述。对环路滤波,分别对 Bs值求取以及边 界过滤均作了并行实现。此外,对并不适合并行设计的熵解码作了基于 CPU 的 算法设计,根据 H.264标准中的 CAVLC解码算法过程中查表的特点,提出了针 对所查找的二维表中存在的定长和变长两种码表,分别采用不同策略加以优化的 设计。 实验结果证明,本文提出的基于 CUDA 的运动估计并行算法实现,编码效 果与全搜索算法相近,却大大加速了编码器的处理速度。同时,解码端对环路 滤 波和熵解码算法的优化,在不降低视频质量的前提下,也显著地加速了解码 器处 理速度。 关键词:H.264;CUDA;运动估计;熵解码;环路滤波 Abstract Compared with previous video coding standard, H.264 standards are more advanced and practical, but in fact it was released many years ago, still there is a great distance from the realization of truly large-scale application, the fundamental reason is that the high-performance of H.264 is at the cost of improving the computational complexity of the codec. It is the hot-pots of research in the field that how to use the current hardware and software resources to improve the efficiency of the H.264 codec on the condition of high performance This article first analyzes the challenges that the video coding faces in the application area, also have conducted some discussions about domestic and overseas researches, and then expounded framework of the CUDA programming, and describes the architecture of the H.264 codec, the main features, as well as the key technology of the H .264, and also have analyzed the advantages and challenges of the CUDA’s applying to H.264 video codec. On this basis, this article have made parallel design of the H.264 codec's framework, and also proposed the realization according to the most time-consuming but suitable for parallel execution of the motion estimation and the loop filter module implementation of the GPU. At the same time, the algorithm was also made by the CPU-based algorithm design for the entropy decoding look-up table decodingDuring the process of coding frame design, considering the time of data transfer between the GPU and CPU should be significantly less than the computing time needed by the GPU, it is proper to mapped to the GPU. In order to reduce the amount of returned data from the Device side to the Host side, at the same time to avoid data drift phenomena, adopt the motion information to replace the residual signal returns in the article. Through the analysis of the parallel model of motion estimation, not only use variable sub-block tree in three steps to complete the forecast of the entire pixel in the article, but also make some detailed descriptions of the interpolation in the parallel to sub-pixel motion estimation and the calculation algorithm in SAD calculation. As to loop filter, it makes parallel implementation both in computing for Bs value and border filter. In addition, to the entropy decoding look-up table decoding, which is not suitable for parallelism, this article was also made by the CPU-based algorithm designIIAccording to the characteristics of two-dimensional code table for CAVLC, a fast algorithm was proposed in H.264 decoder implementation, which enable different strategies to be made respectively based on the Variable Length Codes and the Fixed Length Codes existing in two-dimensional code table for CAVLCAs the experimental results show, the coding efficiency of parallel algorithm for -based motion estimation is similar to the full search algorithm CUDA in the article, has greatly accelerated the speed of the encoder process. At the same time, the optimization of the decoding side of the loop filtering and entropy decoding algorithm has significantly accelerated the decoder processing speed at the premise of without degrading the video qualityKeywords: H.264; CUDA; ME; Entropy decoding; Deblocking filterIII目 录 第 1章 绪论. 1 课题的研究背景 1 1.1 1.2 国内外研究现状 2 本文的主要研究内容和结构. 4 1.3 第 2章 CUDA编程架构与传统 H.264标准编解码架构. 6 2.1 CUDA的编程架构 6 2.1.1 GPGPU与 CUDA. 6 2.1.2 CUDA编程模型 7 2.1.3 CUDA的硬件模型9 2.2 传统 H.264标准的编解码架构10 2.2.1 H.264编解码原理及主要特征 10 2.2.2 H.264的关键技术12 2.3 CUDA应用于 H.264编解码的优势与挑战. 16 第 3章 基于 CUDA的 H.264视频编码器优化. 19 3.1 基于 CUDA的 H.264并行编码器的框架设计. 19 3.1.1 传统的 H.264编码器框架局限性分析19 3.1.2 基于 CUDA的 H.264编码框架并行化设计21 3.2 基于 CUDA的运动估计算法优化 23 3.2.1 运动估计的并行化模型分析23 3.2.2归并运动估计并行算法25 3.3 并行编码器的实现 31 3.4 算法仿真与实验结果分析 34 3.4.1 实验评测 34 3.4.2 结果分析 37 第 4章 基于 CUDA的 H.264视频解码器优化. 39 4.1 基于 CUDA的 H.264并行解码器的框架设计. 39 传统的 H.264解码器框架局限性分析39 4.1.1 4.1.2 基于 CUDA的 H.264解码框架并行化设计40 熵解码算法优化. 42 4.2 4.2.1 熵解码算法分析 42 IV4.2.2 分治法查表解码算法43 4.3 环路滤波优化. 46 4.3.1 滤波算法分析. 46 4.3.2 并行滤波算法的 CUDA实现. 48 4.4 并行解码器的实现 50 4.5 算法仿真与实验结果分析 51 4.5.1 实验评测 51 4.5.2 结果分析 53 第 5章 与展望 54 参考文献56 致 谢60 攻读硕士学位期间发表的学术论文. 61 V第1 章 绪论 1.1 课题的研究背景 人们自步入21世纪信息化时代以来,对于信息的获取方式呈现出多样化的趋 势。现实生活中那些简单、抽象的以数字或文字形式作为载体的信息,始终不如 音视频、图像等媒体形式更易于让人接受。视频信息凭借其高效、直观等一系列 优点,在信息传播途径方面有着越来越重要的地位。 其所包含的庞大数据量也对通信 视频信息在给人们提供丰富信息量的同时, 系统的有限存储能力和传输能力提出了严峻的挑战。若不经压缩,可视电话所用 的QCIF格式,帧率25fps的视频图像至少需要7.6Mbps的带宽;输入格式为D1的 DVD视频信号,色差格式 4: 2: 2,帧率 30fps,视频数据的码率为 ( 720×480×16×30?165.9 Mbps),则一张容量达 4.7G的 DVD只能够存放 (4.7×8/0.1659?226.6秒)时间长度的视频序列;而未经压缩的一路高清电视 HDTV(High Definition Television)则需用1Gbps的带宽。可见必须对视频信号 的数据经过有效的压缩处理后,才方便于在现有环境和条件下进行存储及传输。 多媒体技术能高速发展并取得今日的成就,很大程度上要归功于两个负责音 视频编码的标准化组织(ITU和ISO)所推出的针对不同应用领域的一系列数字 视频编码标准。自20世纪50年代开始,人们就已经开始了对视频数据压缩 理论的 研究,由此形成的音、视频编码体系已经逐渐应用到了许多相关领域。国际电信 联盟ITU-T和国际电工委员会ISO/IEC 等组织先后制定的多个音视频压缩编 [1] [2] 码标准,包括: ISO/IEC 的MPEG 运动图像专家组推出的MPEG-1 、 MPEG-2 、 [3] -4 等,主要用于视频广播、视频存储DVD和视频流媒体;国际电信联 MPEG [4]-[6] -T的视频编码专家组 VCEG推出的H.26X ,主要用于可视电话与视 盟ITU 频会议等实时视频通信领域。H.264作为ISO和ITU联合制定的视频编码标准,旨 在将压缩率进一步提高,同时为实时类 如视频电话和非实时类如广播、存储 或流媒体两大应用提供良好的视频压缩编码的通用工具。通过一系列优化措施 的采取,H.264标准使其编码性能从整体上取得了大幅提升。在网络视频流媒体 领域,H.264标准同样十分有亲和性,很大的改善了信号在网络视频流领域的传 输环节易出现的阻塞和误码等现象,明显降低了丢包率。此外,对同等质量的视 频图像进行处理时,采用H.264压缩所得的码率至少能比H.263要节省50%,这对 于低宽带条件而又对图像质量要求较高的一些场合,该标准能普遍投入使 用。总 之,H.264视频编码标准相比此前任何编码标准都更为先进实用??高质量的图 像,更高的编码效率,更强的网络适应性,容错功能,基本层对外公开,不收专 1利费等。正因为其卓越性能以及其所带来的潜在市场价值,基于H.264的数字多 媒体处理系统目前已广泛存在于人们生活中,同时还表现出快速的发展趋势。 随着视频其在个人消费方面也正渐渐变成一大技术在IT产业的广泛应用, 新 的经济增长点。按当前视频传播内容以及播放终端来区分,在数字消费领域主要 分为两大发展方向。第一类是随着人们对生活品质需求的日益提高,越来越多的 用户不再满足于传统的模拟电视画质而出现的显示终端大型化以及视频播放的 高清化;第二类方向是播放终端设备的便携化与小型化,此类设备旨在满足人们 对实时视频通讯及娱乐方面的需求,相关的主要产品包括便携式多媒体设备。 近年来,随着PC技术以及网络技术飞速发展,非智能家电的传统家庭娱乐 消费模式将会被基于PC的高清数字家庭逐步取代。PC在数字家庭网络中担当着 重要角色,它既是主控制器,又是媒体服务器,因而成为整个家庭娱乐的中心。 最为广泛的应用表现在:一段从宽带网实时下载或预先存储的高清视频流,通常 是已被压缩过的,首先需在PC上解码,再经家庭网络显示在分布于用户住所的 各个高清显示设备上,这样就实现了视频和家人共享,可以预计今后的家用视频 娱乐会普遍采用这样的形式。我们所不能忽略的一个问题是,以上对家用PC 因为处理超大画面高清视频的负担极为沉重。上的CPU提出了很高的要求, 以前 的测试表明,即使解码程序全采用SSE2指令优化,在CPU为Pentium?-1.3G的一 台PC机上,即使不包括对视频的显示处理,对运动场景不多的1280×720视频进 行实时解码也是比较勉强的。 此外,像家用游戏主机等一些其它的常用设备,经常也有对压缩视频流进行 解码的需要,但通常此类设备的CPU处理能力并非那么强劲。例如:微软的Xbox 采用了Intel的Pentium ?-733M,Sony采用RISC架构的PS2主频也仅300MHz。视 频应用技术在该方向最大的难点是显而易见的,那就是如何将较为复杂的视频编 解码在资源非常有限的硬件平台实现。并且对于这类专用设备,像PC机那样采 用更换CPU的途径来使得性能得以提升是不可取的。正因为如此,如何在此 类设 备上实现高清视频实时解码,也成为视频编解码研究的一大挑战。 由数码娱乐设备、家庭影院和网络视频服务等应用可看到,视频压缩技术无 论对于商务办公或是个人娱乐,都具备广阔的应用空间,其解决方案对不同的应 用领域也不尽相同。虽然视频业务在开发和运营方式上面临很多困难,但随着视 频应用需求的不断增长,吸引了越来越多的学者与厂家加入这片领地,视频技术 的研究开发与应用,长期都是人们关注的热点。 国内外研究现状 1.2 H.264标准的发布距今已有多年,但实际上H.264仍然与真正大规模的应用实 2现之间存在较大距离,根本原因在于H.264的高性能以编解码器的计算复杂度的 提高作为代价,这使得该技术的普及面临许多问题。国内外的大量视频研究专家 通过性能测试一致得出:H.264比MPEG-4的高出了5~10倍的编码复杂度,以及 2~4倍的解码复杂度,从所需消耗的编码时间来看,H.264差不多是H.263的14倍, [7] 而从解码所需消耗的时间来看,H.264差不多也要达到H.263的11倍 。人们在研 究过程中发现,H.264之所以强大,其优势离不开复杂严密的算法以及强大 硬件 平台的支持。一般来说,采取提升硬件电路性能的优化途径是较难实现的,因为 要受制于集成电路的发展程度和现行的电子技术水平。因而采用软件的快速算法 优化及其相应的实现,更能保证H.264技术的普及应用。近年来,视频编解码系 统在国内研究领域的通常方式是采用移植优化,必须要对该标准的整体思想和算 法结构进行透彻分析,以合理进行裁剪优化,从而能将H.264应用在高质量、低 码率的视频应用场合。 分析H.264编解码器,就计算复杂度而言主要包括如下几个模块:运动估计 (ME)、运动补偿(MC)、整数变换(DCT)、帧内和帧间模式决策以及环路 滤波。而这几大模块中计算最耗时的是ME,约消耗整个编码所用时间的 [8] 60%~80% 。因为ME分为整像素运动估计IME、亚像素运动估计FME两种, 而其中计算量又以前者为主,所以国内外许多学者所作的研究主要是针对整像素 ME进行的。目前最新的各ME算法都分别针对起始点预测、阈值选择及模板选择, 通过组合优化,做到了在保证编码质量的前提下进一步缩短了ME所需时间。环 路滤波器是另一个最为耗时模块之一。J.Lou,A.Jagmohan等人通过减少对边缘 强度求解的分支判断以加快滤波过程,对微处理器上边缘强度的判定过程进行了 [9]-[10] 优化 。Chen C,Shih S以及Chao Y等人则对滤波的次序提出了算法改进,该 [11]-[13] 加速方案不仅减少了存储所占空间,同时还大大较少了计算量 。整数变换 是在H.264视频标准中首次被采用的,其操作具有易于硬件实现的特点。Lin H等 人据此针对几种变换矩阵提出了快速实现的方法,同时还在硬件架构中集成了量 [14] 化与反量化这两步操作 。Wang T等人则是将变换与量化分开进行处理,从而针 [15] 对正向变换与反变换设计出了通用的并行硬件架构 。除了算法上所进行的优 化,人们还利用其它软硬件资源来进一步对运算速度进行提升。其中,Intel提供 专为多媒体应用的基于SIMD技术的多媒体扩展指令集,主要有 MMX、SSE、 SSE2 等等,通过对处理器资源更充分的利用,达到了提升数据运算实时性与并 行性的目的。另外还能采用诸如纯FPGA架构,以及FPGA与DSP相结合的软硬件 架构等硬件架构来实现加速。总之,目前国内外学者已在理论研究上对 H.264编 解码器的加速作过不懈的努力,也获得了不少相关科研成果,许多优秀算法已在 实际应用中广为采纳。当然,事实上大多数方案仍未达到实用的标准,这也促使 3着人们在该方面作更为深入的探索和研究。 当前的大多数计算机都装配有一颗功能强大的GPU, GPU在近些年来凭借其 可编程性、强浮点计算能力以及并行特性,在通用计算领域已被广为采用,人们 逐渐意识到其在信号处理领域也同样具备巨大的潜力,例如:K.Moreland等人正 [16] 是通过对GPU的可编程性的利用,顺利地实现FFT ;HOPF与ERTL在实现Haar 以及Daubechies小波变换及其反变换时,也是利用了GPU,同时还把它应用在了 [17] 边缘检测上 ,随后人们开始研究将GPU的强大并行计算能力应用于视频编解 码。GPU和CPU协同工作,对视频编解码效率的提升是极为显著的,目前国内外 已有不少科研单位和学者在作将可编程GPU用于视频编解码器的研究。 Shen G等 人采取的方案是对微软公司解码器WMV-8进行改进,把其中的运动补偿(MC)、 色彩空间转换以及重构三个模块移植到了GPU执行,并因此得到了不错的提 速效 [18] 果 。B.Fang等人在通用可编程GPU上完成DCT与IDCT时采用了一系列新技术, [19] 结果表明加速的效果比在CPU上采用MMX优化要更为显著 。Neve W在完成从 YCoCg-R到RGB颜色空间转换的过程中,就是充分的利用到了像素着色器可编程 [20] 。 Pieters B, Van R, De N在寻求对高清视频实时解码的方案中,的特点 把H.264 [21]-[23] 视频标准中的运动补偿和重构等模块转移到GPU上执行 。Kung M等人为了 实现GPU对ME的加速,对4×4块编码的顺序进行了重新排列,使得块与块之间相 关性得以消除,结果证明该方案加速性能远远超过采用CPU优化的SDVTD方案 [24] 。 尽管人们当前在基于CUDA的H.264视频并行编解码器的研究与应用中,已 经把GPU应用到了视频编解码,并从它所发挥的性能看到了其所潜在的价值,但 人们对该领域的研究进程仍只算是刚有了一个开端。同时,GPU硬件本身也还存 在一些缺陷,例如:受GPU与主存储器间带宽限制,从GPU回读数据成为一大瓶 [25] [26] 颈 ,另外,尽管Model 3.0片段处理器也对动态分支和循环提供支持 ,但若 使用不当,仍会使得并行方案在时间上付出较大代价。不过,此类缺陷正随着硬 件技术的改进而相继得到解决,更新换代后的通用GPU对高清视频的编解码无疑 将会更加适用。总而言之,对基于CUDA的视频编解码优化工作及其一系列相关 的研究,是一个非常有现实意义的研究课题。 1.3 本文的主要研究内容和结构 首先,本文针对高清视频的特性,分析了H.264标准的优势及其所面临的一 些挑战,对其架构和编解码技术进行了深入的探讨,对其中的关键技术进行了分 析。然后结合CUDA技术,将H.264编解码器中最为复杂并且又非常适于并行实 现的运动估计和环路滤波模块作了算法改进,并转由GPU处理,同时还对解码器 4中的熵解码也作了基于CPU的算法优化。在此基础上,本文设计了CPU+GPU的 并行编解码框架并提出了其具体的实现方案。实验结果表明:本文提出的基于 CUDA的编解码器能显著提高编解码速度,有很好的应用前景。 本文的结构如下: 第1章为绪论部分,首先介绍了该课题的研究背景及其意义,着重从应用的 角度来分析对高清视频编解码的需求;同时还分析了H.264的国内外研究现状; 介绍了CUDA技术在视频编解码研究与应用方面的情况,最后大概阐述本文研究 内容和结构。 第2章分别介绍了CUDA编程架构以及H.264标准编解码架构;本文对前者主 要是从GPGPU与CUDA关系、CUDA编程模型以及硬件模型简要阐述;然后概要 介绍传统H.264标准的编解码架构的原理、特征及其关键技术;最后,分析了 CUDA应用于H.264视频编解码的优势与挑战。 第3章在分析了传统的H.264编码架构的局限性后,提出了基于CUDA的并行 编码实现方案,将编码最为耗时的运动估计作GPU实现的算法改进;结合加速运 动估计的研究进展,分别介绍了整像素、亚像素运动估计算法的特点,并具体给 出了并行算法优化以及整体的三条主、子线程并行编码框架;最后,通过实验仿 真对该编码器的性能进行分析和比较。 第4章先根据传统H.264解码器的局限性提出了并行解码方案;然后分析熵解 码算法的特点,提出了针对CPU的相关优化;再介绍解码最为耗时的环路滤波算 法,提出了并行算法的GPU优化实现;最后用实验仿真证明,与传统的CPU解码 框架相比,该解码框架比具有更高的效率。 第5章是对整个工作的总结,同时还有今后自己在该研究方向相关的一些展 望。 5第2 章 CUDA 编程架构与传统H.264 标准编解码架构 2.1 CUDA 的编程架构 2.1.1 GPGPU 与 CUDA GeForce256是在 1999年由 NVIDIA公司推出的具有标志性意义的图形图像 处理器(GPU),GPU在此后才真正地开始迅速发展。每次更新换代的 GPU都 到 2008年时 GPU具备比上一代更强劲的性能以及更加完善的可编程架构, 就已 经过了八代的发展。在目前已有的高端产品中, GPU计算性能已达到了 Teraflops [27] (即每秒万亿次)的级别 ,堪比一个高性能计算集群系统,计算能力已远超主 流 CPU。然而 GPU一直都只是被用在处理图形渲染计算的应用上,这显然是浪 费了 PC硬件系统上的一大极其可观的计算资源。并行计算(Parallel Computing) 现在已成为突破摩尔定理局限性的一个重要研究方向,尽管从 GPU 的设计初衷 以及目前的主要应用目的来讲,它被用于在显示器上渲染出计算机图形,但是在 环境科学、计算流体动力学、医学图像以及其他领域中,越来越多的人倾向使用 GPU。因此,GPU逐渐走上通用计算 GPU(general purpose GPU,即 GPGPU) 之路。 CUDA(compute unified Device architecture)即统一计算设备架构,是NVIDIA 公司于2007年推出的,是针对GPGPU的一个全新构想。该架构利用GPU的超高 计算性能,使传统的专注于图像处理的GPU既可用于完成传统的图形渲染任务, 还能用来完成通用计算任务,在科学计算以及数据处理等领域发挥其优势。 CUDA不但包括了全新的硬件设计,还包括了全新的软件开发环境,该架构抛开 ,直接应用GPU作为计算单元来实现管理和计算。CUDA 了以前的图形API方式 编程采用的是针对通用计算的C语言开发环境,采取CUDA编程使得GPU的通用 计算更能够方便地实现。复杂的事务管理以及逻辑处理等一系列计算任务让CPU 来完成,因为这些数据并不适于作并行处理,而对密集型的大规模数据则交给 GPU来完成,从CUDA的体系结构来看,可分为以下三层: CUDA Library、 CUDA runtime API、CUDA driver API,如图2.1所示。对CUDA的C语言进行编译,只可 获得GPU端代码,而若是实现对GPU的资源的管理,并分配相应显存以及启动 Kernel函数,就必须借助于使用CUDA运行时AP( I runtime API)或驱动AP( I driver API)来,一个程序中不可对以上两者混合采用,即只可以使用CUDA运行时API [28] 和CUDA驱动API中的任一种 。 6 图2.1 CUDA的体系结构 2.1.2 CUDA 编程模型 对于彼此间无逻辑关系的成百上千个数值计算线程,都能在GPU内并行,因 而在处理图形类、非图形类数据时,它能充分表现出其高度并行的性能优势。更 具体来看, GPU尤其适于具备如下特征的数据运算??同一个程序操作了许多并 行数据元素,同时还具有很高的运算密度(其中,运算密度可由算术运算和内存 操作的比例求得);GPU访问内存所造成的延迟,应能在执行高密度计算时被掩 盖。CUDA采用标准C语言,结合GPU的众多计算特性,使用线程来对应用程序 进行创建,在这一点上是与CPU上的多线程程序相似的,但它与只能容纳少量线 程并行执行的多核CPU相比,最突出的区别表现在GPU能同时执行上千上万个线 程。Host端与Device端是基于CUDA的开发程序在实际执行过程中的两大组成部 分,其中在GPU上运行的部分即Device端程序,通常该程序又被称作Kernel。首 先,数据会由Host端程序准备,然后拷贝到显存,再由GPU执行Kernel程序, 处 理完毕后,Host端程序从GPU的内存中把结果最后取回。Host端把应用程序中那 些计算密集的、数据并行的部分交给CPU的协处理器GPU来执行,也就是说,对 于一些采用同种操作来处理不同数据的应用程序,可单独的放到Device端由多个 不同线程来处理。在实际研究开发过程中,各种类型的计算都能通过运行时API 来实现。一些运行期组件和应用开发接口,如对基本数据类型定义及各种计算、 设备的访问、类型的转换、内存的管理以及调度的执行等,所有函数都由运行时 [29] 环境提供 。7 图2.2 CUDA编程模型 GPU在进行 CUDA编程时被看成是能够同时处理非常多个线程的计算设备, 对大规模的数据实现并行计算时,一个 kernel程序被分为两级:线程块即 block 中的线程即 thread,以及组成栅格(即 grid)的线程块。其中,对线程的并行 [30] 级别只是细粒度的,在流处理器上操作 。线程块里的线程批(batch)同时协 作,可利用共享内存实现有效地数据共享且同步执行,达到对内存的访问进行协 调的目的。线程块相对线程来说是粗粒度级别实现并行的,由多个并行线程 块来 [31] 组成一个栅格,一起来处理 kernel所指定的工作 。处于不同线程块的线程间实 现通信的代价是昂贵的,因为这必需经全局存储器来完成,在内核中,每个线程 可用线程块中的线程号(即线程 ID)来进行标识,用户可以指定同步点,使得 线程达到该点即挂起,线程所处理的数据由所在线程块号与线程号来一起来决 定。应用程序为了能进行对基于线程号的复杂寻址操作,也可对线程和线程块进 行配置,可配置成任意大小的 1维或 2维,甚至是 3维的线程阵列,同时还采用 一个、两个或三个索引分量对每个线程都进行标识,目前规范中要求:线程在各 维度的尺寸不可大于 512,同时线程块的第 3 维只能取值为 1。例如:大小是 D x 的一维线程块,索引是 x的线程,其线程号就为 x;大小是 B , B)的二维线程块, x y 索引是 x, y的线程,其线程号就为 xyB ;同理,对于大小是 B , B , B 的 x x y z 三维线程块,索引是 x, y, z的线程,线程号就为 xyBzBB ,以此类 x x y [28] 推可按该规律求出线程块号 。 对一个完整的CUDA程序来说,它不但包括一系列运行在Device端的kernel 函数,还包括运行在Host端的串行操作,并且彼此间是主从协同的。只要是根据 CUDA的编程规范,程序员就能编写相应的程序,然后编译器针对程序的不同特 8征来分别作编译处理,将在Host端和Device端执行的代码各自分配指定 好。 CUDA 编程模型如图2.2所示,Host端不但负责一些对事务进行处理的串行程序,而且 还对kernel进行组织;以kernel的形式,Device端来执行并行计算的部分,Host端 的程序以kernel形式调用Device端的程序,在最好的情况是CPU的串行操作仅对 上一个kernel进行清理,以及对下一个kernel进行启动,如此一来便能最大限度的 把任务交由设备并行的执行,那么Host端与Device端这两者间所需传输的数据量 也就减少了。 2.1.3 CUDA 的硬件模型 采用CPU+GPU协同工作模式来执行时,可将GPU.视为能并行地执行许多个 线程的计算设备,同时将它作为CPU的协处理器来进行操作,两者均有各自的存 储空间。图2.3所示的是CUDA操作过程中面向的硬件模型图。在以前的GPU 架构 中,计算资源被划分成顶点着色器与像素着色器,但是在CUDA架构中,GPU中 的顶点着色器与像素着色器被统一到了一个计算单元内,该结构包含多处理器 SM及对应的存储器层次。每个SM具有单指令多数据即SIMD架构,且拥有如 下4种类型的芯片内存储器,第一种是一组本地32位寄存器(Register),系统在 运行时将它均分给此SM上调度的所有thread,Register对thread来说是私 有的,具 有访问高速且不会冲突的优点;第二是被各流处理器所共用的并行数据高速缓 存,亦称之为共享存储器shared memory,由显存提供,访问速度很低,系统会 在Register不够用时为thread分配共享内存。GPU中有一个占据显卡显存绝大部分 的全局存储器(即global memory),它为所有Block中全部thread所共享,CPU和 GPU均能对其执行读写操作;第三是由所有流处理器所共享的只读常量高速缓存 即constant cache;第四是一个被所有的流处理器所共享的只读纹理高速缓存即 texture cache,它实际上是全局存储器中的一片只读空间,每个SM经纹理单位来 实现对纹理高速缓存的访问。其中,后两者由GPU用于图形渲染的专用单元所演 变,仅能由CPU写入,而对GPU只读。活动线程块是指属于同一批次,且被一 个 SM处理的线程块,而每个活动线程块又划分到被称为线程束(warp)的单指令 多数据线程组(SIMD)中执行,根据各自指令与寄存器状态,每个线程单独操 作,且实现零开销的线程切换,因为各线程的执行空间相互独立。每一个warp, 都含有相同的线程个数(即线程束尺寸),同时是由SM以SIMD的方式来运行, 并且若干个活动的warp来对SM分时复用,为能最大限度地利用SM的计算资源, 线程调度器定期在各线程束间进行切换。CUDA 模型中,单个的SM指令是以 而对于整个GPU上的指令而言,是以MIMD方式来运行SIMD方式来运行的, 的。 9 图2.3 CUDA的硬件模型 2.2 传统 H.264 标准的编解码架构 2.2.1 H.264 编解码原理及主要特征 目前,国际上采用最为普遍的是H.264视频编码标准,其主要有预测、编码、 重建这样三条主要处理路径。对输入的视频序列,划分为16×16大小的宏块,再 依次进行后续处理。首先,按照输入视频帧的类型,分别进行帧内预测或者帧间 预测,其中帧内预测是利用同一帧中的相邻宏块的信息来对空间冗余信息进行消 除,而帧间预测则是根据前面已编码的参考帧,来对时间冗余信息进行消除,这 两种预测方式的操作结果均为残差数据块。然后,对上一步产生的残差数据执行 变换、量化以及熵编码操作,从而得到编码所产生的码流。在此过程中,还需对 量化所得的数据执行重建操作,并消除块效应。编码器端解码得到相应的参考帧, 从而提供参考数据,以顺利执行下一帧的帧间预测。 H.264标准的提出,达到了许多预期目标,具体可以归结为如下:采用当前 的成熟技术,注重实用,实现高编码效率;其网络适用性更强,采用分层的结构, 把信源与信道分开进行编码,并且是结合信道的特点来实现编码;仍基于传统混 合编码框架,不过就其主要的模块作了一些关键的技术改进,具体内容在2.2.2 节会作相关介绍。撇开关键技术,H.264和以前的标准的区别还突出表现有下面 10两方面特征: (1) 分层结构:由于对视频的应用通常与网络相关,H.264标准为灵活的 [33] 适应各特定的网络环境,提出了分层结构 ,如图2.4所示。从概念上可将H.264 的算法分成两个层次,即VCL视频编码层与NAL网络提取层,其中VCL主要 对视频图像压缩编码,具体包括:对可变尺寸块的高精度ME、多种帧内预测、 整数变换与量化,此外还有熵编码等,因此该层编码提供高质量、高压缩比以及 可分级等特性的码流,而NAL对数据进行封装时,主要是采取下层网络的分段格 式来进行,当采用VCL编码所产生的比特流传送到某特定的网络时,NAL将根据 其传输特性把VCL的视频码流合适地封装起来;而对于对VCL层来说,NAL的操 作是完全透明的。正因为NAL的采用,H.264才能对多种多样的网络表现出更强 的网络亲和性以及更好的适应性。 图2.4 H.264编码的分层结构 实际上,H.264的应用领域十分宽广,不过对于 (2) H.264的档次与级别: 一些特定的应用来说,是不要求编码器具备所有编码工具的。例如在误码率很低 的一些情况下,就不必使用误码恢复编码工具,因为若我们将所有的编码工具都 集成到了一个编码器,无疑会使得该编码器相当复杂。根据特定的应用场合,只 需采用相应的部分编码工具即可,编码工具所有特定的子集,在视频编码标准中 被称作档次。2005年3月份所修订的H.264标准中,在以前的基本、主要和扩展三 个档次的基础上,增加了高级档次、高级10档次、高级4:2:2档次以及高级4: 4:4档次,这四个新的档次不但提高了视频的质量,还扩展了H.264视频标准的 [34] 应用范围 。而在这七个档次中,实际应用最广泛的还是如下三个档次: ?基本档次:其目标是使编码的复杂度最小化,因而在绝大多数的网络环境 及特定条件能很好地体现出编码鲁棒性与灵活性,基本档次主要是用在视频会话 方向,例如:视频电话、视频会议、远程医疗以及远程教学等一些实时的视频通 11信场合。 :该档次更注重压缩编码的效率,主要是在诸如数字电视广播和 ?主要档次 数字视频存储等方面的应用,基本档次中的第一部分是主要档次所未包含的,才 外基本档次中的可冗余图片数据、任意片顺序以及灵活宏块顺序也未包括到主要 [35] 档次中 。 ?扩展档次:除自适应算术编码外,其余的全部内容都包括进了扩展档次, 该档次结合了网络传输鲁棒性以及高编码效率等优点,主要是用在网络多种多样 的视频流传输方向,例如:视频点播等。 2.2.2 H.264 的关键技术 (1) 多模式的高精度帧间预测 视频编码中的帧间预测技术,是一种利用时间相关性来消除时间冗余的编码 途径,将已编码的某一帧或若干帧利用起来,作为参考帧进行预测,再将当前帧 宏块的数据和预测帧宏块的数据相减,最后把得到的残差信息进行熵编码。 运动 补偿则是由ME求出的最佳运动矢量(MV),再用参考帧中所对应的块来做补偿, 从而求出帧间预测的预测值,如图2.5所示。H.264标准为了使补偿所得的效果更 好,还引入了更小块的运动补偿,子块划分方式如图2.6所示。对一个宏块而言, 在各种分割形式下,其子区域所对应的MV也不一定是相同的,大的分割形式适 [36] 而小尺寸的分割形式更适于图像中多细节的区域 。采用于图像的平坦区域, 这 样的分割形式,使得各个宏块间的关联性得以大幅度地提升,在帧间编码模式中, H.264除开上面所描述的七种块规格,对于P帧还支持skip模式。 图2.5 运动估计的块匹配过程 12 图2.6 宏块及子宏块的分割 (2) 多参考帧 不同于以往的标准, H.264在进行ME时允许编码器选用多个已编码帧来进行 操作,如图2.7。H.264标准最多能支持五个参考帧,当然在实际应用中还要考虑 存储空间以及计算复杂度等方面的问题,实验表明,采取三到五帧作为参考,可 使得存储所带来的负担、编码的效率以及预测的准确度这三者得到平衡,并且这 [51] 比采用单参考帧节省5%~10%的码率 。多参考帧技术在一些特定场合下更能表 现出良好的时域压缩效果,如:形状及纹理较为复杂的物体、物体相互间存在遮 挡情况、以及变化较迅速的景物等某些特定的场合。 d1 d2 d4 d3图2.7 多参考帧预测 (3) 运动矢量对四分之一亚像素的支持 一般情况下,由于进行块匹配的搜索过程中相应块的步长可能并非整数,而 以往的标准最多实现了半像素精度的运动矢量,H.264标准首次采用了四分之一 像素精度的MC,和以往标准的整像素或半像素相比,精度得到了显著的提高。 采用更高精度的MV,能更精准的执行MC,甚至能使得残差数据接近为零
/
本文档为【基于CUDA的H264视频并行编解码器的研究与实现(可编辑)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索