基于CUDA的H.264并行编码器研究与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国防科学技术大学
硕士学位论文
基于CUDA的H.264并行编码器研究与实现
姓名:苏华友
申请学位级别:硕士
专业:计算机科学与技术
指导教师:张春元
2010-11
摘要
作为当今最流行的视频编码标准,H.264/AVC以其高图像质量和高压缩比的性能受到学术界和商业界的青睐。
但是H.264的计算复杂度很高,现有的基于通用处理器的串行结构编码器无法达到高清实时编码的性能,而专用硬件实现的编码器又具有灵活性差、开发周期长、成本高等缺点,因此需要为H.264b编码器寻求一种高效的实现方法。
随着GPU技术的不断发展,GPU的计算能力和带宽已经获得显著提高,近年来使用GPU对计算密集型应用进行加速已成为研究热点之一。
CUDA、OpenCL等编程模型的出现使得基于GPU的应用开发更加简单灵活。
在这样的背景下,本文选择“基于CUDA的H.264并行编码器研究与实现”作为研究课题。
本文以研究小组前期提出的基于流计算模型的H.264编码器框架为基础,提出了并行度更大的基于CUDA的H.264并行编码器结构。
不同于以往基于GPU的H.264编码器研究,本文并不是对H.264中某个局部算法的研究,而是将整个H.264编码器都映射到CUDA架构上。
本文分别对H.264编码器的各个模块设计了基于CUDA的并行计算模型以及存储模型,并且在多个层面上对编码器进行了优化。
最后本文选择1080P视频规格的测试序列为输入对编码器的性能进行了详细的评测,实验结果表明,相比于通用处理器AMDAthlon 5200+上运行的串行编码器,基于CUDA的并行编码器在GeForceGTX260上的执行的加速比已经达到了18以上。
通过与其他基于GPU实现的H.264编码进行比较,发现本文提出的编码器也具有很大的优势。
为了详细评估各个部分对编码器整体性能的贡献以及瓶颈段所在,本文还对H.264编码器各个模块的加速情况作为评测与分析,结果显示帧间预测的加速效果最佳,加速比达到了25以上,而帧内预测编码加速效果最差,但是也达到了4倍左右,同时发现数据在CPU-GPU之间的传输占据有GPU端时间的25%左右,是应用的瓶颈之一。
本文对各个模块提出的并行模型以及对各模块的性能分析对其他应用在GPU上的并行化具有一定的借鉴意义。
主题词:H.264编码器;CUDA;GPU;并行编码器
Abstract
As the most popular video coding standard, H.264/AVC has attracted academia and business circles for its high image quality and high compression ratio. However, H.264 requires large and intensive computation, the existing serial encoder based on general-purpose processor can not meet the needs of real-time encoding for full HD video, while dedicated hardware encoder is also less than satisfactory with the inflexibility, long development time and high cost. Thus, it is eager to find an efficient implementation for H.264 coding. With the rapid growth of graphics processing unit (GPU), it achieves a great progress in compute capability and bandwidth, and using GPU to speeduping applocation becomes one of the hotspots. CUDA and OpenCL improve the flexible of programmable of GPU. As a result, this paper focuses on research and implementation of H.264 parallel encoder based on CUDA.
Based on the streaming H.264 encoder, this paper proposes a parallel encoder which is more fit with the characteristics of CUDA framework. Unlike other H.264 encoder based on GPU, this article is not focusing on one of components of H.264 encoder, but mapping the entire H.264 encoder to the CUDA architecture. This paper design the parallel computing model and storage model for various modules of H.264 encoder based on CUDA, at the same time we optimized the encoder in various aspect.
Finally, choosing 1080P video as input we evaluation the performance of the encoder propesed by this paper, experimental results show that our encoder achieves significant speedup over the reference encoder, the speedup of our encoder running on GeForce GTX260 is up to 18. Comparing with other encoders based on GPU, the performance of our encoder also excels to them. In order to evaluate the contribution of components to the entire encoder and the bottlenecks, we also assess the speedup of various parts of the encoder, results show that inter coding achives the best performance and speedup is about 25, while intra coding obtains the worse one and speedup is about 4. The time spending on data transfer between CPU and GPU occupys 25% of the whole GPU time, which is one of the bottlenecks. The parallel model for each components proposed by this paper and the analysis of performance provide insights into other applications based on GPU.
Key Words: H.264 encoder,CUDA,GPU,parallel encoder
表目录
表4.1 使用cuda profiler对H.264进行分析的参数设置 (50)
表4.2 预测MV由相邻宏块MV预测情况下部分kernel执行情况 (50)
表4.3 指定预测MV情况下部分kernel的执行情况 (52)
表4.4 预测MV和指定MV 的PSNR值和码率对比 (52)
表4.5 线程块过大时部分kernel的执行情况 (53)
表4.6 线程块尺寸和线程处理粒度减小后部分kernel的执行情况 (53)
表4.7 使用共享存储器加速数据访问优化情况 (57)
表4.8 共享存储器串行访问和并行访问对kernel的影响 (58)
表4.9 基于CUDA的H.264编码器优化 (58)
表5.1 高清视频测试序列参数 (59)
表5.2 硬件平台的配置表 (60)
表5.3 不同Slice划分方式下的PSNR值 (62)
表5.4 不同Slice划分方式下的码率 (62)
表5.5 不同Slice划分方式下的编码速率 (62)
表5.6 H.264编码器在各平台的执行时间 (64)
表5.7 基于CUDA的不同H.264编码器性能比较 (65)
图目录
图1.1 CPU 和GPU 的每秒浮点运算次数和存储器带宽[15] (3)
图1.2 CUDA软件体系结构[15] (4)
图2.1 CUDA硬件模型[15] (10)
图2.2 CUDA编程模型 (11)
图2.3 CUDA存储模型 (12)
图2.4 传统H.264编码器结构 (13)
图2.5 运动估计流程 (14)
图2.6 宏块及子宏块划分 (14)
图2.7 4x4亮度帧内预测模式 (15)
图2.8 16x16亮度宏块帧内预测模式 (15)
图2.9 变换量化流程 (16)
图2.10 CAVLC编码流程 (17)
图2.11 宏块滤波的顺序和滤波涉及像素 (18)
图3.1 X264程序框架 (19)
图3.2 X264编码器Cache失效情况[47] (20)
图3.3 循环体分割 (22)
图3.4 变量的简单化和本地化 (23)
图3.5 基于CUDA的并行H.264编码器框架 (25)
图3.6 H.264在CPU-GPU上的任务划分 (26)
图3.7 多分辨率多窗口帧间预测计算核心引擎 (27)
图3.8 降分辨率示意图 (28)
图3.9 预测MV的选择 (28)
图3.10 4x4子宏块SAD求解在CUDA上的映射 (30)
图3.11 各种划分对应的SAD合成树 (30)
图3.12 各种划分对应SAD的合成过程 (31)
图3.13 整像素SAD 比较规约 (32)
图3.14 帧间预测参考数据的存储模型 (33)
图3.15 帧内预测数据相关及子宏块执行顺序 (34)
图3.16 简化后的宏块内行波流水子宏块执行顺序 (35)
图3.17 基于CUDA的多级并行帧内预测 (35)
图3.18 帧内编码并行度变化趋势 (36)
图3.19 帧内预测编码存储模型 (37)
图3.20 码流合成过程中宏块码流拼接示意图 (39)
图3.21 分量优先的CAVLC (39)
图3.22 CAVLC编码阶段CUDA并行模型 (40)
图3.24 CAVLC编码阶段存储模型 (42)
图3.26 去块滤波函数分离 (44)
图3.27 边界强度kernel线程分配 (45)
图3.28 滤波过程的重排列 (46)
图3.29 去块滤波线程分配示意图 (47)
图3.30 去块滤波数据组织示意图 (48)
图4.1 帧间预测MV选择模式的削减 (51)
图4.2 kernel的合成 (55)
图4.3 通过共享存储器降低数据访问开销示意图 (56)
图4.4 数据类型转化 (58)
图5.1 Silce变化下编码器的性能变化趋势 (63)
图5.2 各平台上H.264编码器加速对比 (65)
图5.3 各个编码模块在不同实现方式下时间分布 (66)
图5.4 一个SOP中各个kernel执行时间百分比及调用次数 (67)
图5.5 各个编码模块加速比 (68)
图5.6 基于CUDA的H.264编码器在不同GPU上的执行结果 (68)
图5.7 不同GPU上kernel和数据传输时间比例 (69)
图5.8 kernel、数据传输在不同平台上的加速比 (70)
第一章绪论
1.1 课题研究背景
1.1.1 H.264视频编码标准
随着计算机和Internet技术的快速发展和普及,视频编码[1]-[5]已经成为很多应用领域的核心技术,这些领域包括数字电视,DVD,网络流媒体,视频会议,远程教学和安防工程[6]等等。
为了适应各种应用的不同需求,大量的视频编码标准和算法应运而生(例如:H.264/AVC[7],VC-1[8],MPEG-2[9],AVS[10])。
在这些标准中,H.264以其优越的编码性能获得了工业界和学术界的广泛青睐,它是当前最流行的视频编码标准,该标准在充分吸取以往成功的编码标准的基础上,致力于在相同的重建图像质量的前提下,获得比其它现有标准更高的压缩效率,实验证明,与H.263+和MPEG-4 Simple Profile 相比,在视频图像质量相同的情况下,H.264最多能够节省50%—70%的码率[11]。
具体而言,H.264具有以下几个新特性:低码流(Low Bit Rate):H.264在当前图像标准中压缩效率是最高的,在同等图像质量下,比H.263标准提高近一倍,与MPEG相比则可以节省50%-70%的比特率。
高质量的图像:H.264能提供连续、流畅的高质量图像(DVD质量)。
容错能力强:H.264提供了用于解决在不稳定网络环境下容易发生的丢包等问题的必要工具。
网络适应性强:H.264提供了网络适应层(Network Adaptation Layer), 使得H.264的文件能容易地在不同网络上传输(例如互联网,CDMA,GPRS,WCDMA,CDMA2000等)。
为了获得更高的压缩比和良好的画面质量,H.264在以往编码标准的基础上引入了一些新的技术,包括:采用多参考帧(MRF)和可变块大小(VBS)的四分之一像素运动补偿(MC)、帧内预测、基于上下文的自适应变长编码(CAVLC)和循环内的解锁滤波器(in-loop deblocking filter)等等[12]。
这使得整个编码器的复杂度大大增加,对HDTV720P(1280x720,30fps)规格的视频序列进行编码,计算需求和访存带宽的需求分别达到了3600GIPS和5570GB/S [13],这两者都是通用处理器所无法企及的。
而随着视频编码技术的流行,人们对视频质量和分辨率的要求也越来越高,1080P全高清视频格式已经被广泛采用,目前日本多家著名厂商已经宣布支持清晰度为3840x2160的视频,清晰度高达7680x4320的超高清视频
(Super Hi-Vision,SHV)业务也正在开发,如此高分辨率的视频带来压缩编码计算量给各个计算平台和处理器提出了更加严峻的挑战,因此研究不同计算平台和处理器上视频编码系统的有效实现就显得十分重要[14]。
1.1.2 GPU computing 和统一设备架构(CUDA)
在图形图像处理和视频渲染等应用的强势推动下,过去几年间图形处理设备(GPU)在各个方面都取得了巨大的发展,如今GPU的计算能力和访存带宽已经远远大于通用CPU,图 1.1[15]描述了GPU和CPU在计算能力和数据带宽上的区别及性能增长趋势。
这种变化主要是由于它们的体系结构不同所带来的。
GPU是一种高度并行化、多线程、多核的处理器,具有杰出的计算功率和极高的存储器带宽。
例如NVIDA的GeForce 8800 GTX可达到330Gflops的浮点计算能力和80GB/s 的数据传输能力[16]。
由于计算能力和带宽的大大提升以及越来越灵活的可编程性,GPU已不再仅仅作为一种图像显示加速设备而存在,广泛应用于其他非图形应用,例如线性代数计算、视频处理和科学模拟等,通常称这类应用为GPU上的通用计算(GPGPU)[17]。
面向GPU体系结构的应用具有如下几个特点[18]:计算量大:实时渲染要求每秒对上亿个像素进行处理,而且每个像素的处理需要上百甚至更多的操作。
GPU需要提供强大的计算能力才能满足这类复杂的实时应用的计算需求。
实时高清视频编码处理同样需要巨大的计算量,核模拟等科学计算需要的计算量更加大的特点均与GPU的特性吻合。
丰富的并行性:GPU是一种基于MIMD执行模式的加速设备,其流水线设计十分适合于并行处理。
对顶点和块的处理能够很好地匹配GPU中细粒度的紧密联系在一起的并行处理单元。
这种对片段和点的处理处广泛存在于其他许多计算领域。
视频编码正好是对像素的大规模处理,如果能够设计良好的并行模型,发挥GPU的强大计算性能,那么基于GPU实现的视频编码器将很可能获得良好的性能。
相比延迟,吞吐率显得更为重要:GPU流水线设计更多的是考虑吞吐量而不是延迟,因为人的视觉灵敏度是毫秒级的,而GPU的操作是纳秒级的,六个数量级的差距,使得单个操作的延迟显得不是那么重要。
图1.1 CPU 和GPU 的每秒浮点运算次数和存储器带宽[15] 2007年6月NVIDA推出了CUDA(统一设备架构)。
CUDA 是一种并行编程模型和软件环境[15],这一可透明地扩展并行性的应用软件,可以有效适应日益发展的处理器内核数量。
CUDA的出现使得在GPU上开发程序变得更加容易,CPU 对GPU的使用就像调用一个C函数一样简单。
它采用统一的架构,可以更加有效的利用过去分布在顶点渲染器和像素渲染器的计算资源;另一方面,CUDA引入了片内共享内存器,有效的解决了数据通信问题[19],推动了GPU在通用计算领域的快速发展。
CUDA的核心是CUDA C语言,它包含对C语言的最小扩展集和一个运行时库,CUDA的软件堆栈由CUDA库、CUDA运行时、CUDA驱动API组成,这三个层次和CUDA应用程序组成了CUDA的软件体系结构,如图1.2所示。
图1.2 CUDA软件体系结构[15]
1.2 课题研究现状
1.2.1 H.264视频编码优化相关研究
对于视频编码的优化主要集中在三个层次上:通过硬件定制加速,算法层次的优化,基于可编程并行设备的并行加速。
专门的硬件设计包括局部加速设计[20][21][22]和整体加速设计[23],这样可以保证编码系统的高吞吐率和低功耗,最大限度地加快目标应用的执行速度。
硬件编码器多采用宏块级流水线结构,由于数据流都是单向的,所以通过流水操作处理可以使系统的吞吐率成倍增长。
但是其缺点是研发成本高、灵活性较差,不能适应市场的快速变化。
算法优化主要是从减少计算量,提高编码效率出发,有些优化的目的是获取更加完美的画面质量。
例如,Nokia Research Center的Antti Hallapuro, Marta Karczewicz等人提出了基于16位乘法的整数变换,解决了最初的H.264测试模型中存在的问题,即改进的DCT变换采用32位乘法而不适合于很多只能进行16位乘法的DSP[24];清华大学的研究小组针对高码率、高分辨率的应用提出了UMHexagonS算法,进一步降低了运动估计的计算复杂度[25];又如在变换编码时选择K-L变换[26]替代传统的DCT变换等。
算法优化的获得的性能加速本身是有限的,根据摩尔定律可知,基于模块的算法优化,对编码器整体性能的加速还受限于其他串行模块如熵编码等,因此整个编码器的编码速率难以达到实时。
并行处理是加速应用实现的一种重要技术,用于视频编码的并行方式多种多样,包括帧级并行[27]、片级并行[28]、宏块并行[29]等。
这些并行编码方式结合不同的并行处理体系结构,形成了一系列并行视频编码器。
TI公司推出的H.264 Baseline Profile (BP)编码器TMDH264D[30]是基于TMS320DM64x DSP的数字视频解码器,利用DSP 体系结构中VLIW 技术开发指令级并行性,并采用DaVinci 技术,使用了一些硬件库,并且提供用户可配置界面以符合各种需求,对于1080P的全高清视频解码能力达到60fps,而同型号的编码器也能够实现720P的实时编码。
SPI公司采用流处理的思想,设计了在Storm-I DSP 上运行的H.264 Baseline Profile 视频编码器[31],以开发数据级并行为主,增大了视频编码的吞吐率,能够胜任1080p/1080i/720p 高清视频的实时编码。
文献[32]和[33]分别基于CT3400 多核处理器和YHFT-DSP/800 组成的5核MPSoC 体系结构实现了任务级并行的H.264 实时编码器。
本研究小组以可编程处理器为目标体系结构在文章[34]中提出了一种流化H.264的方法,详细分析了传统H.264的局限性,并提出了解决这些局限性的方法,该方法具有一定的普适性,基于该方法实现的流化编码器同样达到了高清实时编码的性能。
1.2.2 基于CUDA的H.264视频编码研究
目前,基于CUDA的视频处理已经引起了学术界的广泛关注,尤其是对H.264编码标准的研究已经成为视频编码领域的一个热点,而且也已经取得了很好的成果[35]-[38]。
目前已有很多基于CUDA的视频处理软件出现,最具有代表性的当属Badaboom[39]和MediaCoder[40]两款视频转码软件。
Badaboom为了强调GPU的优势、淡化CPU的作用,解码、编码、分辨率转换等能使用GPU处理的全都使用基于GPU的CUDA技术,GPU处理了大部分的计算操作,因此Badaboom的GPU占用率高而CPU占用率低。
由于使用了GPU解码器的关系,Badaboom仅能支持H.264、Mpeg2和VC-1三种视频源(CoreAVC CUDA解码器也是如此),而不支持RMVB、DIVX等网络常见的编码。
使用GeForce GTX280显卡将MPEG-2 SD (720x480)视频转成MPEG-2 HD (1920X1080)格式,Badaboom的性能已经十分强大,达到31.27fps[41]。
MediaCoder是一个强大的音频/视频批量转码工具,它将众多来自开源社区优秀的音频视频软件整合在一起,并提供一个友好的图形界面。
它支持多种格式的视频转换,比Badaboom更加全面。
采用AMD Athlon(tm) 64 X2 Dual Core Processor 5200+NVIDIA GeForce 9600 GT的配置,将H.264 1920x800格式的高清视频转成同样标准的高清视频,MediaCoder的转码能力已经达到了24.37fps的实时标准[42]。
Tung-Chien Chen 在文献[13]引入一种新的H.264编解码器的设计方案,使用混合任务的流水线设计,在块级、宏块级和帧级进行流水化的平衡调度,并且融合了大量的带宽减低技术和数据重用策略,论证了一种有效的体系结构及其硅片实现。
这篇文章虽然是介绍H.264编解码器的硬件设计方法,但是文中对H.264编解码系统级体系结构的设计困难性进行了分析,并阐述了所采用的解决方法,这些内容对本课题的研究有较大的启示作用。
文献[43]使用CUDA提出了一种基于CPU+GPU的SVC[44]并行实现模型。
在该模型的基础上重点研究了CPU-GPU协同工作模式下数据传输的问题,并给出了解决方案。
不足之处是该文章使用原始帧作为参考帧,虽然增大了数据并行的粒度,但是使用原始帧作为参考帧对视频质量有很大的影响。
另外,该模型主要关注了运动估计在GPU上的实现方式,其他几部分均交由CPU处理,整个编码器的性能并不高,对CIF格式的视频编码速度只有1.03fps,与实时编码所需的25fps相差甚远。
在算法研究方面,Florian H. Seitner的文章[45]对视频解码算法的各种数据划分方法进行了系统的分析和性能评估。
文中提出了5种视频编码中常用的数据并行划分方法:单行并行方式、多列并行划分方式、Slice并行方式、转置Slice并行方式、斜对角并行方式,并对各种数据划分方式进行了模拟评估以及实验结果的对比。
根据实验结果研究者可以根据目标体系结构选择合适的方式。
[36]描述了一种基于CUDA的H.264运动估计算法的快速实现方案,它使用块级的并行方式,将运动估计分为4x4块SAD的计算、可变块SAD的生成、整像素SAD的比较、分像素插值SAD、分像素运动向量的精化5个部分。
将一个复杂的计算过程分解为几个子过程,将时间局域性转换为空间局域性,加大了数据并行的粒度,然后针对各个部分分别设计并行算法,获得了较好的加速效果。
这种结构还可以有效的利用延迟隐藏技术,减少数据在主存和显存之间的传输时间。
高智勇等的文章[46]根据H.264/AVC的编码要求和处理器的并行结构,提出了一种并行处理方法,利用统一计算设备架构(CUDA)的计算平台,实现了H.264/AVC中的运动估计和DCT变换系数的计算,并且给出了线程块的划分方法,让读者能够更加透彻了编码算法在GPU上的并行执行模型。
但是,文中回避了DCT变换对于帧内预测数据的依赖性,对于一个完整的编码器来说,首先要进行预测然后再进行DCT变换,而帧内预测是存在相关性的,下一个块的预测依赖于上一块编码重建的结果,所以DCT变换和预测之间存在一种循环依赖关系,相关宏块之间的DCT变换不能同时执行。
因此需要对这种依赖关系进行研究,设计良好的并行算法。
MC Kung在文献[37]中介绍了一种基于GPU的H.264帧内编码的并行算法。
帧内预测编码是H.264中数据依赖性较大的一个部分,难以大规模并行。
它通过重排序4x4块的处理顺序,改变H.264编码器的体系结构来实现加速。
1.3 本文主要工作和创新点
基于视频编码加速优化面临的问题和GPU在通用计算领域的广泛使用,本课题选择CUDA编程架构,研究如何更好的在GPU上对H.264视频编码器进行加速,本课题的主要工作分为如下几个方面:
Ø进一步分析H.264编码器框架,优化文献[47]提出的H.264流化框架,提出更适合于CUDA的H.264编码器框架。
对于CUDA而言,原有流化框架的数据处理粒度还比较小,本文将功能模块进行帧级分割,形成更加适合GPU体系结构的编码器框架;另外,使用文献[48]提出的更加高效的运动估计算法MRMW替换X264中的运动估计算法。
相对于X264中使用的全搜索算法,MRMW将整个帧间预测过程分解成几个子部分,层次化更加清晰,具有更好的并行性。
Ø基于CUDA实现了并行H.264编码器,针对各个模块的特性分别设计了并行模型和存储模型。
按照提出的基于CUDA的编码器框架,将H.264编码器中的四个主要模块:帧间预测编码、帧内预测编码、熵编码、去块滤波映射到CUDA架构上。
对不同的模块采用了不同的并行化手段,采用层次化更加清晰的MRMW帧间预测,Slice 级和Slice内部同时并行的帧内预测,提出颜色分量为标准的CA VLC以及方向优先的去块滤波,实验表明基于CUDA的编码器无论在模块层还是在整体层均取得了较好的加速效果。
Ø对基于CUDA的编码器进行多层次的优化。
在增大数据并行度、kernel组织、数据组织三个方面对基于CUDA的H.264并行编码器进行了优化。
通过改进整像素搜索中预测运动向量(MV)的选择方式,提高了数据并行度,减少了kernel的调用次数,kernel加速比达到了1.1;通过改变kernel的配置方式,平衡线程块和线程负载,使kernel对硬件的利用更加高效,加速比在1.2到3.7之间不等;通过灵活使用共享存储器,减少对全局存储器的访问次数,同时通过数据类型的灵活转换实现合并访问提高程序的性能。
Ø对基于CUDA的编码器进行详细的性能评测。
PSRN,编码速率,码率是反映视频编码器优劣的三个正交参数,本文在这三个方面对编码器的性能进行了全面的测试。
首先本文测试了Slice对编码器性能的影响,并选择最佳的Slice划分方式。
在整体层面上,测试了整个编码器的加速效果,对该编码器的性能和参考程序在不同平台上的执行效果进行比较,同时与其他相关的基于GPU实现的H.264编码器进行比较,实验表明本文提出的编码器相对其他编码器均有不同程度的性能提升。
在模块层次,分别测试了各个模块的加
速效果,并分析加速原因;为了找出程序的瓶颈段所在,本文还测试各个kernel 的时间开销,实验结果表明数据的传输占据了整个编码器执行时间的很大部分,同时CPU-GPU之间的频繁交互也对编码器的性能造成很大的不良影响。
为了评估不同系列GPU对CUDA程序的影响,本文在GTX260[49]和Tesla C2050[50]两个型号的GPU上对编码器进行性能对比,实验结果表明,GPU处理能力越强,数据传输所占总时间比例越大。
本文的创新点主要有以下三个方面:
Ø基于CUDA架构提出了并行度更高的H.264编码框架。
Ø提出了一种基于CUDA架构的多级并行帧内预测编码算法。
Ø克服CA VLC和去块滤波的数据相关性,提出了分量优先的大规模并行的CA VLC和方向优先的去块滤波并行模型。
Ø在多个层面上优化了基于CUDA的H.264并行编码器。
1.4论文组织结构
本课题研究的论文共分六章,组织结构如下:
第一章为绪论部分,通过对多方面的研究背景和国内外相关研究的分析介绍了本文的选题意义,介绍了本文的研究内容及创新之处,并给出了论文组织结构。
第二章从硬件模型、编程模型、存储模型三个方面介绍了CUDA架构,简要介绍了传统H.264编码器框架。
第三章基于流化框架做了进一步优化,提出了基于CUDA的更为具体的H.264框架,提出基于CUDA的H.264编码器的实现方法,主要从kernel的设计和存储模型的设计两个方面进行阐述。
第四章从增大数据并行度、kernel的组织方式、数据组织方式三个方面对编码器进行优化并对各种优化方式进行测试。
第五章从整体和部分两个方面对基于CUDA的H.264编码器进行详细的评测,对比了不同平台上编码器的性能,分析了基于CUDA的H.264编码器各个模块的性能和编码器瓶颈所在。
最后为结束语,总结整个课题的研究工作,并对未来工作进行了进一步展望。