地球物理高性能计算的新选择GPU计算技术

地球物理高性能计算的新选择GPU计算技术
地球物理高性能计算的新选择GPU计算技术

地球物理高性能计算的新选择:GPU计算技术

随着微电子技术的发展,GPU计算技术与可重构计算技术.将有可能替代集

群计算技术成为高性能计算的主流技术。充分利用GPU并行处理能力,可以将GPU 作为计算加速器为基于CPU的通用计算平台提供高性能的科学计算能力补充,这样可以在现有通用计算平台的基础上实现高性价比的高性能计算解决方案。

长期以来,石油地球物理勘探一直是高性能计算技术的主要应用领域之一。随着油气勘探工作面临的勘探对象不断复杂化,勘探条件日趋恶劣,我们对石油地球物理勘探技术的研究与应用也在不断深化。地球物理技术的发展与应用高度依赖于包括高性能计算技术在内的信息技术的发展,从而导致高性能计算技术在地球物理行业的应用不断发展,应用规模与领域不断扩大,技术与产品不断升级。高性能计算技术的发展在较大程度上引领和制约了地球物理技术发展的轨迹与进程。

2000年以来,集群计算技术得到了飞速发展,从而带来了地震数据处理系

统平台的又一次更新换代,集群计算机系统基本上已经成为目前地震数据处理的唯一主流平台。近年来,集群计算机系统的配置规模正在不断扩大,大型地震数据处理中心的集群系统规模已经达到上千个甚至数千个节点,计算能力普遍从百亿次(10OGFLOPS)级规模提高到目前的数万至数十万亿次规模。计算能力的提高,为地震勘探新技术(如地震叠前时间偏移和叠前深度偏移)的应用打下了良好的基础,提高了地震资料处理的质量,也大大缩短了处理周期。

但是,地球物理技术对于高性能计算的需求是无止境的,信息技术产业在提供高性能计算产品方面仍然不能满足石油勘探的需求,在进一步提高计算性能、降低系统建设与运行维护成本等方面,信息技术产业与石油工业共同面临着一系列的挑战。

当前,集群已经成为高性能计算的主流体系架构。为了提高集群计算机系统的计算能力,主要采取不断增加计算节点和提高节点性能2条途径。传统的通过不断提高处理器工作频率来提高节点性能的技术,正在逐步走向其极限,取而代之的是多核处理器技术。系统节点规模的不断提高,一方面大大提高了系统建设、运行、维护、管理及应用软件开发的复杂性及成本,另一方面在提高系统总体性能方面受到越来越大的制约。

因此,寻求高性能计算新技术,以实现高性能计算技术应用的跨越式发展,成为我们当前面临的一项重要任务。

1、高性能计算技术发展的新途径圈

长期以来,计算性能的提高主要得益于微处理器工作频率的提高,莫尔定律主宰着信息技术发展的步伐。然而,主频的提高带来的系统发热问题日趋突出,系统功耗不断上升。因此,近年来CPU技术的发展采取了新的思路,主频提高的步伐放慢,而提高处理器并行处理能力逐步成为主要技术思路。

在传统的通用微处理器中,开发指令级并行性主要有2种方法:一是采用超流水线结构增加每秒钟执行的指令数;二是采用超标量或超长指令字( VLIW)结

构增加指令发射和执行的并行度,每个周期发射多条指令到多个功能部件上执行,从而提高每个时钟周期执行的指令数。从根本上来讲,传统的通用微处理器芯片对于并发活动缺少专门的硬件支持,导致从高级语言表达的应用代码中自动构造出能在传统通用微处理器上有效运行的并行程序非常困难。

为了保证微处理器芯片性能的持续提高,更重要的是为了降低芯片功耗和复杂性,目前主流的商用CPU设计已全面采用多线程多核体系结构,双核已成为CPU 的主流产品,4核CPU产品也已经大规模批量生产,预计2008年和2010年将可能推出8核和32核产品,而英特尔前期推出的Polaris原型芯片已经包含了80个核。

在传统CPU由单核向多核发展的技术路线以外,当前活跃着其他几条新的技术发展路线,它们可能代表着未来高性能计算技术发展的重要方向与趋势。

一个重要方向是基于FPGA(现场可编程门阵列)的可重构计算技术「5一7〕,它综合了软件计算的灵活性和硬件系统的高性能等优点,目前成为了计算技术研究的一大热点。

另一个重要方向是基于GPU的通用计算技术,它主要应用图形处理芯片(GPU)的高性能并行处理能力实现科学计算。实际上,目前开始流行于通用CPU的多核技术,已经在GPU中广泛应用很长一段时间了。

本文将专题讨论基于GPU的通用高性能计算技术。

2、GPU与GPU计算

2. 1 GPU简介

GPU是图形处理单元(Graphics ProcessingUnit)的简称,是目前通用计算机系统中专门从事图形计算的单元,其应用极为广泛。图形处理单元主要面向二维、三维图形的几何变换、渲染、纹理映射、视频流编码与解码等所涉及的计算。由于高性能图形计算需求的推动,GPU技术发展极为迅速,其计算性能的发展速度远超过CPU计算性能的发展速度,见图1。目前,一般通用CPU的计算

性能只有10^-20 GFLOPS,而GPU的计算性能已经达到数百GFLOPS。这正是当前我们将GPU作为高性能计算设备的主要原因。

2.2 CPU计算技术

提高处理器的并行处理能力,已经逐步成为提高计算性能的主要技术发展思路。多线程、多核处理器就是沿着这一技术路线发展的,而GPU中所具有的并行处理单元结构正可以满足这种技术发展的需要。因此,在这里GPU被当作一种并行计算设备或高性能计算引擎。

与常规CPU不同的是,GPU中大部分晶体管被用来进行数据处理,只有少量的被用做数据缓存和指令流控制。GPU特别适合运行单程序多数据流的数据并行处理任务,即主要支持SPMD并行计算模式。

由于GPU应用的广泛性,利用GPU进行科学计算是一种潜力巨大且性能价格比很高的解决方案。在常规的微机、工作站或服务器中,通过配置GPU即可大幅度提高计算机系统的计算能力。而在常规集群计算机系统的节点上配置GPU(一般集群计算节点是不配置图形卡的),可以大幅度提高集群系统的整体计算性能,并实现低功耗。

按计算的通用性从高到低排列,几种处理器芯片的排列顺序为

CPU,FPGA,DSP,GPU,而其对应的计算性能排列顺序则相反。通用处理器与专用处理器的结合,将在系统计算性能与灵活性等方面取得完美的平衡。

2. 3 GPU计算产品概述

从理论上讲,常规图形处理芯片都可以用作高性能计算设备,但需要一定开发工具的支持。而对高性能计算特点进行优化设计的GPU可以实现更高的计算性能,获得更高的性能价格比。

作为GPCT计算的积极倡导者和技术发展者,NVIDIA公司提供了一套完整的GPU计算产品线,包括系统产品和全新的开发环境。产品线的中心是基于GEFORCEB系列架构的GPU,以及CUDA开发工具包和C编译器。

2007年5月,NVIDIA推出了面向高性能计算的Tesla C870 GPU,专为计算程序所设计。该GPU产品包含T主频为1. 35 GIIz的128个并行处理单元,1. 5 GB的专用存储器,其峰值计算性能达到518 GFLOPS,支持IEEE 754单精度浮点运算(下一个版本将可以支持双精度计算),和CPU浮点单元一样支持各种高级的浮点操作,GPU内存访问带宽高达76. 8 GB/s,远高于常规CPU的内存访问带宽。

在GPU基础上NVIDIA提供了计算加速卡、计算工作站和计算服务器系列硬件产品(图2).Tesla C870 GPU加速卡包含一个GPU,给PC和工作站带来518 GFLOPS的计算性能,最大功耗为170 W;Tesla D870 GPU桌面超级计算机包含2个GPU,可通过PCIe接口与标准工作站相连接,提供高达1 TFLOPS的计算性能,最大功耗为550 W;Tesla 5870是一款1U的机架式GPU计算服务器,其中可以内置4}-8个GPU,提供高达2-4 TFLOPS的计算性能,而目前具有同样计算性能的刀片式集群计算机系统即使采用双核处理器也将装满2}3个标准机柜。GPU计算服务器在获得最高性能的同时具有很低的功耗,配置4个GE-FORCE 8系列GPU 时平均功耗仅550 W(最大功耗800 W)。

NVIDIA Tesla GPU计算解决方案在设计上与现行的IT基础架构做到了无缝衔接,具有如下技术性能与特色:①支持NVIDIA统一驱动架构;② GPU计算产品

虽然没有显示接口,但保留了完整的OpenGL和DirectX功能支持,和NVIDIA Quadro图形卡及GeForce GPU完全相同,所以除了CUDA开发工具包以外,GPU 计算产品也可以支持基于图形API的程序;③通过一个工业标准PCI Express x16插槽与通用计算系统平台连接,数据传输速率最大可以达到4 GB/s;④采用标准工业形式,同时支持桌面式和机架式配置;⑤C编译器,提供一个开发人员所熟悉的、支持度很好的C语言程序开发环境;⑥可以兼容于 Intel/AMD的32与64位X86微处理器架构。

另外,AMD收购了图形处理芯片厂家ATI,也研制了一种流处理器,作为协处理器应用于通用计算平台上提供高性能计算加速引擎。

3、GPU计算软件开发环境与流编程模式

3. 1 CUDA软件开发环境

CUDA代表“计算统一设备架构(Compute U-nified Device Architecture)",是N V IDIA公司专为GPU计算而发展的一套应用软件开发环境与工具软件。

CUDA包含3个主要组件:一个可访问GPU上并行计算资源的编译器,一个计算专用的运行时驱动程序,以及一套针对CUDA开发的优化科学计算程序库。

CUDA的核心部分是专门开发的C编译器,它简化了GPU并行程序的编码,熟悉C语言的编程人员通过它可以专注于开发并行程序而不是处理图形API。为了简化开发,CUDA的C编泽器允许程序员将CPU和GPU的代码混合记录到一个程序文件中。在C程序中增加一些简单的代码,通知CUDA编译器哪些函数由CPU处理,哪些为GPU处理。由GPU处理的函数被CUDA编译器编译,而CPU处理代码则由标准C编译器编译。CLTnA软件的层次结构见图3。

使用CUDA开发GPU计算应用软件,开发人员使用一种全新的编程模式将并行数据映射、加载到GPU中,CUDA程序则把要处理的数据细分成更小的区块,然后并行处理。当GPU计算程序运行时,开发者只需在主机CPU上运行程序,CUDA

驱动程序会自动在GPU上载人和执行程序。主机端程序可以通过高速的PCI Express总线与GPU进行信息交互。数据的传输,GPU运算功能的启动以及其他一些CPU和GPU的交互都可以通过调用运行时驱动程序中的专门操作来完成,这些高级操作把程序员从手动管理GPU运算资源中解放出来。

采用CUD、技术的GPU既可作为灵活的线程处理器来运行,由数千个计算程序来调用线程,协作解决复杂的问题,也可作为流处理器运行在具体的应用程序中,其中的各个线程并不进行信息交流。能够采用CUDA技术的应用程序可以使用GPU进行细粒度的数据密集型处理,并使用多核心 GPU进行复杂的粗粒度任务,例如控制和数据管理。

2007年7月,随着一系列NVIDIA Tesla GPU计算解决方案的发布,NVIDIA 公司宣布提供NVIDIA CUDA 1.。版本的C语言编译器和软件开发套件(SDK),让软件开发人员利用(:PU开发科学计算应用程序。结合GPU运算技术和CUDA软件开发环境,为对运算能力要求极高的计算密集型应用程序提供了极具弹性的大型并行计算平台。

CUDA 1.0内含各种全新C语言编译器最优化功能和各项强化功能,以及众多新增功能和C语言编码范例。目前,CUDA软件开发环境支持32位与64位Linux 操作系统,以及32位Windows XP操作系统。CUDA开发环境还提供了常见的科学计算程序库,包含快速傅氏变换、BLAS算法库。此外,NVIDIA公司还发布了一款可让MATLAB 程序运用标准GPU函数库加速应用程序运算的插件套件模板。

3. 2流编程模型

近年来,随着多媒体特别是音视频处理技术的发展,流编程模型得以发展并广泛应用。GPU计算软件开发中的一个重要特点就是流编程模型。

在流编程模型中,所有数据都表现为流。这里流指具有相同数据类型的数据的有序集,数据类型可以是简单的(如整数、浮点数),也可以是复杂的(如点、三角形、变换矩阵等)。在流编程模型中,数据数组是核心对象。流可以是任意长度,流的长度越长,基于流的操作效率就越高。流编程模型以允许高效计算与高效通信的方式构造程序,流的元素可以用数据并行硬件进行并行处理。

PeakStream平台公司推出了基于流编程模型的软件开发环境,支持多核处理器和基于GPU加速器环境下的并行计算软件开发,屏蔽了高性能计算中并行计算软件开发的复杂性,提高了软件开发的效率。PeakStream平台支持Windows 和Linux两种主流系统平台,提供C和C+-+编程接口。

基于PeakStream平台的应用程序开发与运行环境如图4所示,应用程序采用平台接口与PeakStream虚拟机库函数相联,运行时由虚拟机处理所有与GPU

的交互。

流编程技术的研究近年来得到了广泛的关注,一些研究人员发展了流编程语言以简化基于流编程模型的软件开发工作。目前,斯坦福大学开发的Brook和MIT开发的StreamIt这2种流编程语言较为成熟。

流编程模型不但适用于GPU计算,也适用于多核并行计算应用软件的开发。

4、GPU计算技术应用现状

GPU计算技术的发展时间不长,目前的应用主要限于研究领域。下面的一些实例展示了

GPU计算的性能,众多计算密集型的应用程序执行速度通过GPU加速已经得到令人瞩目的提升。

1)医学成像:数字层析X射线合成成像。

美国马萨诸塞州综合医院在数字层析X射线合成成像中使用GPU产品进行

X射线透视数据的图像重建计算,计算速度提高了100倍。原来使用由34台PC 服务器组成的集群系统完成计算要花费20 min,现在使用配备GPU的PC只要5 min,使医生能很快得到成像图片并给出诊断结果。

2)计算生物学:分子动力学模拟。

在分子动力学模拟领域,模拟复杂的分子系统需要耗费大量的时间,并使用复杂的计算机集群。美国伊利诺伊斯大学的研究人员将GPU用于计算生物分子、离子的相互作用,运算速度比过去采用集群计算机提高了100倍,使用GPU工作站后实际运算速度达到了705 GFLOPS。

3)计算生物学;神经电路模拟。

大脑神经电路模拟需要进行大规模的生物电路模拟,模拟一个神经细胞需要在1 s内求解ZX10$个方程式。一个神经系统矩阵由成千上万个神经细胞构成,对一个神经系统的即时模拟需要超过10 TFLOPS的计算能力。2006年,EvolvedMachines公司采用GPU计算,将神经系统的模拟速度比目前的X86微处理器提高了130倍。

4)科学计算:MathWorks MATLAB.

MATLAB是一种非常适合于对科学和数学算法进行快速编码的高级语言,并广泛应用于一系列研究领域,例如信号与图像处理、测量、商业建模与分析、计算生物学等。使用(GPU产品加速MATLAB有2种方法,第一种不需要改变MAT-LAB 的代码,仅通过插人CUDA FFT或BLAS函数库就可完成。为了进一步加速MATLAB 程序,CUDA中的MATLAB插件允许编程人员使用优化过的CUDA程序来替换某些关键函数,这些新的CUDA函数可以被MATLAB程序所调用。由于使用了CUDA

函数,MATLAB的使用者可以方便地加速计算而不必重写整个应用程序。

5、GPU计算技术在地球物理中的应用

由于地球物理对高性能计算的巨大需求,一些研究人员已经对GPU计算技术在地球物理中的应用开展了前瞻性的研究工作。

美国休斯顿的Headwave公司是一家专门从事地学数据分析的公司,正在开发新一代计算平台,支持叠前地震数据的分析与解释。在平台开发中,充分利用图形卡的并行计算潜力,以支撑实时工作流程、实时可视化和实时计算。Headwave 公司的解决方案采用了NVIDIA的GPU计算产品,并使用CUDA 软件环境。通过GPU计算技术的采用,大大加快了地球物理数据分析的速度。Headwave公司设计了一种经过高度优化的基于小波变换的地震数据压缩与解压算法,在CPU上数据压缩的计算速度大约为10 MB/s,而在GPU上的运行速度超过2 GB/s,性能提高约200倍。对其他叠前地震数据处理的算法试验表明,GPU的计算速度是CPU 的10 -}- 70倍。另外,Headwave公司采用了一种新的远程可视化技术,其中在服务器端将图像流数据进行智能数字压缩并传输到地球物理学家的客户端,客户端对图像进行解压并显示,服务器端与客户端之间不传输地震数据而只传输图像流,从而实现了较低带宽条件下的远程协作。这里在服务器端采用GPU作图像压缩,在客户端采用GPU做图像解压。

PeakStream公司采用2种克希霍夫偏移计算算法的变种对GPU加速性能进行了试验,取得了最高达27倍的加速结果。图5和图6分别给出了2种变种算法对不同计算规模的测试结果。测试环境为:单路和双路服务器,配备主频为3.

0 GHz的双核至强处理器,内存为2--4 GB,图形卡为带1 GB显存的ATI R580a CPU版本的测试中,采用多线程充分利用了多核计算性能。

6、结束语

最近七八年来,集群计算技术的发展为地球物理技术发展与应用提供了强劲的计算动力,使得地球物理应用中采用的HPC系统计算能力从每秒百亿次提高到数万亿次甚至数十万亿次浮点运算,性能提高了数百至数千倍,性能价格比也有了大幅度的提高。然而,地球物理技术的发展对高性能计算提出了越来越高的需求。集群计算规模的不断扩大,使得系统建设、运行与维护成本不断上升,系统性能的进一步提高也受到了一定程度的制约。

面临这种形势,寻找高性能计算技术发展的新道路成为我们当前需要关注的一项重要任务。微电子技术的快速发展,为高性能计算技术跃上新的台阶奠定了基础、指明了方向。其中一个重要发展方向是基于FPGA〔现场可编程门阵列)的可重构计算技术,该技术兼具了软件系统的灵活性、可升级性与硬件系统的高性能与并行性,在提供高性能计算能力的同时却具有低能耗的优势,有望替代集群计算技术成为未来高性能计算的主流体系架构。但是,可重构计算系统下的应用程序开发仍然是制约可重构计算技术广泛应用的主要瓶颈。

高性能计算技术发展的另一个重要方向是GPU计算。充分利用GPU并行处理能力,可以将GPU作为加速器为基于 CPU的通用计算平台提供高性能的科学计算能力补充,这样可以在现有通用计算平台的基础上实现高性能价格比的高性能计算解决方案。地球物理计算的特点,决定了GPU计算在未来地球物理计算中将发挥越来越重要的作用。基于GPU计算平台开发应用软件比基于可重构计算平台开发应用软件要容易得多,这一点使得 GPU计算技术将更早地广泛应用于地球物理领域。GPU计算技术与产品已经发展到一定的成熟阶段,GPU产品目前已经具有的高性能以及高性能价格比,使得我们到了需要尽快将其应用于地球物理计算中的时候了,而推动这一工作进程的关键仍然是软件的开发与移植工作。

相关主题
相关文档
最新文档