论文部分内容阅读
随着信息技术的进步,大规模科学与工程应用对计算性能的需求不断增加。由于功耗的限制,过去十年计算机技术的发展基本摒弃了通过提高处理器频率来增加计算机性能的传统模式,转而朝着多核、众核体系结构方向发展。由于CPU的通用性,基于多核CPU的大规模计算机系统仍然面临十分严峻的能耗问题。在这样的背景下,专用加速部件获得了学术界和产业界的广泛关注。尤其是以GPU为代表的异构处理器,以其优异的能效比,极大的促进了高性能计算技术的发展。同时,基于CPU-GPU架构的异构系统也已经成为高性能超级计算机发展的主流方向之一,例如基于NVIDIA Kepler架构的Titan计算机。虽然,GPU硬件技术已经获得了长足的发展,但是,GPU的硬件体系结构和编程模型与传统CPU存在很大的不同,与之匹配的并行软件技术相对落后,实际应用的效率和并行程序开发效率问题尤为突出。本课题面向特定的应用领域,深入开展基于GPU以及CPU-GPU异构系统的并行计算关键技术研究,涉及并行程序设计、并行编程模型、GPU性能预测模型和不同多核、众核处理器之间程序性能可移植性等问题。本文的主要研究工作和创新点如下:1.提出了一个基于GPU架构的高效并行视频编码框架,并在GPU上实现了一个完整的H.264视频编码器。本文通过循环划分技术,将整个编码器以帧为单位分为四个部分,分别是帧间预测,帧内编码,熵编码和去块滤波。这四个部分都被加载到GPU上并行加速,既可以开发每帧图像潜在的并行性,也进一步开发了各个部分之间生产者-消费者局域性,避免了不必要的CPU-GPU之间数据传输。本文使用CUDA编程语言,实现了一个面向GPU的完整H.264并行编码器。针对计算密集型组件运动估计,本文提出了一个面向大规模并行体系结构的可扩展并行算法(多分辨率多窗口帧间预测算法)。为了提高非规则算法的效率,本文提出了方向优先的并行去块滤波和基于分量的并行CAVLC算法,成功实现了大规模并行CAVLC编码器,大大减少了编码后传回CPU的数据量。另外,本文还提出了一个多级并行帧内编码算法。实验结果表明,本文实现的基于GPU的H.264编码器可以满足30帧每秒(fps)高清实时编码需求。2.提出并实现了基于大规模CPU-GPU异构系统的高效地质沉降模拟解决方案。基于天河-1A超级计算机实现了三种全显示双岩沉降模拟方案:基于MPI的CPU-only实现、基于MPI+CUDA的GPU-only实现以及基于MPI+Open MP+CUDA的CPU-GPU混合实现。采用基于Open MP的CPU并行实现、基于CUDA的GPU并行实现和MPI的节点间通信实现了GPU计算与CPU计算以及节点间通信的重叠。实验结果表明,本文提出的异构实现可以获得很高的性能,满足高分辨率地质沉降模拟的需求,在1024个天河-1A计算节点上获得了72.8 TFlops的计算性能,模拟分辨率达到了131072×131072。3.提出了一个基于数据传输的stencil计算GPU性能分析预测模型。为了理解、预测stencil计算在GPU上可以获得的性能以及刻画其性能瓶颈,本文对stencil计算在GPU上的各种优化实现进行了量化分析,并从数据传输的角度提出了一个性能分析预测模型。基于三个并行粒度:一个CUDA线程、一个线程块以及一组可以同时执行的线程块,本文分别对寄存器和SM片上存储器、SM片上存储器和L2 cache以及L2 cache和全局存储器三个存储层次之间的数据传输量进行建模。结合GPU在各个存储器上可以获得的实际带宽和数据传输量,进一步预测程序的执行时间。实验结果表明,本文提出的基于数据传输的性能预测模型对于基本stencil实现在GPU上执行时间的预测错误率为6.9%,而对于经过优化实现的stencil程序的执行时间预测错误率为9.5%。4.研究了Open CL程序在多核CPU和GPU之间的性能可移植性问题。虽然Open CL编程使得同一个程序可以在不同硬件平台之间实现代码可移植,但是其性能可移植性却远远不能满足要求。本文从特定的应用出发,研究基于Open CL的stencil计算在CPU、GPU之间的性能可移植性问题。通过在循环之间增加代码,保持代码可移植性的基础上,提高了其性能可移植性。本文发现空间数据分块和寄存器重用技术可以同时提高stencil计算在CPU和GPU上的性能。实验结果表明,本文实现的面向GPU优化的Open CL stencil计算的性能是对应CPU上Open MP程序获得性能的96%以及对应GPU上CUDA程序的96.8%。