GPU通用计算(GPGPU)——将图形处理器用于高性能计算领域

时间:2008-12-09   来源:   网友评论:1   人气: 894 作者:

1.1 研究背景和意义
随着当前计算机性能的不断提高,应用范围越来越广泛,不同的计算任务和计算需求都在快速增长,这就决定了处理器朝着通用化和专用化两个方向飞速发展。一方面,以CPU为代表的通用处理器是现代计算机的核心部件,经过多次器件换代的变迁,不仅集成度大大提高,性能和功能也大为改善,除了负责解释、执行指令和完成各种算术逻辑运算外,还控制并协调计算机各部分的执行。另一方面,处理器在特定领域应用的专用化程度也越来越高,例如在视频、图像和音频处理等领域,都出现了相应的专用处理器(如VPU、GPU、APU等)。在针对特定应用方面与通用处理器相比,专用处理器能够更加高效的满足特定的计算任务和需求。
近年来,计算机图形处理器(GPU,Graphics Processing Unit)正在以大大超过摩尔定律的速度高速发展,极大的提高了计算机图形处理的速度和质量,不但促进了图像处理、虚拟现实、计算机仿真等相关应用领域的快速发展,同时也为人们利用GPU进行图形处理以外的通用计算提供了良好的运行平台[1]。
GPU应用领域的拓宽与其硬件发展有着极大关系。GPU自1999年首先由NVIDIA公司提出后,就其发展的速度而言,是CPU更新速度的三倍。从 1993年开始,GPU的性能以每年2.8倍的速度增长。目前,图形处理器已经经历了五代发展,平均每半年就有新一代的GPU问世。
2004年,NVIDIA GeForce 6800 Ultra处理器峰值速度可达40GFLOPS,对比Intel Pentium 4 3.0GHz,采用SSE2指令集也只能达到6 GFLOPS[3]。NVIDIA最新发布的GeForce 8800图形处理器集成了6.8亿个晶体管,拥有128个流处理单元,其峰值运算能力超过340GFLOPS,而Intel最新的Pentium4 Core 2 Extreme X6800只有46.88GFLOPS。

图 1 GPU与CPU的发展与性能比较
图形处理器技术的迅速发展带来的并不只是速度的提高,还产生了很多全新的图形硬件技术,使GPU具有流处理、高密集并行运算、可编程流水线等特性,从而极大的拓展了GPU的处理能力和应用范围[2]。
正是由于GPU具有高效的并行性和灵活的可编程性等特点,越来越多的研究人员和商业组织开始利用GPU完成一些非图形绘制方面的计算,并开创了一个新的研究领域:基于GPU的通用计算(GPGPU,General-Purpose computation on GPU),其主要研究内容是如何利用GPU在图形处理之外的其他领域进行更为广泛的科学计算[4]。目前已成功应用于代数计算、流体模拟、数据库应用、频谱分析等非图形应用领域[5],甚至包括智能信息处理系统和数据挖掘工具等商业化应用。同时,也产生了一些针对GPU开发的通用计算工具包,能够基于 GPU平台对FFT、BLAS、排序及线性方程组求解等科学计算进行优化实现。
基于GPU的通用计算已成为近几年人们关注的一个研究热点。将GPU用于通用计算的主要目的是为了加速计算,加速的动力来自GPU在高性能计算方面所具有的优势:
(1)高效的并行性。这一功能主要是通过GPU多条绘制流水线的并行计算来体现的。在目前主流的GPU中,配置多达16个片段处理流水线,6个顶点处理流水线。多条流水线可以在单一控制部件的集中控制下运行,也可以独立运行。GPU的顶点处理流水线使用MIMD方式控制,片段处理流水线使用SIMD结构。相对于并行机而言,GPU提供的并行性在十分廉价的基础上,为很多适合于在GPU上进行处理的应用提供了一个很好的并行方案。
(2)高密集的运算。GPU通常具有128位或256位的内存位宽,因此GPU在计算密集型应用方面具有很好的性能。
(3)超长图形流水线。GPU超长图形流水线的设计以吞吐量的最大化为目标(如NVIDIA GeForce 3流水线有800个阶段),因此GPU作为数据流并行处理机,在对大规模的数据流并行处理方面具有明显的优势。
如图2所示,CPU中的大部分晶体管主要用于构建控制电路(如分支预测等)和Cache,只有少部分的晶体管来完成实际的运算工作。GPU与CPU的设计目标不同,其控制电路相对简单,而且对Cache的需求较小,所以大部分晶体管可以组成各类专用电路和多条流水线,使GPU的计算速度有了突破性的飞跃,拥有惊人的处理浮点运算的能力。


 

文章评论


评论人: 123.174.13.18 2008-12-10
恩,很好啊~~~~~