地震数据处理中的并行计算技术研究
姓名:杨进申请学位级别:硕士专业:计算机系统结构指导教师:李肯立
20080313
硕士学位论文摘要地震数据处理一直是高性能计算的主要领域之一,本文以海量地震数据处理为研究对象,其主要工作和创新点包括三方面的内容:设计并实现了网络化的并行地震数据处理支撑框架;为框架设计了一个基于netCDF数据格式的并行I/0子系统,并对其关键算法进行了深入研究;将MPI+OpenMP模型引入到现有的并行地震数据处理中,实现了一个可以支持多种并行地震数据处理模型的支撑库。首先,设计并实现了网络化的并行地震数据处理框架,框架为实验人员提供一个集成的实验环境,内容包括地震数据处理和数据显示分析。框架提供的流程构建器允许用户在客户端利用服务器上模块库中的模块来构建处理流程、提供交互式的模块参数设置界面,具有新建工程、模板保存等强大的编辑功能。平台同时为地震数据处理模块开发者提供一个集成的开发平台,利用该平台定义的具有较好容错能力的API接口,开发者不需要了解与平台相关的分布式计算相关知识,专注模块处理算法的开发。实践证明,借助框架可使油气勘探研究人员开发并行数据处理和显示模块的效率大幅度提高。其次,在深入分析原有并行文件系统和netCDF地震数据格式特点的基础上,为并行地震数据处理系统设计了一个基于netCDF的高效、高可靠的专用并行文件系统,重点研究了文件系统的文件分片算法,数据备份/恢复技术,并在Linux集群上实现该系统原型。实验表明,文件系统可以使地震数据处理最常见的简单并行达到很高的并行效率,且文件越大这种优势越明显。最后,将基于消息传递(MPI)的并行地震处理模型与共享存储(OpenMP)模型相结合,实现了一个适合于SMP集群并行地震数据支撑库,将涉及到消息传递的并行地震数据操作以直观的API的形式提供给开发人员,利用支撑库提供的API开发了一些测试模块,实验证明:支撑库可支持现有地震数据处理和显示模块的多种并行计算模型,并且能够获得较高的并行加速比和计算效率。关键词:地震数据处理;并行I/0:文件系统;OpenMP;MPIⅡ地震数据处理中的并行计算技术研究AbstractSeismicdataprocessingisamainareasofhighperformancecomputing,Takingmaincontentandseismicdataprocessingforitsresearchpointsofthispapersoftwarecanobject,Theinnovativeintegratedabeoutlinedasthefollowingaspects:Weonpresentpcaframeworkforparallelseismicdataprocessingoncluster,designparallelI/0subsystembasedparallelnetCDFfortheframework,CombinestheexistingpatternsbasedaonseismicdataprocessingMPlwithsharedatamemoryprogrammingparadigm(openMP),providingparalleseismicprocessingsupportlibraryfortheframework.First,Weprocessingonpresentaintegratedsoftwareframeworkforparalleluserseismicdatapccluster.Amodernandfeature-richgraphicalinterface(GUI)onawasdevelopedforthesystemallowingeditandsubmissionofparallelprocessingflowsandinteractionwithrunningclusterandcontrolledfromjobs.MultiplejobsGUI.Thecanbeexecutedthepcmodulethesameframeworkprovidesintegrateddevelopmentenvironment(MIDE)tocanpcclustermoduledeveloper.systemaremonitor,database,memorymanagementandtheMPIfunctionalitiesdeveloperasprovidedtoAPI,whichsignificantlysimplifythecodedevelopmentforthesystem.Amulti·userdevelopmentandprocessingenvironmentisavailable.ThesystemcangreatlyreducetimeafortransplantingserialprocessingmodulestOpccluster,andgethighspeedup.Second,Afterin—depthanalysistheexistingparallfilesystemandnetCDFdataformat,thispaperdesignaefficient,reliableparallelI/OfilesystembaseusesaonnetCDFfortheframework,thefilesystemnewdatascatteralgorithm,ComparingtOtheexistingparallfilesystem,thefilesystemimprovegreatlyinfault-tolerantanddatabackup/recoVery,TheexperimentdemonstratesacanthoroughlysupportSimpleseismicdataprocessingpatternsandgethighparallspeedup.Last,ThispapercombinestheexistingparallelseismicdataprocessingpatternsbasedonMPlwithdatasharememoryprogrammingsupportparadigm(OpenMP),providingforSMPaparallelseismicprocessinglibrarysuitablecancluster,Theexperimentdemonstratesthattheplatformdataprocessingpatternsandgetathoroughlysupportcurrentseismichighparallspeedup.KeyWords:Seismicdataprocessing;ParallelI/O;Filesystem;MPI;OpenMPnl硕士学位论文插图索引图2.1数据数据筛选技术………………………………………………………………………….5图2.2并行文件(PVFS)系统结构………………………………………………………………。7图2.3空间共享实例…………………………………………………………………………………8图2.4作业复制实例…………………………………………………………………………………8图2.5三种复杂的并行计算模型……………………………………………………………一10图2.6并行算法结构……………………………………………………………………………….10图2.7加速比概念………………………………………………………………………………….12图2.8等效率函数曲线……………………………………………………………………………13图2.9可扩展性概念……………………………………………………………………………….13图3.1框架的体系结构…………………………………………………………………………一18图3.2网络并行开发模式…………………………………………………………………………19图3.3远程编译……………………………………………………………………………………..19图3.4MIDE........................................................................................................21图3.5流程构建器…………………………………………………………………………………..22图4.1文件系统的体系结构……………………………………………………………………..28图4.2系统图形界面……………………………………………………………………………….31图4.3系统应用实例……………………………………………………………………………….33图4.4作业复制……………………………………………………………………………………一33图5.1SMP集群体系结构……………………………………………………………………….36图5.2MPI程序的框架结构……………………………………………………………………一37图5.3共享存储模型……………………………………………………………………………….39图5.4并行地震处理模式复合…………………………………………………………….43图5.5SMP集群混合编程模型MPI+OpenMP……………………………………………45图5.6混合模型并行地震数据处理流程………………………………………………….46图5.7流程的加速比……………………………………………………………………………….47VI地震数据处理中的并行计算技术研究附表索引表4.1PVFS系性能测试(4个节点)……………………………………………………….34表4.2PVFS系性能测试(8个节点)……………………………………………………….34表4.3专用文件系性能测试(4个节点)…………………………………………………….34表4.4专用文件系性能测试(8个节点)…………………………………………………….34表5.1MPI模型在集群上的测试结果…………………………………………………….47表5.2MPI+OpenMP模型在集群上的测试结果………………………………………一47VⅡ湖南大学学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:粕恕日期:Ⅻ亏年;月7日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权湖南大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密团,在1年解密后适用本授权书。2、不保密口。(请在以上相应方框内打“/"j作者签名:导师签名南芷日期:zo田年;月日醐洲孵朋矽日硕士学位论文第1章绪论1.1课题来源本课题来源于与美国Nexus公司合作项目“大规模地震数据并行处理系统”。并部分受国家自然科学基金重大研究计划“重大工程的动力灾变”培育项目“网格环境下地震模拟支撑系统的关键理论技术研究”资助(90715029)。1.2研究背景高性能计算能力已经日益成为一个国家经济、科技与国防实力的重要组成部分。由于科学工程计算和大规模商业事务处理需求的牵引,高性能计算中对I/O处理能力的要求是无止境的。大规模多媒体应用要求大容量快速存储系统支持,多用户事务处理环境要求快速I/O支持实时访问,而一些重大挑战性科学计算课题更是追求计算机系统具有3T性能(ep要求能提供1Teraflops的计算能力,1Terabyte的主存容量和1Terabyte/s的I/O带宽.)。近年来,随着大规模集成电路技术和网络技术的飞速发展,CPU的性能大约每三年就有一个较大的飞跃,网络带宽增长更快。而I/O设备的性能受制于机械部件,发展缓慢。所以,高性能计算机系统中I/O系统与计算系统之间存在着巨大的性能差距,而这种差距可能会成为未来大规模并行计算机的系统瓶颈。大规模并行计算机计算能力与I/O处理能力不协调的问题越来越突出。怎样在大规模并行计算机中进一步提高并行I/O能力,构成一个真正的超级并行计算环境,以实现大规模并行处理,满足现代科学与工程技术研究发展的需要,是计算机科学工作者必须要解决的问题和遇到的新挑战I卜31。另一方面,石油勘探行业一直是高性能计算的主要应用领域之一。地震勘探是利用人工激发的波场传播到地层,利用手工或计算机处理分析来自地层的波阻抗界面的反射波、高速层的折射波,以确定地质构造和地层岩石的性质的过程【41。近年来,随着油气勘探深度的不断增大和勘探范围从陆地向海洋转移,所得到的地震数据日趋庞大,对超级计算的软硬件提出了更高的需求。随着勘探工作程度的加深,资源大量地被开采,地球物理勘探工作不断向新的深度和广度进军,勘察精度的要求越来越高、难度变得越来越大,在处理方法上也提出了更新的要求。地震方法是油气勘探中最广泛使用的方法之一,由于采集数据量大、处理步骤复杂,其数据处理通常都在大型计算机或工作站上进行。以往主要采用二维地震控制构造形态,叠后偏移进行反射点归位,叠加次数一般为几十次。对于这些地震数据处理中的并行计算技术研究工作,当时的大型机还是可以满足需要。如今,为了查明不断缩小的勘察目标和得到复杂构造的精确成像,勘探方式从二维勘探向三维勘探转移,处理方式从叠后处理向叠前处理转移、常规处理向高精度处理转移,这些无疑都大大地增加了数据处理量,普通大型计算机就难以满足需要了【5,6】。为并行地震数据处理系统设计一个高效,高可靠性的专用的并行文件系统。用于将的海量netCDF(--种面向数组型数据的描述和编码标准,目前广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域)格式的地震数据放置到集群的I/O节点上,并建立高效的并行模型对并行文件系统中的数据进行处理,对提高并行地震处理系统效率,充分利用超级计算机资源无疑具有相当重要的意义。1.3本文主要工作本文的主要工作体现在下面三个方面:首先,设计并实现了网络化的并行地震数据处理框架,框架提供一个类似VC的模块集成开发环境(MIDE)可以实现不同地域的专业人员网络协作开发,MIDE将并行分布式计算相关的操作封装好以API的形式提供给用户,地球物理专业程序员可以不需了解与分布式相关的知识,而专注于算法的开发,一个友好的,多功能多用户图形流程构建环境,用户可以用它使用开发好的模块构建并行作业流程并将流程提交给集群执行,实时监控集群上运行的流程,允许同时提交多个流程并在同一个GUI界面上监控。借助中间件可使油气勘探研究人员开发并行数据处理和显示模块的效率大幅度提高。其次,在深入分析原有文件系统和基于netCDF地震数据格式特点的基础上,为并行地震数据处理系统设计了一个基于netCDF的高效,高可靠的专用并行文件系统,专用文件系统采用一种全新的文件分片算法,且相对现有文件系统在容错,数据备份/恢复机制上有较大的改进。实验表明,文件系统可以使地震数据处理最常见的简单并行达到很高的并行效率,且文件越大这种优势越明显非常适合海量地震数据处理。最后,首次将现有的基于消息传递(MPI)的并行地震处理模型与共享存储(OpenMP)模型相结合,实现了一个适合于SMP集群并行地震数据支撑库,将涉及到消息传递的并行地震数据操作以直观的API的形式提供给开发人员,利用支撑库提供的API开发了一些测试模块,实验证明,支撑库可支持现有地震数据处理和显示模块的多种并行计算模型,并且能够获得较高的并行加速比和计算效率。2硕士学位论文1.4本文的结构全文分五章,本文的结构安排如下:第一章概述了本文的课题来源,研究背景,研究目的及意义,主要工作及其组织结构。第二章详细介绍了背景知识及相关研究,工作站网络环境下提供高性能的I/O所采取的主要解决方案,概述了在并行地震数据处理系统中,怎样建立并行模型对数据服务器上的海量地震数据进行并行处理。第三章介绍了网络化的并行地震数据处理框架的设计思想和框架的一些先进特性,并简单介绍了用户在平台上开发地震数据处理模块的过程。第四章从体系结构,数据的放置算法,数据备份恢复算法,应用实例等方面详细介绍基于netCDF数据格式的并行I/o子系统。第五章将现有的基于消息传递(MPI)的并行地震处理模型与共享存储(OpenMP)模型相结合,实现了一个适合于SMP集群并行地震数据支撑库。最后是全文的总结和展望。3地震数据处理中的并行计算技术研究第2章并行I/O及数据处理技术概述地震数据处理和解释一直是高性能计算的主要领域之一,由于处理数据量大数据读写次数频繁,I/O子系统一直是并行地震数据处理和解释系统的瓶颈,本章前三节简述了在工作站网络环境下提供高性能的I/O所采取的主要解决方案,以及国内外相应的研究进展。第四节概述了在并行地震数据处理系统中,怎样建立并行模型对数据服务器上的海量地震数据进行并行处理。2.1并行I/o技术2.1.1提高I/O带宽解决方案在工作站网络环境中,为了给应用提供高带宽的I/O,在硬件结构上一般使用工作站网络的虚拟磁盘阵列。这时有两个问题需要考虑【71。一是大文件的存储结构。为了实现并行I/O,提高对文件的访问速度,并行文件系统一般都采用文件分片的方式,将一个大文件分割成多个分片并以某种方式分布在磁盘阵列中。二是I/0子系统的实现方式。主要是如何实现一个高效的I/O子系统,采用什么方式完成应用程序I/O请求。工作站网络的硬件结构在现有条件和环境下是基本固定的,关键是在软件层面上采用什么方式来高效地实现I/O子系统。通过上述分析,在工作站网络环境下提供高性能的I/O所采取的主要解决方案是:(1)循环分片。将大文件进行分片并将其分布在工作站网络的各结点上,有助于提高文件的并行读写效率。不同的分片方式对存取模式的I/O操作效率的影响很大,关键是选择一种与工作站网络相适应的分片方式。这解决的是如何为大的I/O请求提供高带宽的问题。工作站网络中的结点是平等关系,性能相近,循环分片简单易管理,因此选择了循环分片方式。(2)Collective110技术,目的是提高磁盘存取操作的效率,特别是减少大量小的I/O请求带来的存取延迟,关键是充分利用工作站网络的特点设计一种有效的CollectiveI/O的体系结构。提高I/O性能还有一种方案就是采用专用的并行文件系统比如OFS(GlobalFilesystem),PVFS(ParallelVirtualFileSystem),Coda(ConstantDataAvailability)等,其中PVFS的使用比较广泛,专用的并行文件系统虽然某些方面具有很高的效率,也提供了通用的文件访问接口,但是每种文件系统都具有相应的缺点,因此在实际应用中有很多人提出了改进方案,例如针对PVFS并行文件系统法的元数据服务器并行化,客户端缓存技术【}10】。2.1.2聚合I/O技术聚合(Collective)I/O是一种力图减轻由于映射关系导致的大量小请求所带来4硕士学位论文的磁盘操作延迟的技术,基本思想是根据磁盘文件数据的分布信息,将各结点上的进程所产生的大量d、I/0请求合并成少量大的I/O请求后再进行磁盘存取,提高了一次磁盘读写的功效。CollectiveI/O基于并行程序通常具备的对称性,当I/O发生时,集群中所有节点运行到各自子进程的相同位置,因此会在一个很短的时间间隔内各自发出I/O请求。CollectiveI/O合并这些小的读写请求成为大的读写请求,从而减少磁盘磁头移动和I/O次数,提高I/O速度【1】。CollectiveI/O有不同的实现方案;如果在I/O服务器上合并文件请求则成为SDIO(Server.directedI/O)[11l:如果在磁盘这一层次把小而零散的I/O请求的请求合并为大的请求,它就成为DDIO(DiskDirectedI/O)112l;如果客户端合并文件请求则被称为两阶段I/O(TwoPhraseI/O)。单独的CollectiveI/O对于系统性能的提高并不充分,将数据筛选(DataSieving)CollectiveI/O相结合,能显著地提高并行I/O系统的性能f71。DataSieving基于读取数据的区域特征。如图2.1所示当一个进程连续发出位置不连续的多个读请求的情况时,这些请求的数据基本在某个区域内,因此可以连续读取整个区域,再根据请求位置在内存中再次分配数据,从而减少程序的I/O次数。在几个请求中间跨度很大情况下,DataSieving可能会因为读入太多的无效数据而降低系统性能。智能的Sieving技术会判断Sieving的代价,再决定是否应该整片读取数据。用户请求·一——————一1系统缓冲0·一.·_‘~’二乙..j’::j::j7..·r『.·’一2一.蔓堇釜芦31对多个不连续的缓冲区进行合并2从磁盘上读出连续的数据3根据请求将数据拷回用户缓冲区图2.1数据数据筛选技术2.2并行文件系统2.2.1概述大型的仿真计算或数据密集型应用中,需要并行文件系统来完成大量的数据文件的读入写出,PVFS(ParalIelVirtualFileSystem)并行文件系统是在基于PC的Linux微机集群系统中最成功的并行文件系统之一,不仅有3种用户访问模式、简单方便的系统配置过程,更与MPI(MessagePassingInterface)的主流实现MPICH2的MPI.IO有直接的接12ImROMIO。PVFS是迄今为止LinuxPC集群系5地震数据处理中的并行计算技术研究统中最成功的并行文件系统之一,被广泛的应用和研究。PVFS往往是在LinuxPC集群上,与计算用的节点共享PC硬件,这样部署时,元数据服务-器(MetaServer)MGR软件和数据服务:器(DataServer)IOD软件是直接安装在计算节点上的,也就是说集群上的每个节点既是计算用的节点也适用于并行IO的节点,因此这种方式会因为计算节点进行10操作而影响正常的计算处理,降低系统的效率。另外一种方式是形成单独的数据服务系统利用多台PC安装MGR和IOD来专门提供并行文件服务,这样可以实现计算任务与并行文件IO任务的分离,类似于通道处理器减轻主处理负担的作用一样,可提升系统的计算性能和文件10性能。第一种方式影响性能而第二种方式的PC硬件代价太高,因此需要开发一个更高性价比的PVFS系统以实现不影响计算节点的性能并降低系统整体成本。首先分析系统中三个部件之间的互动与接口关系,然后设法通过软件开发与移植来替换昂贵的PC硬件基础上的数据服务器。2.2.2并行文件系统(PVFS)介绍PVFS的系统构成形式如图2.2包括数据服务器(运行IOD),元数据服务器(运行MGR),和客户端(运行libpvfs)数据文件通过条块化(striping)J丞段存储在各个数据服务器上,因此可以并发地向客户端提供数据,在客户端的文件请求处理过程中,需要先从元数据服务器获得文件数据在数据服务器上分布情况的有关信息然后客户端才通过网络向数据服务器请求所需的数据块。图2.2中计算节点通过网络与pvfs系统的元数据服务器,和数据服务起相连,元数据服务器是数据服务器上数据的索引,计算节点需要访问数据服务器上的数据时先查找元数据服务器,找到对应数据在数据服务器上的位置。据文件是通过条块化分配到多个数据服务器上的。这个分配在创建文件时确定,因此对于一个特定的文件指定偏移量的数据是固定在某个IOD服务器上的。客户机进行一次文件操作的过程如下:向运行MGR程序的Management节点发出元数据请求,获得文件在数据服务器上的分布情况;然后根据分布情况和数据偏移及数据量,可能对一个或多个数据服务器进行一次或多次读写,由于是多个数据服务器同时向所有客户机服务,因此系统的总吞吐量是各个数据服务器的总和。由于IOD与客户机和元数据服务器之间的联系完全通过网络进行,因此从客户机和元数据服务器的角度上看,IOD就是一个能够处理特定req请求并返回合适的ack响应数据的网络服务器,任何能够实现相同服务的实体替换这些IOD时,对于客户机和元数据服务器都是不可见的。同理,用相同功能的其它实体替换客户机或元数据服务器也对另外的两种部件是不可见的。6硕士学位论文数旁元数据=赦一二务一§E==爿元数据一数黼豫丽螗..鬟器一务元数馆图2.2并行文件系统(PVFS)结构2.3并行地震数据处理技术地震勘探行业越来越广泛地采用大规模并行处理(MPP)系统解决数据处理问题。地震作业最主要的是及时提交高质量的成果,成果的精度由算法的精度和处理流程所决定,而时间则是由计算机的处理能力所决定。处理能力是指一定时间内所完成的工作量。其两个重要的衡量指标是每小时处理道数和每节点小时(一个节点是并行处理系统中的一个处理单元)处理的道数。前者反映时钟时间,后者反映完成工作所需的计算机资源。应当注意的是,处理能力不是处理周期,处理周期是完成一个项目所需要的总时间。它可以通过充分发挥项目总许多处理任务的效率而达到最优。当我们把作业分配到更多的节点的时候,处理能力呈线性增长。但是,有一个极限,当多余8个节点后处理能力就不再提高,这是因为它达到了I/O带宽的上限。此时再增加节点已经无济于事,因为新增加的节点不能调动更多的数据。但是,可以将作业分解,使分解后的每个部分用8个节点进行处理。这样64个节点的系统可以同时运行8个作业,达到最大限度的利用MPP节点处理能力的目的。目前已经有五种基本的并行处理算法:空间共享,作业复制,流水线,主从模式和以上各种方法的组合。以下将在一个32个节点的MPP系统上以实例说明每种方法。实例图中的大写字母表示读带,叠加,绘图等作业,处理模块用小写字母表示【13·1卵。图2.3是空间共享说明,它是并行处理的最简单的形式。每个作业在单个节点上运行,每个节点只承担一项作业。每个作业独享一个CPU和内存,但是和其他作业竞争使用I/0带宽。每个作业不依赖于其他任何作业进程。7地震数据处理中的并行计算技术研究AE。E日.D。ZC’QBA-DYCZIPRIHG×FNoSJKMLWVUT图2.3空间共享实例作业复制(图2.4)是在许多节点上同时运行相同作业,这样,同一个处理模块形成的作业集同时处理不同的数据块。这要求每个输出数据子集仅依赖于各自的输入数据子集。A有32份复制品,每个在不同的节点上运行,每个复制作业处理不同数据子集。A1A2A3A4A5A6A7A日A9A10A11A12A13A14A15A16A17A18A19A20A21A22A23A24A25A26A27A2日A39A30A31A32图2.4作业复制实例流水线模型如图2.5(A)所示,输入输出和偏移作业模块分别运行在不同的节点上整个流程构成一个流水线,流水也称为功能模块顺序分解:把不同功能模块分配在不同处理机节点运行。这是最显而易见的。因为传统的地震处理过程总是组织为一系列模块的“流程”,如果把这些模块分段放在不同处理机运行,以构成流水方式。需要注意的是,一个作业被分割为不同的阶段,就可每个阶段包括一个或多个顺序的模块,跨处理机分布。数据必须流经流水线的每个阶段。假定我们有三个模块M1,M2和M3,分别在处理机P1,P2和P3运行,需要的处理机时间分别为t1,t2和t3。可以看出,流程处理的第一个输出需要(tl+t2+t3)运行时间,而在流水线充满后,其它输出需要的最长时间为流水段中的最长的时间tm。x。理论上,如果不考虑处理机间通信的开销,获得11个输出的并行加速比(即单处理机执行时间与多处理机执行时间之比.)为:8硕+学位论文跏磐卷瓣。甄nV磊1(2.1)其中,rmax是流水段中最长时间与总时间之比:r一;tm缸/y厶’一对于处理输出循环很大的情况:(2.2)Sn=00暑yr嗽即加速比依赖于最长流水段时间与总时间之比。r2.31扇出/扇入如图2.5(B)所示,偏移作业扇出为三份运行在三个不同的节点上,扇出/扇入模式,也称为克隆模式,克隆是复制一个模块,使它可以同时在许多处理机运行。因此,我们可以有大量相同的模块对不同的数据工作。只有在模块中确定读哪些数据的部分需要变化。这种设计模式的数据结构要求输出的子集只依赖相应的输入子集。一般地讲,应用或作业的一部分是可以“克隆”的,而剩余部分则必须在单一节点运行。我们称之为部分克隆。因此,必须从一个单处理机扇出到“克隆”了的多个处理机,和从“克隆”了的多个处理机扇入回一个单处理机。这里,每个节点接收的数据子集、所有模块同步运行,当处理完成时数据同时输出。在一个处理循环中,如果一个模块Mp的计算量tp特别大,采用流水方式不可能获得高的加速比,这时可以利用克隆这个模块到m个处理机的方法,其理论上加速比为:一西赫。——一撩。—1l_m—-lrp印‘丽知1(2.4)@4’其中,rp是克隆的模块运行时间占总时间的百分比,即(2.5)当处理机数较大时,系统可达到的理论加速比为:鼬2—1-—rp出/扇入模型并行,如F.K域偏移和滤波等模块。\‘一’”,(2·6)某些包含数据结构太大的模块,不能放在单一节点存储器中,此时可采用扇主从模式如图2.5(C)所示,作为例子,主节点从磁带或磁盘读输入道,并确定输入道应该映射到的面元,传送输入道到该面元对应的从节点,然后读下一个输入道等。这样,从节点在其输入满足后,开始计算,在计算完成后通知主节点,并等待来自主节点的新输入。需要采用主从方式的模块是计算量大的模块,例如Kirchhoff偏移、DMO和DMO速度分析等模块。在DMO情形下,每个节点使用全部数据,计算输出道的子集。在DMO速度分析的情形,每个节点使用所有数据,计算速度扫描图的子集。9地震数据处理中的并行计算技术研究输入◆偏移l‘输出A流水线日扇入,翕出C主从模式囚囚图2.5三种复杂的并行计算模型2.4并行算法的设计2.4.1设计原则并行算法是并行计算的基础,与实现技术相结合,为高效率使用并行计算机提供解决方案【1,21。其基本原则简述如下:1.并行算法与体系结构相结合,可以分为线性结构、维网格结构和超立方体结构,如图2.6:一,\一/\/\/\/\、/,,、\/厂、\一,厂、\/厂、\//一\、一,厂、\一,厂、\/厂、\一,,,、\/厂\、/厂、\/厂、\/厂\、、/,,、\/厂\、//、\/厂、\一,/、\一,/,、\一,厂\厂、厂、厂、厂、/一图2.6并行算法结构2.具有可扩展性:并行算法是否是随处理机个数增加而能够线性或近似线性的加速,这是评价一个并行算法是否有效的重要标志之一。也就是说,如果一个并行算法的加速比是SP(q)一D(q)或是SP(g)一O(q/(1+log(q))),则可以称为具有可扩展性的并行算法。3.粗粒度:通常情况下,粒度越大越好。这是因为在每个处理机中有很多需要计算的工作任务,如此可以充分发挥多处理机的作用。并行加速比对细粒度问题一般情况下是不会很高的,这也是为什么并行计算需要求解大规模问题的原10硕士学位论文因所在。4.减少通信:一个高效率的并行算法,通信是至关重要的。提高性能的关键是减少通信量和通信次数,其中通信次数通常情况下是决定因素。5.优化性能:一个算法是否有效,不仅依赖于理论分析的结果,也和在实现的过程中采用的技术息息相关。性能主要看单处理机能够发挥计算能力的百分比,然后是并行效率。影响并行算法效率的因素可能很多,但是这里所给出的几条是主要因素。因此,在算法设计的过程中,如果能够将上述5条加以仔细考虑,就能够取得非常好的效果。2.4.2性能评价大多数高性能现代计算机展示了并发性(concurrency),例如多处理是一种在作业级或程序级达到并发性的方法,而指令预]驭(instructionprefetch)是一种在指令级达到并发性的方法。然而把每一种现代计算机均称为并行机是不恰当的,许多机器的并发性对用户是不可见的。因此,在文献[16—19]采用下面的一些定义:并行处理(ParallelProcessing):并行处理是信息处理的一种有效形式,它强调对数据元素的并发操作,这些数据元素属于解决一个单一问题的一个或多个进程。并行性主要是指同时性或并发性,并行处理是指对一种相对于串行处理的处理方式,它着重开发计算过程中存在的并发事件。并行性通常划分为作业级、任务级、例行程序或子程序级、循环、迭代级、语句和指令级。作业级的层次高,并行处理粒度粗。粗粒度并行性开发主要采用MIMD方式,而细粒度并行性开发则主要采用SIMD方式。开发计算机并行性的方法主要有:资源重复、时间重叠和资源共享三种方法。粒度:是各个处理机可并行执行的任务大小的度量。大粒度反映可并行执行的运算量大,亦称为粗粒度。指令级并行等则是小粒度并行,亦称为细粒度。加速比:串行执行时间为Ts,使用q个处理机并行执行的时间为Tp(q),则加速比Sp(q)为:&(q卜蠡GFLOP/s和刀咒DP肛,目前也逐渐开始使用PFLOP/s。.(2。7)计算速度:求一个问题的计算量为Ⅳ,执行时间为Z,在80年代采用FLOP/s作为计算速度单位;在90年代使用MFLOP/s和GFLOP/s;在21世纪普遍使用州-了W量,如何提高操作速度,增加并发性等。(2.8)吞吐量(Throughput):单位时间产生结果的数量。可以有许多方法改进吞吐11地震数据处理中的并行计算技术研究数据并行(DataParallelism):使用多个功能部件把同一操作同时应用到数据集的元素上。如果没有增加与并行性相关的开销,则功能部件增加K倍,系统的吞吐量也增加K倍。Amdahl定律:在许多实时应用领域,计算负载的大小常固定。在并行机中,此负载可分布至多台并行执行,获得加速比称为fixed.10adspeedup。问题规模不随处理机变化而变化,而是看用并行技术能达到的最短时间是多少。一个问题的负载可表示如下:W=Ws+%负载。在咒个节点情况下,加速比可以表示如下:Ⅳ+Ⅳ(2.9)其中,职代表问题中不可并行化的串行部分负载,%表示可并行化的部分Sn。蒜形+形(2-o)设串行因子口为串行部分所占的比例。代入即得Amdahl定律:J一。———访芦—————i矿万。:_iiF二:≯万i跏≤竺乎t矗布L么·上上歹.仁Ⅲ形十形如图2.7所示,加速比是标志并行处理相对与串行处理所获得性能增加。12.34n12-34n固定负载执行时间随n增加而减少图2.7加速比的概念Custafson公式:假设在每个处理机中,串行部分的百分比为a,则使用q个处理机的并行加速比为:S,(日)-a4-qx(1一口)效率(Efficiency):(2.12)E一鲁t面石而1。赢1t而1(2.13)如果问题规模Ⅳ不变,则处理机数目刀越大,效率厶也会相应下降。因此硕士学位论文为了维持效率B不变,就需要在处理器数以增大的同时相应的增加问题规模Ⅳ的值才能保持效率不变。为了维持一定的效率(介于0与1之间),当处理器数刀增大时,需要相应的增大问题规模Ⅳ的值,由此定义的问题规模Ⅳ随处理器数刀变化的函数称之为等效率函数(Isocfficiency)。按照等效率函数的定义,对于某一并行算法(或并行程序),为了维持运行效率保持不变,随着处理器数目的增加,若只需要增加较小的工作量(问题规模),比如说Ⅳ随刀呈线性或亚线性增长,则表示该算法具有良好的可扩放性;若需要增加非常大的问题规模,比如Ⅳ随刀呈指数级增长,则表示该算法是不可扩放的。如图2.8给出了三种等效率函数曲线,曲线1表示算法具有很好的扩放性;曲线2表示算法是可扩放的;曲线3表示算法是不可扩放的。Ⅳ工作负载处理器数厅图2.8等效率函数曲线可扩展性(Scalability):可扩放性最简朴的含意是在确定的应用背景下,计算机系统(或算法或编程)性能随处理器的增加而按比例提高的能力。现今它已成为并行处理中一个重要的研究问题,被越来越广泛地用来描述并行算法(并行程序)能否有效利用可扩充的处理器数的能力。如图2.9所示,可扩放性是标志从小规模系统到大规模系统所引起的性能衰减。O处理器数图2.9可扩展性的概念地震数据处理中的并行计算技术研究2.5小结本章是后续章节的研究基础,前三节简述了工作站网络环境下提供高性能的I/0所采取的主要解决方案,在第四节详细介绍了大规模并行处理(MPP)系统中常见的地震数据并行处理算法,第五节介绍了通用的并行算法的设计过程和怎样评价一个并行算法的性能。14硕士学位论文第3章网络化并行地震数据处理框架本章介绍了网络化的并行地震数据处理框架,框架是为在集群上进行地震数据显示与分析而开发的一个稳定可靠、可扩展、适应计算和网络技术演化需求的中间件,使得地震专业人员可以利用本支撑框架透明地利用其专业理论与方法,开发具有良好成长性的数据处理、数据显示与分析模块,而不必关心和注意他们所不擅长的最新的计算机技术和软件开发理论与方法。借助框架可使油气勘探研究人员在开发并行数据处理和显示模块的效率大幅度提高。3.1相关研究3.1.1中间件技术介绍在网格等高性能计算技术的研究中,最关键的就是中间件,它是当今基础软件体系的三大支柱之一,它可以屏蔽低层分布式环境的复杂性和异构性,简化分布式应用程序的开发,提高分布式应用程序的健壮性、可靠性和可用性。中间件是一种的系统软件或者服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源;近年来随着网络计算技术的快速发展,中间件技术取得了重大进展【201。计算机系统最初阶段多是单机系统,多个用户是通过联机终端来访问。随着网络的出现,产生了客户/服务器的计算服务模式,多个客户端可以共享数据库服务器和打印服务器等。随着计算机和网络技术的飞速发展,许多软件需要在不同厂家的硬件平台、网络协议异构环境下运行,应用的规模从局域网发展到广域网,应用范围面向三层和多层体系结构的分布式环境,在分布式环境中,无论是硬件平台还是软件平台都不可能做到统一,而大规模的应用软件通常要求在软硬件各不相同的分布式网络上运行。中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,开发者不得不直接面对许多复杂棘手的问题,如操作系统的多样性、繁杂的网络程序设计和管理、复杂多变的网络环境、数据分散处理带来的不一致性问题等等,这些与用户的业务没有直接关系,但又必须解决,耗费了大量的时间和精力,因此开发者迫切需要一种基于标准的、于计算机硬件以及操作系统的开发和运行环境,于是,中间件技术应运而生。在众多关于中间件的定义中,比较普遍接受的是IDC表述:中间件是一种的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源;中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通信。IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件是介于操作系统(包括底层通信协议)和各种分布式应用程序之间的一个软件层。总的作用地震数据处理中的并行计算技术研究是建立分布式软件模块之间互操作的机制,屏蔽底层分布式环境的复杂性和异构性,为处于自己上层的应用软件提供运行与开发环境,帮助用户灵活、高效地开发和集成复杂的应用软件。在具体实现上,中间件是一个用应用程序接口定义的分布式软件管理框架,具有强大的通信能力和良好的可扩展性。3.1.2并行地震处理系统地震数据处理和解释系统的研究一直是众多公司和研究机构的研究热点之一,已有多种并行处理与解释系统走向实际应用[21,22】,如OpenSpirit,WebⅥsta,geocluster等。OpenSpirit由Chevron、Shell和Schlum.berger三家公司联合研发,其目的是为能源工业提供一个于厂商和平台的应用集成框架,既提供如坐标变换等基本E&P组件,又提供一些针对地下地质解释的组件。WebVista则是web技术引入地震处理系统中的典范。其应用程序采用的浏览器/服务器(B/S.)模式具有多种优点。网络化计算也被广泛应用于地震数据处理中,1998年,西方地球物理公司曾通过数据采集、软件开发、数据处理等多方的共同努力,使典型的地震资料采集和处理的周期由数月缩短到数周。AGIP公司于1997年在泰国海上350km2的三维地震勘探中采用了”网络化协作组”的工作方式f23彩l。由于集群技术的优势,集群计算机系统已成为石油工业高性能计算机系统的首选【25,26l。法国的CGG于2001年在Linux操作系统的微机集群上完成了著名的软件系统GeoCluster,该系统至今仍被许多油气勘探企业所采用:西方地球物理公司也于同年完成了地震数据处理系统向计算机集群平台的移植。在国内,中石油于2003年投入巨资开发了基于集群的并行地震数据处理与解释一体化系统。尽管商业系统在某些方面具有不可比拟的优越性,但是它们一般多针对大型油气勘探公司开发,一些小型数据处理中心以及研究机构难以依赖于这些系统进行研究,主要原因为:首先,商业系统缺乏对地震数据处理中各种功能模块并行计算模型的全面考虑,系统中的有些模块的并行处理效率过低,对超级计算资源的利用有限,如geocluster的3.D叠前深度偏移模块在集群上有很高并行效率,但是叠前kirrchhoff时间偏移模块的并行效率却很低:其次,商业系统缺乏柔性灵活的二次开发环境,用户很难在系统上开发新的模块。值得指出的是,除了各大公司研发的大型地震数据处理系统外,对地震数据处理和解释中的某些模块的并行分布式计算也引起了相当的研究兴趣【28。321。文献『281描述了3一D克希霍夫深度偏移模块在大规模并行处理机上从原型的实现到实际应用的过程,文献『291是三维叠前深度偏移并行算法的实现,文献【291是叠前克希霍夫时间偏移在集群上的实现。文献[31,32]是对大规模地震数据并行显示和分析的研究,其中文献f31]是地球模拟器上大规模地震数据并行可视化算法的优化和实现,文献f321设计并实现了一个显示大规模地震数据场的并行可视化系16硕士学位论文统。在本文的第二章介绍了适合于集群系统的并行地震处理模型,但它们都没有考虑MPI+OpenMP混合编程模型,因而难于同时利用两者的优势。和上述工作不同,本章从软件工程的视角出发,注意到地震数据处理和显示模块对系统的需求,借鉴和利用某些局部地震处理模块并行处理的研究思想和方法,本文提出并实现了一种并行地震数据处理和解释支撑框架(paralleldataprocessingsupportseismicframework,PSDPF),该框架提供一个支持多种并行计算模型的并行地震数据处理支撑库的中间件,利用动态开放的网络环境,将多层次和多尺度计算资源进行组合与链接,实现了构件之间的动态交互装配。3.2框架的设计思想和结构框架设计的目的是面向大规模、高精度并行地震数据处理解释系统的强大计算需求,研发一种在集群上开发和应用并行地震数据处理模块的软件中间件。基于这些需求设计的并行地震数据处理解释系统支撑框架包括以下四个部分:可以支持现有并行地震数据处理模型和MPI+OpenMP混合编程模型的支撑库;方便程序使用系统提供的API开发模块的二次开发环境;支持多用户网络协作开发和应用的环境:将用户在GUI上构建好的流程用脚本描述远程提交给集群执行的作业脚本描述语言。在GUI上PSDPF数据处理流程和简单流程图类似,用户可以利用系统库提供的模块”绘制”数据处理流程,设置流程中每个模块的参数,每个模块等价于一个C++类,该类继承了框架提供的模块基类。每个模块类一般具有两个典型的成员函数:init(参数输入),exe(数据处理)。模块基类可以使用框架中提供的全局C++类,这些类包括内存管理、数据库访问、系统监控、以及一些被封装的MPI消息传递接口,它们都被预先编译成静态库存放在集群服务器上,当用户将作业脚本提交给服务器后,服务器解析作业脚本,链接编译流程需要的静态库,将流程编译成可在集群上运行的可执行文件。PSDPF支持网络化多角色的远程多用户协作并行应用模式【32】,其核心组件包括:(a)DFS(dataprocessingandFlowBuilderserver),即运行在集群管理节点上的服务进程,其主要功能是侦听用户请求,将MIDE(模块集成开发环境,ModuleIntegratedDevelopmentEnvironment)编写好的模块源代码编译成静态链接库,存放到模块库中,将编译结果返回。它还将作业脚本编译成可以执行的流程并提交给集群执行,监控集群上运行的流程,并将结果通过网络返回给GUI。(b)模块的集成开发环境(MIDE)。(c)流程构建器(FlowBuilder,FB),提供一个图形化的编辑,提交,监控数据处理流程的环境。框架采用基于角色的用户管理,包括Admin(用户管理,DFS上的模块库管理)、开发人员(developer,模块开发)和生产人员(producer,利用开发人员开发的模块构建地震数据处理流程)三种角色用户。17地震数据处理中的并行计算技术研究系统的网络协作应用模式如图3.1示:图3.1框架的体系结构步骤1:步骤2:步骤3:步骤4:步骤5:Admin通过网络管理DFS上的用户以及模块库。开发人员通过客户端模块集成开发环境(MIDE)在DFS上开发模块。开发人员和生产人员使用流程构建器(FlowBuildef,FB)构建作业流程,并将作业脚本提交DFS。FB通过DFS监控集群上运行的作业。DFS将用户提交的作业脚本编译成可执行文件生成PBS(PortableSystem)执行脚本提交给pbsserver,PBSBatchserver将作业提交给集群上的计算节点(ComputeNode,CN)。步骤6:用户通过数据显示和分析工具分析数据服务器上处理好的数据。3.3网络并行协作应用模式PSDPF平台支持网络化多角色,多用户并行协作应用模式。MDIE、Admin、FB实相当于DFS的客户端,DFS采用多线程的机制,允许不同角色的用户并行协作应用。如图3.2每个开发人员在DFS上都有相应的用户模块库(userModulelibrary,UML)不同的用户使用MDI客户端在服务器上对应的用户数据库上开发模块。Admin负责将用户库中开发人员开发好,经过测试的模块放到系统库中(systemModulelibrary,SML)。FB启动的时候将服务器上SML上的模块库读取到本地,并将构建好的流程用XML描述提交给DFS。DFS为每个在其上面开发模块的用户新建一个线程来处理用户请求生产人员和开发人员都可以使用FB,不同的是生产人员使用的流程构建器只启动的时候只将DFS上SML中的模块读取到本地,开发人员不仅会读取SML中的模块而且会读取自己用户库中的模块到本地用于测试。硕士学位论文为了有效地提高PSDPF的可移植性和可维护性,更有利于在石油勘探开发地震数据处理中应用基于网络的并行计算技术。使用户可以在不同的地方,不同的平台上在PSDPF上编写模块,构建流程。PSDPF中采用了网络编译技术,模块的编译,流程的编译都在服务器上完成。客户端只负责图形的显示。图3.2网络并行开发模式远程编译模块的过程是,程序员使用MIDE编写好模块,编译时MIDE自动将代码上传到DFS的相应目录,调用DFS上的编译器编译模块,并将编译信息通过网络实时返回,整个编译过程对用户透明,编译好的模块将会存到服务器上的用户库中。如图4所示:用户远程编译模块的过程是,使用MDIE编写好模块,编译时MDI自动将代码上传到DFS的相应目录,在DFS上生成Makefile,调用DFS上的编译器编译模块,并将编译信息通过socket实时返回,整个编译过程对用户透明。编译好的模块将会存到服务器上的用户库中。图3.3远程编译地震数据处理中的并行计算技术研究3.4模块开发由于C++的封装和继承,使得开发人员使用MIDE开发模块的工作变得非常简单,MIDE是一个类似VC的集成开发环境,支撑库提供API包括数据库访问,系统监控,内存管理以及支持现有并行地震处理模型的MPI消息传递接口。用户开发的模块都从支撑库中封装好的模块基类继承,支撑库提供了丰富的功能强大的模块基类,编写并行模块的地震专业人员不需要深入了解复杂的分布式计算技术,专注与并行处理算法的开发f34,35】。当模块开发人员定义好开发的模块类型之后,MIDE自动生成相应类型模块模版,一个模块相当与一个c++类。例如用户要开发一个名为myModule模块,MIDE为这个模块生成3个文件,1个c++头文件,1个c++源文件和一个myModule.def文件。模块开发人员可以将其他的的头文件和源文件添加到工程中。myModule.def包含模块的类型说明,详细描述信息以及编译模块的时候需要的C++头文件和库。编译模块的时候将根据此文件生成Linuxmakefile,链接需要的静态库。自动生成代码之后程序员通常只需要重载基类中的两个成员函数:(1)BoolmyModule::init0:init函数用来处理模块的参数输入,该函数在模块初始化的时候调用。系统提供了一个全局的类ParameterParse专门用来处理模块参数的输入,在编译模块之前,MIDE将会扫描init函数中代码,找出模块需要的参数以及参数的类型,保存到一个myModule.par的XML文件中。当模块编译通过之后,这个文件将会随模块的索引一起保存到服务器上的数据库中,用户设置模块参数的时,流程构建器(FB)从数据库中读取这个文件,通过解析这个文件用图形界面显示模块需要的参数,等待用户输入。ParameterParse类支持的参数类型包括:(a)integer,real,double,characterstringandBoolean;(b)文本框,下拉列表;(c)参数在图形界面上的颜色、字体、是否填充;(d)输入文件、输出文件;(e)主机名。不同类型的参数将以不同的形式在图形界面上显示,例如Boolean类型的参数以下拉列表的形式显示给用户。(2)BoolmyModule::exe0,这个函数在模块运行的时候调用,地震专业人员在这里编写数据处理算法。实现这两个函数模块开发人员既不需要精通MPI并行编程技术,也不需要了解流程运行的时候集群上的内存管理等一些细节问题,框架的并行地震数据支撑库将这些功能封装以API形式提供给程序员,根据我们的经验一个熟悉C++的程序员可以在一两周的时间内开发一个功能复杂的并行地震数据处理模块。PSDPF系统支持网络化多角色,多用户并行协作应用模式。MIDE,Admin,FB相当于DFS的客户端,DFS采用多线程的机制,允许不同角色的用户并行协作开发(如图3.2)。每个开发人员在DFS上都有相应的用户模块库(userModule硕±学位论文library,UML)不同的用户使用MIDE客户端在服务器上对应的用户数据库上开发模块。Admin负责将用户库中通过测试的模块放到系统库中(systemModulelibrary,SMu。FB启动的时候启动的时候将服务器上SDB上的模块库读取到本地,生产人员和开发人员都可以使用FB。不同的是生产人员使用的流程构建器只将DFS上SML中的模块读取到本地,开发人员不仅会读取SML中的模块而且会读取对应用户库中的模块到本地用于测试。3.5图形用户界面~个直观的友好的图形用户界面,将会大大方便用户使用系统,成功的商业系统一般都具有非常友好的图形界面【鄞。3”,PSDPF同样给用户提供了一个友好的图形用户界面,用户只需要单击一下鼠标就可以得到详细的模块使用文档,”所见即所得”,流程构建环境,用户可以像”绘制”流程图一样使用系统库中提供得模块构建数据处理流程。该图形界面采用OT(Trolltech公司的一个跨平台的图形用户界面库1开发,0T具有类似windows应用程序多文档,浮动窗口等功能。界面在Linux下面开发,但是可以方便的移植到其他操作系统上,我们已经成功将GUl界面移植到Solaris,windows平台上。框架GUI包括2个主要组件:M1DE(图3.41和FlowBuilder(图35)其中FlowBuilder又分为3个常用的功能部件:模块库(图3.5c),作业编辑器(图3.5b),作业管理器(图3.5d)。M1DE是一个类似Microsoft境,其功能和使用方法已在第4节详细介绍。VisualStudio60的集成开发环’”自…*一Ⅺ目“…I—l.,口●{_hooj.∞●●KlJ·ttVl口o·≈ho“d—^-^_’1口口一。¨h‘-‘J。^T…t口Th…’’‘…“H1图3.4模块簋成开发环境地■数据处理中的并行*算技术研究FlowBuilder给用户提供了一个图形化的”所见即所得“开发环境,用户可以像绘制流程图一样将模块从模块库拖放到绘图区,将不同的模块连接起来,设置好模块的参数,构建数据处理流程。FlowBuilder将用户构建好的流程用作业脚本描述,上传到DFS。脚本中包括流程中每个模块的参数,编译模块需要的库,流程执行需要的节点。DFS根据用户上传的脚本生成main函数,链接模块库,编译成可执行文件,将作业提交给集群,编译信息也会通过网络实时返回到FB。当作业被提交到集群的指定节点上,在执行的过程中,流程会将一些执行信息发送到管理节点上,DFS将相应的信息转旋给流程构建器,在作业监控器中显示。流程构建器通过DFS远程管理集群上的执行的作业,DFS上有一个线程侦听来自GUl界面的控制信息。’““一,}~I…IC-I自一‘。I-嚣.}曼●。}目。工I一I,!詈一刮l::=.o占1‘苫一一一Ij~-…一一…~…一一一:“‘蚰甍—粤一一兰当}生竺__==■=兰:=!=兰:兰一芸芸皇I一=④一“《图3.5流程构建器FlowBuilder启动的时候将会读取服务器上的模块库,在本地显示。在模块库模块列表中双击一个模块将会显示该模块的使用文档。模块库还提供按名字查找模块的功能,当模块被找到之后,用户可以直接将模块从模块库中拖放到绘图区用于构建数据处理流程。作业编辑器是框架是核心的部件,多文档的结构允许用户同时打开和编辑多个流程,由于浮动窗口的使用,用户可以将界面调整成自己喜欢的样式,模块和参数设置可以在不同的流程相互拷贝,编辑器还允许将流程的一部分保存为模版,已各下次使用,节省用户编辑流程的时间,减少失误。用户飘击拖放绘图区的模块,将会弹出该模块韵参数设置窗口,设置好模块参数之后,作业脚本被上传到DFS,DFS根据脚本生成可执行文件和PBS(IBM开发的一个的开源的集群作业管理器1脚本,将作业提交给PBSserver,PBSSerVer生成一个唯一的ID标识该作业,并将ID通过DFS返回作业监控器,作业监控硕上学位论文器通过该ID监控集群上的作业,当作业在集群上执行出错时,PBS立即将错误信息返回给作业监控器,高亮显示。作业监控器仅仅是PBS功能的封装,通过接收PBS返回信息来显示作业状态,通过发送PBS指令给PBSserver管理集群上的作业。因此作业编辑器和作业监控器相互。运行时候互不影响。3.6小结本章全面从体系结构设计思想方面全面介绍了我们开发的并行地震数据处理支撑框架,框架提供的一些先进特性,以及用户这样利用框架提供的集成开发环境开发模块,目前该中间件已经投入实际应用,实践证明中间件可以是模块开发人员开发模块的效率大幅度提高。地震数据处理中的并行计算技术研究第4章基于netCDF的并行I/0子系统本章在深入分析原有文件系统和基于netCDF的地震数据的基础上,为并行地震数据处理系统设计了一个基于netCDF的高效,高可靠的专用并行文件系统,本章讨论文件系统中数据的放置算法,数据的备份/恢复机制以及怎样建立高效的并行模型对文件系统中的数据进行并行处理,实验表明,文件系统可以使地震数据处理最常见的简单并行达到很高的并行效率,相对现有文件系统在容错,数据备份/恢复机制上有较大的改进。4.1研究意义4.1.1研究背景计算机技术发展迅速,特别是处理器和网络速度提高很快,然而外设的速度相对落后。I/O设备成为计算机系统特别是大规模并行环境下的瓶颈,已经是公认的事实。在I/O系统的设计中我们参考了Purakayastba等人在NCSA(nationalcenterforsupercomputingapplications)对科学应用中并行I/O特点的概括【2—4】。其最主要的特点是,磁盘存取操作密集,90%的磁盘数据访问量是由占请求总数不到10%的较大的数据请求要求的,而访问请求总数中的90%的请求是较小的数据请求。因此,并行文件系统既要保证大量较小的I/0请求的小访问延迟,又要为较大的I/0请求提供高带宽。特别是后者,如果不能较好地解决,对系统性能的影响就会很大【38。401。地震方法由于采集数据量大,处理步骤复杂,其数据处理通常都在大型计算机或工作站上进行。如今,为了查明不断缩小的勘察目标和得到复杂构造的精确成像,勘探方式从二维勘探向三维勘探转移,处理方式从叠后处理向叠前处理转移、常规处理向高精度处理转移,这些无疑都大大地增加了数据处理量,所以I/O瓶颈问题在并行地震数据处理系统中显得尤为突出。4.1.2并行文件系统(PVFS)性能分析大型的仿真计算或数据密集型应用中,采用并行文件系统来完成大量的数据文件的读入写出,将会显著提高系统的性能,达到充分利用超级计算资源的目的。应用在Linux集群上的并行文件系统最成功的是PVFS,有关PVFS的结构及使用方法已经在第一章详细介绍,其优点是能够达到很高的I/O性能,实际解决了集群系统中并行存储的问题,且源码公开,具有良好的开放性。然而I/O性能并不是衡量集群文件系统的唯一指标,要使PVFS在集群系统中能够正常、稳定地运行起来,必须满足集群系统高可靠性和可用性的特征,即还需考虑文件系统的硕士学位论文容错性。目前,PVFS对这个问题的处理还不够成熟和完善,具体体现在以下几个方面:(1)没有采取容错机制,系统的可靠性有待提高。PVFS采用元数据和文件数据相分离的结构,文件的元数据信息存放在一个元数据节点中,由元数据服务器负责管理;而文件数据被条块化分割后顺序存放在多个I/O节点中,由FO服务器负责管理。这种结构使得元数据服务器和所用的I/O服务器都成为系统的中的单点故障点,其中任一节点的硬盘、cpu、内存、软件等出现故障,则整个文件系统将不可用。(2)数据备份/恢复的效率较低。由于缺乏容错机制,要在集群中应用PVFS文件系统,就必须有数据的备份恢复的机制,使得在某个服务节点失效时,数据不至于全部丢失,能够恢复到上一次备份时的状态。最简单的方法是使用tar或者类似工具,通过PVFS提供的内核接口或libpvfs接口,从一个PVFS客户端直接将存放在PVFS系统上的所有所用备数据备份出来。恢复时,再从一个PVFS客户端将备份数据恢复到新建的PVFS系统中即可。然而,这种方法会带来两个问题,一是要有一个容量足够的存储设备,二是在PVFS系统很大时,完成一次备份或恢复会消耗很长的时间。(3)可扩展性收到一定的一方面,集中的元数据管理成为这个系统的潜在瓶颈,其影响会随着系统规模的扩大而初步显现,另一方面,PVFS在规模的扩展方面显得不太灵活,一旦文件系统构建完毕,如果要增加I/O节点,只能通过数据备份、系统重建、数据恢复的方式进行,步骤繁琐,容易出错,且必须以脱机的方式运行,影响了集群上的应用。最关键的是,在PVFS并行文件中数据被条块化分割后顺序存放,并不能保证地震数据的一个道集不被分散到不同的I/O节点上,不能在作业复制时将处理不同道集的进程之间的通信开销降到最小,而在并行地震数据处理中作业复制这种简单的并行占90%,因此,通过实验发现,采用PVFS文件系统不能显著提高系统并行处理的性能。因此,为并行地震数据处理系统设计一个高效,高可靠性的专用的并行文件系统,充分利用超级计算机资源无疑具有相当重要的意义。4.3系统的体系结构4.3.1文件格式分析本章的文件系统建立在netCDF数据格式上面,netCDF是一种面向数组型数据的描述和编码标准,目前广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。用户可以借助多种方式方便地管理和操作netCDF数据集【41】地震数据处理中的并行计算技术研究netCDF最早是由美国国家科学委员会资助的计划所发展来的,其用意是在Unidata计划中不同的应用项目下,提供一种可以通用的资料存取方式,资料的形状包括单点的观测值、时间序列、规则排列的网格、以及人造卫星或雷达的影像文件。netCDF可简单的视为一种存取介面,任何使用netCDF存取格式的资料就可成为netCDF文件;每一个netCDF文件可以含括度的、具有名称的变量,包括长短的整数、单倍与双倍精度的实数、字符等,且每一个变量都有其介绍的资料,包括量度的单位、名字及意义等文字说明。一个完整的netCDF包括档头和资料区。档头(header):主要用来记录变量名称、个数与型态;dimention名称、个数与型态;以及相关的说明内容。由于这一部分内容并没有用到实际数据储存的空间,所以使用的空间并不会多出来。资料区(data):这一部分就是实际数据记录的地方,由于这一部分的空间有涉及你当初设定的变量型态,假如你的数据为整数,但是你记录的储存格式为倍精倍数,则这个区域的储存空间无形之中会变的很大。基本上就仅分为这两个部分,所以你在看档案的时候,看前面就知道后面数据的型态。简单的说,netCDF是一套软件,也是一种存取介面,这种介面的优点在于其资料具有说明的档头。所以资料不会被误用;而其存取方式为”直接至该笔资料存取”,因此可以省去很多不必要的读取时间;另外,这种文件是一种可以,,跨平台操作”读取的格式,因此不论是以何种操作系统制作netCDF文件,在其他平台之下,还是可以使用这样的资料文件的。netCDF可简单的视为一种存取接口,任何使用netCDF存取格式的档案就可称为netCDF档案;至于netCDF这套软件的功能,在于提供C、Fortran、C++、Perl、或其它语言I/O的链接库,以让程序发展者可以读写数据文件,其本身具有说明的能力、并且可以跨越平台和机器的。netCDF适合于科技方面的使用,这是因为这个介面是一个的资料分布系统,所以由这个介面所产生的文件,具有的资料格式,当你需要其中的某一笔资料时,程序将不会从第一笔资料顺序读到你所需要的资料处,而是由netCDF程序直接存取那一笔资料,如此一来将会大量的降低存取的时间。本章文件系统建立在netCDF格式之上并充分利用netCDF格式这一优点。4.3.2系统的设计思想为并行地震数据处理系统研究一个高性能,高可靠性的并行文件系统,面对的主要问题如下:(1)文件分片方式,将大文件进行分片并将其分布在集群中的I/O节点上,有助于提高文件的并行读写效率。不同的分片方式对存取模式的效率影响很大,另外由于最后的并行算法需要应用于商业的并行地震数据处理中,处理的数据量特硕士学位论文别大,对数据分发的可靠性要求高,如何准确的将TB级别的数据分发到1000个以上的计算节点是一个难点。(2)数据备份/恢复,一次分发数据的时间特别长,所以算法必须允许在分发的过程中一个或者多个进程异常而不需要终止分发数据。分发数据之后一个以上的节点崩溃而不需要重新分发数据。(3)程序访问接口,成功的文件系统都会为用户提供多种方便的访问接口,以便用户在文件系统进行二次开发,是否有方便的访问接口将直接决定文件系统的应用前景。(4)建立通用的并行模型对分发后的数据进行处理。(5)将在集群上处理的数据回收到磁盘或者专用的存储设备上以便进行数据的显示和分析。文件系统的设计主要考虑I/O的组织方式,I/O的组织方式是指系统中的实体共享数据存取的信息和数据分布的信息,并且以一种一致的方式执行协作式的I/O请求。其中,数据存取信息包括数组维数、数据分布信息、全局数据访问信息等【371。数据分布信息包括文件存储的顺序和文件分片的策略;一致的方式是指不同结点的多个存取操作涉及向同一文件的连续位置读或写,也就是说,数据存取的顺序与数据存储在磁盘上的方式相匹配。在充分考虑NetCDF文件格式的特点和并行地震数据处理模型的基础上设计了专用文件系统,以达到文件系统在通用的并行地震数据处理上优化的目的,文件系统的体系结构如图4.1所示,系统体系结构类似于PVFS,包括数据索弓}服务器(记录文件系统中的数据集和相应数据集的详细信息),客户端(运行I/O代理1,和专门的计算节点,数据文件通逐段存储在各个数据服务器上,因此可以并发地向客户端提供数据,在客户端的文件请求处理过程中,需要先从数据索引服务器获得文件数据在数据服务器上分布情况的有关信息然后客户端才能通过网络向数据服务器请求所需的数据块。相对于PVFS文件系统,主要的不同有两点:首先文件系统建立在NetCDF数据格式的基础上而不是建立在操作系统的文件系统之上,其次,有较大一部分计算能力很强的节点即是数据节点有是计算节点,这是专门针对并行地震数据处理中90%的并行都为简单的数据并行,文件系统可以直接将数据通过I/O代理放置到相应的计算节点上面,将数据处理后再进行回收,由于一次放置多次处理,加上放置的时候可以先对数据进行索引,生成最优的放置方案,因此这种并行能达到很高的加速比,另外还值得指出的是由于NetCDF数据格式特点,在索引服务器上可以精确的知道哪一块数据放置在哪台机器上,只要备份数据没有损坏,分发数据之后一个以上的节点崩溃后,可以通过查找数据索引服务器将损坏节点上的数据复制到备份节点上,而不需要重新分发整个数据。地震数据处理中的并行计算技术研究图4.1文件系统的体系结构4.4文件系统的关键算法4.4.1算法的介绍这里首先需要介绍一下道集的概念,地震数据的每道道头信息一般有64个属性,每个属性记录着采集时的一个特征信息,根据某些道头属性组合起来的道的集合就叫做道集。比如道头属性CDP(commondepthpoint)记录某道的深度点,按CDP组成的道集就叫做共深度点道集;道头属性CMP(commonmiddlepoint)记录某道接收点的中心位置,按CMP组成的道集就叫做共中心点道集;道头属性CCP(commonconversionpoint)记录转换点的位置,按CCP组成的道集就只叫做共转换点道集。也可以按照CDP和CMP一起组成道集或更多个属性一起组成道集。并行I/0子系统的功能是:先将一个大数据的不同道集分发到有计算能力的节点上,然后将分发后的数据索引并建立数据集,用户可以构建流程并通过数据索引服务器中的数据集进行处理,处理完之后再将数据集合并进行显示和分析。设计并行文件系统首先需要考虑同一个道集不能被分散到不同的计算节点上,这样可以将并行处理的通信开销降低到最小,文件系统的数据放置算法主要包括下面几个方面的内容:(1)数据的分发(scatter),将大文件进行分片并将其分布在集群中的I/O节点上,对分片后的数据索引并建立数据集。数据分发的目的是为了进行简单的数据并行,不同的节点可以对不同的道集进行的处理而彼此之间不需要通信,因此可以先将一个大数据的不同道集分发到有计算能力的节点上处理完之后再合并,计算节点在并行处理这些数据的时候彼此之间不需要通行,可以达到很高的并行效率。(2)数据的合并/清理,将处理完的数据合并到磁带或者数据备份服务器上,并将原始数据删除。(3)数据的备份/恢复,分发数据之后一硕士学位论文个以上的节点崩溃后,可以通过查找数据索引服务器将损坏节点上的数据复制到备份节点上。算法4.1文件系统数据放置(scatter):步骤一:输入源节点数sourceNumber和目的节点数destNumber。步骤二:输入需要放置的源数据sourceFile以及相应的源数据节点sourceNode.Name,并指定不能被放置到不同I/0节点上的道集的道头firstldent,secondldent,thirdldent。步骤三:输入目的节点名destNodeName,目的数据名destFile,目的节点数据大小fileSizeLimit,如果不设置则默认为平均分配。步骤四:在客户端生成分发数据请求,并将请求配置文件上传到数据索引服务端。步骤五:数据索引服务器根据输入的sourceNodeName,sourceFile,从sourceFile中将firstldent,secondldent,thirdldent读入到内存中,在内存中采用一个大小可变的结构vector<cpSortingTable>SortTable记录排序后的道头,cpSortingTable结构体的定义为:structcpSortingTable,long_recnum;|膏recordnumber·|long_mayval;l'mayoridentvalue'llongmirval;|'minoridentvalue'|long_addval;|_additionalsortingidentvalueIllong—extval;|囊extrasortingidentvalueI|};采用STL中的稳定排序算法将内存中的道头按降序排列stablesort(SortTable.beginO,SortTable.endO,LessThanO);根据排序后的道头综合考虑道集不被分散,目的节点数据大小fileSizeLimit生成详细数据分发方案。详细分发方案中准确记录了sourceFile中的相应道在destFile中的位置。步骤六:将分发方案返回客户端,客户端显示数据分发方案。如果分发方案客户端确认分发方案符合要求,则进入步骤七,否则客户端重新编辑详细分发方案,回到步骤四。步骤七:根据详细分发方案,在源数据节点和目的数据节点上启动数据分发和接收进程,将数据从源节点复制到目的节点上。步骤八:将分发好的数据保存为数据集(数据集保存在系统的mysql数据库,数据集是一组数据的集合,数据集的配置文件中记录了数据集中每个数据所属的节点,以及数据在该节点的绝对路径)。地震数据处理中的并行计算技术研究算法4.2文件系统数据合并(merge):步骤一:从数据索引服务器上读取需要合并的数据集。步骤二:从数据集的配置文件中读取源数据sourceFile以及相应的源数据节sourceNodeName。步骤三:源数对应每个据,输入相应目的节点名destNodeName,目的数据名destFile。步骤四:在客户端生成分发数据请求,并将请求配置文件上传到数据索引服务器端。步骤五:数据索引服务器根据客户端的数据合并请求生成详细的数据合并方案。步骤六:根据详细合并方案,在源数据节点和目的数据节点上启动数据分发和接受进程,将数据从源节点复制到目的节点上。步骤七:将分发好的数据保存为数据集(数据集保存在系统的mysql数据库,数据集是一组数据的集合,数据集的配置文件中记录了数据集中每个数据所属的节点,以及数据在该节点的绝对路径1。算法4.3文件系统数据清理(merge):步骤一:从数据索引服务器上读取需要合并的数据集。步骤二:从数据集的配置文件中读取源数据sourceFile以及相应的源数据节点sourceNodeName。步骤三:在客户端生成清理数据请求,并将请求配置文件上传到数据索引服务器端。步骤四:根据客户端上传的清理数据请求,在相应的数据节点上启动数据清理进程,删除需要清理的数据。步骤五:删除对应数据索引服务器上的数据集。算法4.4文件系统数据恢复(merge):步骤一:从数据索引服务器上读取需要恢复的数据集。步骤二:从数据集的配置文件中读取备份的详细数据分发方案,包括源数据节点sourceNodeName,源数据sourceFile,包括目的数据节点destNodeName,源数据destFile,以及sourceFile中的相应道在destFile中的精确位置。步骤三:选择需要恢复的目的数据,输入替代节点名和替代数据源名,并将恢复请求上传到数据索引服务器。步骤四:根据客户端上传的恢复数据请求将已经损坏的destFile在源数据中对应的道集重新定位道替代数据节点上。步骤五:在源数据节点和替代节点上启动数据分发和和接收进程,将需要恢复的硬士学位论盘数据从源节点复制到替代节点上。步骤六:更新数据索引服务器上的数据集。4.4.2算法的性能分析和实现算法4l是整个文件系统算法的核心,在算法的步骤二可以由用户指定不能被放置到不同I/o节点上的道集的道头,这样可以保证一个道集不会被放置到不同的数据节点上,大大减小以后并行处理的通信开销。在步骤五生成的详细分发方案中准确记录了sourceFile中的相应道在destFile中的位置。假设某~个节点崩溃,数据索引服务器可以根据详细分发方案方便的从sourceFile定位丢失的数据内容并将数据放置到替代节点上,算法4.4详细描述了数据备份恢复的过程。并行框架中提供了两个标准模块在包含数据的节点启动数据处理流程并行的对一个数据集进行处理,由于一次分发多次使用,且对于简单的数据并行可以将处理数据不同部分的进程之间的通信开销降低到晟小。■㈣-卜ms…NmⅫt~…●#1fiodtl—ls㈣㈦e“mn一川出M-t“,,s一md…Im9々5190B—I—翌竺竺_JL』竺!JL_!!LJL—竺L一图42系统图形界面我们在Linux集群上实现了该并行文件系统的原型,并提供了一套易用且美观的图形界面以方便用户使用文件系统,图形界面采用OT(一个跨平台的图形界面库)实现,图4.2展示了系统数据放置的界面和数据恢复的界面,图中.Scattersetting数据分发的配置界面,RescatterSetting是数据恢复的界面。地震数据处理中的并行计算技术研究4.5应用实例下面采用SBS(ARCO地震测试程序软件包)中的三维叠后深度偏移算法作为一个完整的应用实例进行阐述【431。SBS中的应用算法是以ZhimingLi(Geophysics,1991)的隐式有限差分算法为基础的。改算法首先处理地面记录到的时间和空间上的三维地震波场p(t,x,Y,z一0)。经傅立叶变换,数据转换到瞬时频率域p(f,x,y,z-0)。根据标量波动方程的近似有限差分的隐式解发,可以获得地下每个深度步长的等效波长p(f,x,Y,z—z1)~厂笔而iw丽aSl6zP1,(墨y,z)(1+卢S)(4.1)14.--其中P为地震波场,W为角频率,v(x,Y,z)是传播速度,a,卢为展开系数,并且有如下关系:s一%户§+》旷觑。dV‘n2,上述方程的求解称之为”向下延拓”。若给定向下延拓波长P(/,z,1,,z—z1)。则从其中提取时间面(x,y)可以获得地下图像t(x,Y,Z—z1),其中P(f,毛.),,z—z1)是所有频率的总和。在输出图像空间内对每个深度步长递归求解上述方程,每次得到一个(x,y)面。这些面累积起来构成了一个完整的三维图像t(x,Y,z),地震数据处理可以被看作是一个很规则的采样组,其中最后一维可分配给并行机上的所有处理器。我们利用图4.3中三维偏移算法的第一步处理来说明这一概念。数组的Y维p(t,x,),)分配给每个处理器,每个节点管理着一片f—x切片,并行地进行傅立叶变换生成p化Y,厂)。在初始化变换和转置以后,数据根据深度步长向下延拓。由于图像需要所有的频率成分,因此,数据必须在处理器之间进行移动。正如第2章中描述的扇入/扇出实例一样,当某个节点从其他节点收集数据时。可以采取主一从方式,但是这有可能导致输入/输出的瓶颈效应,采用转置操作可以消除这种瓶颈效应。每个处理器首先执行局部求和p似,Y,,,n)->I(x,),,n)(在此n为处理器个数)。然后图像数组通过各个处理器进行转置,生成t(x,n,y)(在此y为并行分布维)。给定t(x,y)(y表示并行分布维)以后,可以进行频率成分的局部求和。数据写盘可采用并行方式,即每个处理器往盘上写图像条带。图4.3是整个算法的数据流图,先是数据通过文件系统放置到各处理节点上,数据在每个节点上经历了傅立叶变换,数据转置,最后是将处理完成的数据合并进行数据的显示和分析。硕士学位论文////X/彳么2黼荡///.数据觚.—’——、迤之=;乡/.多彳·/声/c‰拉,}_矿—/\...///≤乡懈粗-///彳r3谢.。y..∥一德图4.3系统应用实例4.6实验设计并行文件系统的最终目的是建立高效的并行模型对数据进行处理,下面将一组真实的地震数据在集群上并行文件系统上进行实验,实验集群由8个节点组成,其中每个节点两个处理器,处理器为Intelxeon3.06HZ,512M内存。前端总线为800MHZ。采用100M以太网相连。操作系统为Redhat9。处理数据是某探区一组二维地震数据测线采集的数据,数据处理流程是先通过文件系统将地震数据分置到计算节点上,在计算节点上对分解后的数据进行二维偏移运算。实验采用了并行地震数据处理中最常见的作业复制并行计算模型,分别在4,8个节点的集群上进行了实验,处理流程如图4.4所示,其中在集群上并行处理的时候包括两部分,将数据放置到计算节点上的时候和数据处理的时间。表4.1、4.2是采用PVFS文件系统在Linux集群上的的实验结果,表4.3、4.4是采用本文专用文件系统在Linux集群上的实验结果。Il读lll读读I读★I二维偏移+写★l二维偏移’+I二维偏移I二维偏移●写+写★写图4.4作业复制表4.1PVFS系性能测试(4个节点)处理时间加速比\\蝴40M1.73G文件大,J_\1.84G17.3G单机处理时间8m5s6h6m57s6h45m15s64h47n120s数据放置时间10s6m48s6m50s并行效率66.5%61%60.3%51.8%2m52s2h22m58s2h40m53s30h8m12s2.662.452.412.071h9m44s表4.2PVFS系性能测试(8个节点>数据放置时间处理时间加速比并行效率62.4%57%‘≥《文件大小\40M1.73G1.84G17.3G单机处理时间8m5s6h6m57s13s1m24slhl3m28s1h23m2s15hllm30s5.04.564.483.967m7m25slhlom8s6h45m15s64h47m20s56%49.5%表4.3专用文件系性能测试(4个节点)≥《文件大小\40M1.73G1.84G17.3G单机处理数据放置时间时间8m5s12s处理时间2m6s1h33m23slh45m46s15h46m41s加速比3.53.63.65。3.76并行效率87.5%90%91%94%6h6m57s6h45m15s64h47m20s8m32s9m5s1h27m10s表4.4专用文件系性能测试(8个节点)‘≥≮文件大小\40M1.73G1.84G17.3G单机处理数据放置时间时间8m5s6h6m57s6h45m15s64h47m20s16s处理时间加速比并行效率56s42m40s48m22s8h5m57s6.736.917.027.4284%86.3%87.7%92%8m45s9m17s1h27m40s从上面实验结果可以看出,虽然专用文件系统数据分发的时间比PVFS稍微要长,但就总体性能而言,对于并行地震数据处理中最常见的简单并行采用PVFS并行文件系统所达到的并行加速比明显要低于本文提供的专用并行文件系统,且文件越大并行效率越低,而采用本文提供的专用文件系统不仅可以达到很高的加硕士学位论文速比,且文件越大这种优势越明显、并行效率越高,非常适合海量的并行地震数据处理。4.7小结本章主要从体系结构,数据放置算法,数据的合并/清理,数据的备份恢复方面描述了并行I/O子系统的实现,并给出了一个完整的应用实例,文件系统针对地震数据的特点采取了一种全新的数据放置算法,通过对文件系统的数据的备份恢复算法可以看出,系统可以允许多个节点崩溃而不需要重新分发数据,相对于pvfs文件系统在容错方面有较大的改进,此外我们还在集群上对文件系统的性能进行了小规模的初步测试,实验表明对于并行地震数据处理中最常见的简单并行可以达到很高的加速比,且文件越大这种优势越明显,非常适合海量的并行地震数据处理。地震数据处理中的并行计算技术研究第5章基于MPI+openMP模型的地震数据处理本章贡献在于将现有的基于消息传递(MPI)的并行地震处理模型与共享存储(OpenMP)模型相结合,实现了一个适合于SMP集群并行地震数据支撑库,将涉及到消息传递的并行地震数据操作以直观的API的形式提供给开发人员,本文利用支撑库提供的API开发了一些测试模块,实验证明,支撑库可支持现有地震数据处理和显示模块的多种并行计算模型,并且能够获得较高的并行加速比和计算效率。5.1SMP集群的体系结构国内外目前流行的并行计算机体系结构主要有SMP(symmetricmultiofprocessing,对称多处理机)、MPP(massiveparallelprocessing)、COW(clusterworkstation)和SMP机群【21。这其中SMP是一种支持两个或两个以上的CPU以同步数据处理方式运行的技术。运用此技术的计算机系统中,所有的CPU共享系统资源,这样要比同型号CPU的单处理器系统快上很多。正因如此,此技术较多地应用于网络、图像等对计算机速度或多任务处理要求比较高的领域。随着硬件技术的进步,小规模配置的SMP成为可能,这也使得利用SMP作为并行计算机的计算节点成为可能,从而构成了SMP集群体系结构。图5.1显示了具有N个节点(每个节点为4.CPU的SMP)的SMP机群的体系结构。图中,P/C指的是SMP节点中的处理器(Processor,CPU)和该处理器的局部高速缓存(Cache)。在SMP中,多个处理器通过总线或交叉开关连接起来,并通过它们访问共享的内存区域和I/0设备。SMP机群则是通过通信网络(如以太网或高性能开关)把多个SMP节点连接起来,并且节点间可以通过消息传递进行通信。甲甲甲甲甲甲甲甲甲甲甲甲囱豳囱囱豳囱总线或交叉开关总线或交叉开关通信网络:如啪et,以太网或者高性能开关图5.1SMP集群体系结构硕士学位论文5.2MPI和OpenMPMPI相关概念5.2.1MPI提供了一种与语言和平台无关,可以被广泛使用的编写消息传递程序的标准。用它来编写消息传递程序不仅实用、可移植、高效和灵活,而且和当前已有的实现没有太大的变化。MPI是一种标准或规范的代表,而不特指某~个对它的具体实现。迄今为止,所有的并行计算机制造商都提供对MPI的支持,可以在网上免费得到MPI在不同并行计算机上的实现,一个正确的MPI程序,可以不加修改地在所有的并行机上运行【16】。由于MPI是一个库而不是一门语言,因此对MPI的使用必须和特定的语言结合起来进行。FORTRAN是科学与工程计算的领域语言,而C又是目前使用最广泛的系统和应用程序开发的语言之一,因此对FORTRAN和C的支持是必须的。MPICH是一种最重要的MPI实现,是一个与MPI.1规范同步发展的版本,每当MPI推出新的版本,就会有相应的MPICH的实现版本,我们使用的MPICH的版本是MPICH.1.2.1,它支持部分的MPI.2的特征。Argonne国家试验室和MSU对MPICH作出了重要的贡献。一个MPI程序的框架结构可以用图5.2表示:图5.2MPI程序的框架结构在MPI-1有128个调用接口,在MPI.2中有287个,应该说MPI是比较庞大的。但是,从理论上说,MPI所有的通信功能可以用它的6个基本的调用来实现,掌握了这6个调用就可以实现所有的消息传递并行程序的功能。下面给出MPI对C语言的六个基本调用。地震数据处理中的并行计算技术研究(1)MPI初始化:intMPIInit(int*argc,char¨argv)。MPIINIT是MPI程序的第一个调用,它完成MPI程序所有的初始化工作,所有MPI程序的第一条可执行语句都是这条语句。(2)MPI结束:intMPI—Finalize(void)。MPIFINALIZE是MPI程序的最后一个调用,它结束MPI程序的运行,它是MPI程序的最后一条可执行语句,否则程序的运行结果是不可预知的。(3)当前进程标识:intMPICommrank(MPICommcomm,int*rank)。这一调用返回调用进程在给定的通信域中的进程标识号,有了这一标识号.不同的进程就可以将自身和其它的进程区别开来,实现各进程的并行和协作。(4)通信域包含的进程数:intMPICommsize(MPICommcomm,int*size)。这一调用返回给定的通信域中所包括的进程的个数,不同的进程通过这一调用得知在给定的通信域中一共有多少进程在并行执行。(5)消息发送:intMPI—Send(void·buy,intcount,MPI_Datatypedatatype,intdest,inttag,MPI—Commcomm)。MPISEND将发送缓冲区中的count个datatype数据类型的数据发送到目的进程,目的进程在通信域中的标识号是dest,本次发送的消息标志是tag,使用这一标志,就可以把本次发送的消息和本进程向同一目的进程发送的其它消息区别开来。MPISEND操作指定的发送缓冲区是由count个类型为datatype的连续数据空间组成,起始地址为bul'。注意这里不是以字节计数,而是以数据类型为单位指定消息的长度,这样就于具体的实现,并且更接近于用户的观点。其中datatype数据类型可以是MPI的预定义类型,也可以是用户自定义的类型。通过使用不同的数据类型调用MPISEND,可以发送不同类型的数据。(6)消息接收:intMPI—Recv(void幸bu/,intcount,MPI—Datatypedatatype,intsource,inttag,MPI—Commcomm,MPI—Status}status)MPIRECV从指定的进程source接收消息,并且该消息的数据类型和消息标识和本接收进程指定的datatype和tag相一致,接收到的消息所包含的数据元素的个数最多不能超过count。程序与代码:本文说的程序不是指以文件形式存在的源代码、可执行代码等,而是指为了完成一个计算任务而进行的一次运行过程。进程(process):一个MPI并行程序由一组运行在相同或不同计算机或计算结点上的进程或线程构成。为统一起见,将MPI程序中一个参与通信的个体称为一个进程。在Unix系统中,MPI的进程通常是一个Unix进程。在共享内存或消息传递混合编程模式中,一个MPI进程可能代表一组Unix线程。进程组(processgroup):指一个MPI程序的全部进程集合的一个有序子集。硕士学位论文进程组中每个进程被赋于一个在该组中唯一的序号(rank),用于在该组中标识该进程。序号的取值范围是零到进程个数。通信器(communicator):通信器是完成进程间通信的基本环境,它描述了一组可以互相通信的进程以及它们之间的联接关系等信息。MPI的所有通信必须在某个通信器中进行。通信器分域内通信器(intracommunicator)和域间通信器(intercommunicatof.)两类,前者用于属于同一进程组的进程间的通信,后者用于分属两个不同进程组的进程间的通信。域内通信器由一个进程组和有关该进程组的进程间的拓扑联接关系构成。MPI系统在一个MPI程序运行时会自动创建两个通信器,一个称为MPICOMMWORLD,它包含该MPI程序中的所有进程,另一个称为MPICOMMSELF,它指单个进程自己所构成的通信器。序号(rank):序号用来在一个进程组或通信器中标识一个进程。MPI程序中的进程由进程组、序号或通信器、序号所唯一确定。序号是相对于进程组或通信器而言的;同一个进程在不同的进程组或通信器中可以有不同的序号。进程的序号是在进程组或通信器被创建时赋予的。MPI系统提供了一个特殊的进程序号MPIPROCNULL,它代表空进程(不存在的进程)。与MPIPROCNULL间的通信实际上没有任何作用。消息(message):MPI程序中在进程间传送的数据称为消息。一个消息由通信器、源地址、目的地址、消息标签和数据构成。通信(communication):通信指在进程之间进行消息的收发、同步等操作。5.2.2OpenMP相关概念共享存储模型(如图5.3所示_),其底层硬件为一序列的处理器,这些处理都访问同一个共享存储器。由于所有的处理器可以访问内存中的同一个位置,因而它们可以通过共享变量进行交互和同步【171。图5.3共享存储模型在共享存储的并行程序中,标准的并行模式为fork/join式并行。当程序开始执行的时候只有一个叫做主线程的线程存在。主线程执行算法的顺序部分。当遇到需要进行并行运算时,主线程派生出一些附加线程。在并行区域内,主线程和这些派生的线程协同工作。在并行代码段结束时,派生的线程退出或者挂起,同时控制流回到单独的主线程手中,我们称为会合。共享存储模型和消息传递模型的一个关键区别在于消息传递模型中的所有进程存活于整个程序的执行过程当中,而在共享存储模型中,在程序的开始和结地震数据处理中的并行计算技术研究束时存活的线程属均为一,而在整个程序的执行过程中线程数会动态发生变化。你可以用MPI在多处理机器上编写并行程序,然而你还可以用专门为共享存储环境量身打造的编程语言来得到更优的性能。OpenMP是作为共享存储的标准而问世的。它是为在多处理机上编写并行程序而设计的一个应用编程接口。它包括一套编译指导语句和一个用来支持它的函数库。OpenMP是通过Fortran.C和C++结合来工作的。下面将简要介绍如何用OpenMP在共享存储的环境下编写并行程序。OpenMP由一套功能强大的编译指导语句组成;parallel,用在一个代码段之前,知识这段代码将被多个线程并行执行。for,用在一个for循环之前,每个循环之间必须无相关性,从而可以被分到不同的线程中并行执行parallefor,是parallel和for这两个编译指导语句的结合sections,出现在一序列可能会被并行执行的代码之前parallelsections,是parallel和sections这两个编译指导语句的结合critical,用在一段代码的临界区之前singal,出现在一段只被单个线程执行的代码之前由于本章中需要用到OpenMP并行操作绝大部分以for循环的形式表现,因此需要着重介绍一下在OpenMP中怎样指示for循环的迭代可以被并行地执行,比如参考下面的循环:for(i=first;i<size;i+=prime)marked[i]=l很明显,在这个循环的每次迭代之间不存在相关性。在OpenMP中,我们只需要简单的告诉编译器一个for循环可以被并行执行;编译器会负责生成派生和会合线程以及调度并行迭代的代码,并将循环的迭代分配给线程。就像为预处理器提供信息的其他代码行一样,编译指导语句以撑开头。编译指导语句在C或者C++程序中的文法如下:#pragmaomp<restofpragma>当这一行下面紧紧跟着一个for循环的时候,它将指示编译器将for循环并行化:却ragmaomp<restofpragma>fbr(i--first;i<size;i+=prime)marked[i]=l为了使编译器能够成功的将顺序执行的循环转化为并行执行,在分析控制子句时运行系统必须能够得到所需信息以确定循环迭代的次数。因此for循环的控制子句必须具备规范格式,并且,for循环中不能包含允许循环提前退出的语句。比如,语句break、return、exit、goto以及此类循环外的标记。然而这里允许语句continue的存在,因为它的执行不会影响到迭代的次数。硕士学位论文5.2.3混合编程模型SMP体系结构的特点是基于共享存储,处理器间通信开销低,这有利于性能提高,同时编程容易,但它的缺点是可扩展性差。其编程模型主要是共享变量模型,实现标准有OpenMP和Pthreads等。MPP和COW体系结构的特点是基于分布式存储,可扩展性好,但处理器间通信开销过大,而且编程比较困难。其编程模型主要是消息传递模型,实现标准有MPI,PVM等。SMP机群体系结构也称作CLUMPS(clustersofmultiprocessors),它综合了上述两者的优点,成为并行计算机体系结构的主流发展趋势。SMP机群同时具备节点内共享存储和节点间分布式存储的特点,传统的共享存储体系结构和分布式存储体系结构下的编程模型已经不再完全适用于它.如果我们想要利用SMP机群中别的节点加速求解,就必须考虑采用OpenMP+MPI的混合编程模型142,43】。混合编程模型是指在SMP机群体系结构下,同时使用共享变量和消息传递两种编程界面的模型。这是另外一种流行的SMP机群编程模型。这种模型是专门针对SMP机群提出的,它充分利用了SMP机群的特点,节点内利用共享存储进行通信,节点间采用分布式存储的消息传递进行通信。相应的它使用了共享变量和消息传递编程的混合,例如使用OpenMP和MPI的混合。它的优点非常明显,因为它是针对SMP机群体系结构提出的,是SMP机群体系结构下编程模型中性能最高的。但它也有着难以使用的缺点,因为程序员需要掌握两种编程界面,无疑对程序员来说困难一些144。471。5.3并行地震数据处理支撑库无论大规模并行计算机的并行处理系统的研发,还是设计基于工作站集群的并行处理系统,均需对地震数据处理和解释中的多种模块所适宜的并行处理模型进行深入探索。在能够有效利用这些高性能计算资源前,要解决的问题之一是软件开发工具的设计,其目的是帮助建立新的并行程序,以及把现有的串行程序并行化,避免在开发、调试、测试并行程序过程中花费过多精力,从而简化地球物理学专业人员的开发工作。本文从大量并行应用程序(特别是中粒度和大粒度并行应用程序)中常见的并行程序设计技术基础上抽象出来有意义的、通用的并行结构,本节先介绍了支撑库怎样从宏观上对通用并行模型提供支持,简化程序员的开发工作,然后讨论了怎样有效地将OpenMP技术融入这些基于MPI的并行结构,以达到既不增加程序员编程的负担,又充分利用SMP集群性能的目的。5.4基于MPI的并行模型支撑库将一些难以掌握的MPI消息通信操作用C++类封装,并以直观的API41地震数据处理中的并行计算技术研究的形式提供给程序员。程序员可以在高层次模型领悟和解决问题,而不必关心不必要的细节。现有应用广泛的基于MPI的并行模型有作业复制,流水模式、扇出/扇入模式、主从模式以及上述各种模式的混合,上述各种通用的并行处理算法在2.5节已经作过详细讨论,在此不在赘述,下面将详细描写怎样利用系统提供的API简述上述算法的编写。流水线,模块的编写人员可以通过系统提供的receiveTrace0方法得到上一级模块传送下来的数据,利用sendTrace0方法将处理好的数据传送到下一级模块,模块编写人员不需要知道上一级模块和下一级模块运行在那个节点上。一个简单流水模式并行滤波模块如算法5.1。算法5.1流水模式并行滤波模块ProcedureTraceFILTER::exe《)t=receiveTraceO;//得勤上一个模块的输入道l代吣;||获取数据成功FILTER(t);//将数据进行滤波运算sendTrace(t);//将数据发送蓟T一级模块returnOK;endif;returnFAIL;EndProcedure扇出/扇入模式,在支撑系统中可以看做是一种特殊类型的流水线,系统调用scatterTrace0可以将上一级模块处理后的数据”扇出”到下一级模块的多个节点上,scatterTrace0调用提供了多种分解数据的方法,例如按照道或者道集平均分解,按照道集分解需要程序员指定道集的道头。程序员通过mergeTrace0在复制的模块下一级合并”扇出”的数据,模块的编写人员同样不需要了解流程中相应的模块具体运行在那些节点上,在扇出的模块可以通过类似流水线中的receiveTrace0方法得到上一级模块扇出的数据,模块的编写人员同样可以不需要了解上一级模块是怎样将数据分解,数据处理完毕之后通过sendTrace0将数据传送到下一级模块。主从模式,在流程执行的时候,框架将根据用户的设置为每个主从模式的的模块分配一个MPI子通信域(MPIComm),模块的主节点和从节点都属于这个子通信域,主节点在通信域中的编号为0,主从模式的模块可以在运行的时候通过getMyComm0动态得到系统分配的子通信域,模块编写人员可以在该通信域编写主从模式的MPI应用程序。主从模式的示例代码如下,需要指出的是每一个分支的主节点在子通信域中的标识号被设置为O,所以从节点可以根据这个进程号找到自己通信域中的主节点。硕士学位论文算法5.1主从模式并行模块ProcedureIntparallelModule::runOMyProcess//予通信域进程总数MPI—CommmyComm=』一·>getMyCommO;&myProcess);&myld);MPl_Comm_size(myComm,MPI_Comm—rank(myComm,lf(-lm』>isDataSourceO)//主节点getTracesO//从上一个模块得勤输入数据|l将读取的道发送劲从节点SendTrace(trace,destNodeld,99,myComm);jEndifElse’reveiveTrace(trace.0,99.myComm)//从主节点得勃输入道process(trace)//处理sendTrace(trace。0.99.myComm)//将处理后的数据发绘圭节点EndelseEndProcedure最后是混合模型,它是上述两种或三种模型的结合。这在地震数据处理中很常见。上述多种地震并行处理模型的设计的目的是为使系统具有最大的吞吐率和最大效率。其说明如图5.4,这九个作业的混合是把并行处理用于整个处理任务的一个极好的实例。2If.、。IrIkl、L~P2+cI+工IIjI▲lI、P1r【1Ibe1一,巧1e2.一’f2+1【√一:\·,二M\Ah1/h硝J2/’工2.■叫-.—+、2图5.4并行地震处理模式复合作业A,L和M在单个节点上执行,类似于在常规机器上执行。作业b、C、d采用3步流水线在三个节点上处理。作业e和f各复制成两份,组成两个两步流水线在4个节点上并行工作。作业G采用数据分解,占用4个节点。作业h、i、j、k构成两个复式流水线作业。流水线有四步,第一和第二用两个节点作数43地震数据处理中的并行计算技术研究据分解,整个作业在12个节点上进行。作业11和O采用两步流水线,每步用两个节点作数据分解作业,整个作业占用4个节点。最后,作业P用两个复制进程在两个节点上运行。支撑系统通过封装openPBS的集群管理工能实MPP节点上的作业管理,openPBS是一个批处理作业和计算机系统资源管理软件包。openPBS的组件包括四个主要的组件:命令组件、作业服务器、作业执行组件和作业调度器。它原本是按照POSIXl003.2d批处理环境来开发的。这样,它就可以接受批处理作业、shell脚本和控制属性,作业运行前对其储存并保护,然后运行作业,并且把输出转发回提交者。openPBS可以被安装并配置运行在单机系统或多个系统组来支持作业处理。由于PBS的灵活性,多个系统可以以多种方式组合,实验证明通过对OpenPBS功能的封装支撑系统可以很好的实现上述复杂的作业管理,将作业提交到指定的节点上。5.5MPI+OpenMP混合模型从地震数据处理与解释一体化系统的全局出发,本系统应该基于MPI消息传递接口,来满足多数地震数据处理与显示模块的并行编程需求,但是这并不能充分利用SMP集群的性能,MPl只是在宏观上提供了对通用并行结构的支持,但对那些以多个道或道集为处理单元、且各处理单元之间涉及更多边界信息共享或通讯的模块,应用MPI难以实现,这应该采用节点内共享存储机带lJ(OpenMP')来实现数据共享,提高并行处理的性能和加速比。节点内的OpenMP多线程并行计算,有粗粒度并行化和细粒度并行化两种方法。粗粒度并行化是一种类似SPMD(SingleProgramMultipleData)编程模式的方法。在这种方法中,OpenMP的编译制导指令通常使用在程序的最外层,即OpenMP首先在主程序中生成多个线程(一般情况下,OpenMP的多线程紧随着MPI进程的生成而生成.),每个线程类似于SPMD编程模式中的一个进程,然后使用这些线程就类似于使用SPMD编程模式中的进程,在这种方法中,除了省去数据分配的操作外,程序员使用多线程等同于使用MPI的多进程,因而编程依然非常复杂。而且当混合模型的两级并行机制一同使用时,这种编程复杂性将更大。细粒度并行化是指利用OpenMP只并行求解循环部分的计算,又称为循环级并行化。细粒度并行化的方法是在需要用多线程求解的原串行代码中的循环代码段外插入OpenMP的编译制导指令,对串行代码中的其它代码则不并行化。因而在这种方法中,只有在循环计算的部分是多线程并行求解,而在其他代码段,则是只有单个MPI进程求解[48-50】。从上面的分析可以看出粗粒度OpenMP并行化对提高本节提到的通用并行结构并没有多大的作用,而且增加了程序员编程的难度,如果选择细粒度的并行硕士学位论文化将可以达到性能和易用性两方面兼顾,MPI进程中可以在#progmaompparallel编译制导所标示的区域产生线程级并行而在区域之外仍然是单线程,混合编程可以充分利用两种编程模式的优点:MPI可以解决多处理器间的交互,而OpenMP提供的轻量级线程可以很好地解决每个多处理器内部各处理器间的交互。图5.5显示了OpenMp与MPI混合编程模型:OpenMP与MPI混合编程模型步骤一:步骤二;在每个节点上只有一个MPI进程,这个MPI进程首先初始化;每个节点上的MPI进程可以作一些局部计算,时也可以进行节点问的通信;步骤三:在进程内的主要计算部分通常是循环部分,采用OpenMP线程并行求解;步骤四:在求解部分结束后,MPI进程也可以做局部计算、通信或同步;全部计算工作结束后,MPI进程结束;步骤五:OpenMP多线程求解部分和MPI进程局部计算、通可以穿插进行,当步骤六:以上是以两个节点、每节点四个线程为例,当有更多节点、节点内更多线程时,MPI进程和OpenMP多线程计算完全类似。nodelnode2图5.5SMP集群混合编程模型MPI+OpenMP下面给出一个混合模型的应用实例:例如构建如图5.6流程:模块input占用一个处理器,模块bandps扇出为两份,占用两个处理器,模块output占用一地震数据处理中的并行计算技术研究个处理器,整个流程占用4个处理器。流程运行过程中input将读入的道集发送到bandps(:慌数据处理中用来去噪音的模块),bandps可能会对一个很大的道集进行处理,流程构建器允许用户添加OpenMP代码优化bandps模块中处理相应道集的for循环。bandps中处理道集的代码如算法5.3。processorP1modulep2P3p4图5.6混合模型并行地震数据处理流程算法5.3ProcedureOpenMp与MPI混合模型滤波模块BANDPS::exec0ReceivePanel(paneO//从上一个模块得到道集Omp_setnum..threads(2);#pragmaompparallel#pragmaompforprivate(i)For(i=O;i‘panel.sizeO;t++)ComputationEndfo,sendPanel(paneOendProcedure5.6实验以下是利用支撑库中提供的API编写的地震数据处理模块在Linux集群上的实验结果,实验集群由8个节点组成,其中每个节点两个处理器,处理器为Intelxeon3.06HZ,512内存。前端总线为800MHZ。采用100M以太网相连。操作系统为Redhat9。处理数据是某探区一束二维地震数据测线采集的数据,共240200道,每道2001个采样点。采用图5.6所示的作业流程。流程中使用模块都采用系统提供的API编写。这里我们省略了模块的参数设置,以及将流程提交给集群执行的过程。在实硬士学位论文验中bandps占用2,4,6个处理器,数据输入和输出模块分别另外占用一个处理器,表51是没有在bandps中添加OpenMP代码的并行作业流程与窜行作业流程运行时间比较。表5.2是添加了OpenMP代码的并行作业流程和串行作业流程时间比较。从上面两表我们可以看出并行处理加速比与节点数目成正比,线性加速,另外,加入了OpenMP代码的并行流程的并行效率要明显高于单纯的MPI模式。国5.7比较了两种模型的加速比,从图上可以看出,适当的时候采用MPI+OPcnMP混合编程的性能要明显高于单纯的MPI编程模型。表5序号Cpu数lMPI模型在集群上的测试结果驻机时问(upl、加速比井行效率3h20m2s23239650458%66%63%裹5.2序号Cpu数1MPI+OpenMP模型在集群上的测试结果驻机时I'目(MPI+OpenMPl加速比并行教率2+24+26+229352270473%87%88%9876蓑曼4321O一5一:∥t,二7//,///1/一处理机数固57流程的加速比5.7小结支撑库亦是并行地震数据处理支撑框架的子项之一,开发支撑库的目的在于将底层基于MPI的消息通信机制封装,使地球物理专业人员不需要掌握分布式地震数据处理中的并行计算技术研究软件开发技术而专注于地震数据处理和解释模块算法的开发,缩短将串行地震数据处理模块移植到集群的时间。而此外,支撑库首次将MPI+OpenMP混合并行编程模型引入并行地震数据处理系统中,对现有并行地震数据处理与显示中各模块的高效并行提供了良好的支持环境,提高机群计算系统计算和存储资源的利用率。地震数据处理和解释系统是一个复杂而庞大的软件系统,已经设计出的模块数多达200多个,本文虽然对一些模块的并行处理效率进行了实验,但仅是初步性的,要设计支持所有并行处理模块中的有效的并行计算模型和通信模式,显然是一个长期的过程,但注意到地震数据处理在工业和避灾减灾等领域中的重要地位,对支撑库的进一步深入理论研究和实验探索无疑具有相当意义。硕士学位论文总结和展望在攻读硕士学位期间,随着项目和课题的进展,对和地震数据相关的并行I/O和并行数据处理技术进行了学习、研究和实践。已经完成的工作如下:(1)了解了工作站网络环境下提供高性能的I/O所采取的主要解决方案,对并行地震数据处理系统中,怎样建立并行模型对数据服务器上的海量地震数据进行并行处理进行了较为深入的研究。(2)根据并行数据处理的特点设计并实现了网络化并行数据处理平台。该平台首先可以为开发者提供一个集成的包含语法分析等多功能的编辑环境。其次,该平台应可以为模块开发者提供一个强大的、分布的网络编译、调试和模块提交环境。平台还为实验人员提供一个集成的实验环境,内容包括数据处理数据,数据显示和分析。(3)在深入分析原有文件系统和基于NetCDF地震数据格式特点的基础上,为并行地震数据处理系统设计了一个基于NetCDF的高效,高可靠的专用并行文件系统,专用文件系统采用一种全新的数据放置算法,且相对现有并行文件系统在容错,数据备份/恢复机制上有较大的改进。(4)将现有的基于消息传J整(MPI)的并行地震处理模型与共享存储(OpenMP)模型相结合,实现了一个适合于SMP集群并行地震数据支撑库。虽然本文设计并实现了一个完整的并行地震数据处理支撑框架,并在I/O,并行地震处理模型等方面对大规模并行地震数据处理进行了深入的研究,但仍然存在下面几个方面的问题:(1)网络化的并行地震数据处理中间件仍然采用的是比较过时的C/S模式。下一步工作更加的模式应用到并行地震数据处理系统中,研究网格环境下地震等灾变分析模拟支撑系统的关键理论与技术。(2)并行文件系统只能处理NetCDF数据格式,而地震分析模拟中不仅有二维、三维、四维等不同维数的数据,且数据常表示成NetCDF或SEGY等不同格式,下一步工作中将研究异构数据源的处理,使得并行文件系统可以支持不同类型的数据格式。(3)由于实验条件,本文的实验都是小规模的初步实验。下一步的工作是,在前期研究工作的基础上,最终研究目标是将中间件理论与网格计算技术密切结合,研究网格环境下地震等灾变分析模拟支撑系统的关键理论与技术,给地震和强台风等重大灾变模拟与分析提供一个稳定可靠、可扩展、适应计算和网络技术演化需求的计算环境或中间件。使得地震和其它灾变的专业人员可以利用本支撑系统透明地利用其专业理论与方法,开发具有良好成长性的地震数据处理中的并行计算技术研究数值求解、分析和预测系统,而不必关心和注意他们所不擅长的最新的计算机技术和软件开发理论与方法。注意到灾变计算、分析和模拟的特点,结合我们在面向地球物理支撑软件设计理论与方法上的积累,在后续的研究中将解决网络环境下地震灾变模拟系统中各种并行和分布式环境的异构、数据源的异构,有效的作业调度和容错恢复机制,以及并行I/O的设计等关键理论与技术问题。最终目标是设计和研发一个可以在任意一个集群/网格或者其他分布式计算环境上运行的灾变模拟分析中间件系统,为我国防灾减灾系统的构建在软件设计和开发理论和方法上奠定基础,促进我国相关学科的研究与进步,为保障重大工程的安全建设和国家财产的安全提高技术支撑。由于本人时间及精力的,论文也存在一些不足之处,但仍希望通过本文的研究,能对目前地震数据处理及分析问题的解决提供一点思路。硕十学位论文参考文献【1】(美)亨尼西,(美)帕特森,郑纬民等译,计算机体系结构:量化研究方法.第三版.北京:电子工业出版社,2004【2】陈国良.并行计算机体系结构.第一版.北京:高等教育出版社,2002【3】AveryChing,KeninColoma,Alok.ChallengestheGrid:StatusforParallelI/0inGridComputing.In:EngineeringandPerspective,American:ScientificPublishers,2006,625-632【4】杨红霞,赵改善.21世纪的地震数据处理系统,石油物探.2001,13(4):126.141【5】ChingAvery,LiaoWei—keng.EvaluatingI/OCharacteristicsandthe20thMethodsforStoringStructuredScientificData.In:ProceedingsofInternationalParallelandDistributedProcessingSymposium.IEEE,2006,1-15【6】KeninColoma,AlokChoudhary,AveryChing,eta1.PowerandPerformanceinI/OforScientificApplications.In:ProceedingsoftheNextGenerationSoftwareWorkshop,IEEE,2005,1—8【7】李冀,李晓明,陆桑璐.数据筛选技术在并行I/0中的应用.电子学报,2001,29(2):249.252【8】CarnsP,LigonW,RossR,eta1.PVFS:AParallelVirtualFileSystemthe4thAnnualLinuxShowcaseforLinuxClusters.In:ProceedingSofandConference.Atlanta:GA,2000,317-327【9】张若洋,吕杨.PVFS在linux集群上的应用研究.西南科技大学学报,2006,21(1):10.17【10】Theparallelvirtualfilesystem2(PVFS2).http://www.pvfs.ore,/pvfs2/,2007..12..20【11】SeamonsKE,ChenY,JonesP.ServerdirectedcollectiveI/OinPanda.In:ProceedingsofSupercomputing.California:ACM,1995,57—62MIMDMultiprocessors.ACMTransactionson【12】KotzD.Disk—DirectedFOforComputerSystems(TOCS).1997,15(1):41—74geophysicalprocessing.TheLeadingEdg,1996,【13】WesleyPerkins.Parallel15(12):1359—1361【14】王宏琳,高绘生.地震并行处理模式与应用框架.计算机学报,2001,24(2):202.208【15】魏嘉.可扩展的地震数据并行处理.石油物探.1997,4:12—17【16】都志辉,高性能计算之并行编程技术.MPI并行程序设计.北京:清华大学出版51地震数据处理中的并行计算技术研究社,2001【17】陈文光,武永卫.MPI与OpenMP并行程序设计.北京:清华大学出版社,2004【18】张云泉.高性能计算一体系结构,并行编程,性能评价与展望.http://www.rdcps.ac.cn/,2007—12—22【19】黄铠,徐志伟.可扩展并行计算-技术结构与编程.北京:机械工业出版社,2000【20】KurtGeihs.MiddlewareChallengesAhead.computerIEEE,2001,34(6):24—31【21】DougWille.Immersiveenvironmentsenhanceteamcollaboration.WorldOil,1999,220(5):72—74【22】FredAminzadeh.Futuregeophysicaltechnologytrends.TheLeadingEdgeofGeophysics,1996,15(6):729-735【23】李蕾,方明科,杜欣.计算机机群技术及其在Web领域中的应用.现代计算机.2006,5:60—62【24】DimitriBevc.Internetbasedseismicprocessing:Thefutureofgeophysicalcomputing.In:AnnualMeetingAbstracts,SEG,2000,2119—2122【25】WilliamKAylor.Abusinesscaseforseismicdatatransmissionbysatellite.In:AnnualMeetingAbstracts,SEG,2000,187-235技术.2003,163:43.45Chang.3-DprestackKirchhoffdepthmigration:Fromprototypetoproductioninamassivelyparallelprocessorofgeophysicalcomputing.In:AnnualMeetingAbstracts.SEG,2000,2119-2122Dai.ParallelprocessingofPrestackKirchhoffTimeMigrationonaPCCluster.ComputersandGeosciences.2005,31(1):891·8991】ChenLi.Parallelperformanceoptimizationoflarge·scaleunstructureddatavisualizationfortheearthsimulator.InProceedingsoftheFourthEurographicsWorkshoponParallelGraphicsandVisualization.2002,133—140222—226658.669报,2006,28(2):72-75【26】杨晓云,庄建军,李淑英.集群技术在石油地震处理中的应用研究.高性能计算【27】赵改善.集群技术及其在石油工业中的应用.石油物探.2001,40(3):118.126【28】Herman【29】李家康.大规模并行处理机三维叠前深度偏移.石油物探.1998,37(2):77.87【30】Hengchang【3【32】陈莉.大规模数据场的并行可视化.浙江大学学报(理学版).2001,28(2):【33】何成万,何克清.基于角色的设计模式建模和实现方法.软件学报,2006,17(4):【34】曾闽山,侯岩松.海量地震数据网格化算法分析与研究.石油天然气学【35】曹凤海,易昌华,李秀山.地震勘探测量数据处理的全面解决方案,物探装备.硕士学位论文2006,16(1):59‘62【36】陈茂山,王云高.油气勘探软件用户界面设计方法探索与实践.勘探地球物理进展.2004,27(2):132.138【37】刘宏涛,李义杰,于长江.基于B/S模式三层结构地震信息管理系统的设计.东北地震研究.2006,22(1):75.80【38】李冀,陈晓林,陆桑璐.一个基于NOW的并行I/O系统.软件学报,2000,12(11):1654.1659【39】赵欣,陈道蓄,谢立.一个基于NOW的跨平台并行文件系统的设计和实现.计算机科学.2000,27(2):21.25【40】李群,谢立,孙钟秀.并行文件系统的设计.计算机科学.1996,23(2):36.39【41】LiJiangwei,LiaoWeikeng,AlokChoudhary,ParallelnetCDF:AHighPerformanceScientificI/OInterface.ACM,2003S.OpenMPextensionsformaster—slave【42】HadjidoukasPE,PapatheodorouTmessagepassingcomputing.ParallelComputing.2005,31,1155—1167【43】InhoPark,SeonWookKim.StudyofOpenMPapplicationsontheInfiniBandbasedsoftwaredistributedshared—memorysystem.ParallelComputing.2005,31:1099.1113【44】LuH,HuYC,ZwaenepoeW.OpenMPonnetworksofwork-stations.Supercomputing’98,Orlando,1998【45】HuW,ShiW,TangZ,etal.Alock-basedcachecoherenceprotocolforscopeconsistency.JournalofComputerScienceandTechnology.1998,13(2):97·109usingan【46】KengoNakajima.ParallelOpenMP/MPIhybriditerativesolversforfinite·elementmethodsonprogrammingmodeltheEarthSimulator.ParallelComputing.2005,31:1048-1065【47】LeiHuang,BarbaraChapman,ZhenyingLiu.TowardsamoreefficientimplementationofOpenMPforclustersviatranslationComputing.2005,31:1114·1139toglobalarrays.Parallel【48】陈勇,陈国良,李春生.SMP集群混合编程模型研究.小型微型计算机系统,2004,25(10):1763—1767【49】赵永华,迟学斌.基于SMP集群的MPI+OpenMP混合编程模型及有效实现.微电学与计算机.2005,22(10):7.11【50】吴少刚,章隆兵,蔡飞.一种适用于机群OpenMP系统的有效调度算法.计算机研究与发展.2004,41(7):1298.1305地震数据处理中的并行计算技术研究致谢本文是在李肯立教授的悉心指导下完成的。导师渊博的知识,严谨求实的科学态度,踏实进取、勇于开拓的治学精神以及精益求精的工作作风使我终生受益。研究生期间,在学习和生活各方面都得到李肯立教授及师母无微不至的关怀和帮助。至此学位论文完成之际,谨向导师和师母表达我最崇高的敬意和深深的谢意。感谢湖南大学计算机与通信学院、嵌入式与网络实验室的各位老师和同学多年来在学习、工作和生活方面给予我的帮助。在我攻读研究生期间,杨磊老师,肖德贵老师,李智勇老师从各个方面给予了我热情的支持和帮助,为我提出了很多好的建议,让我受益匪浅。在此向他们致以最诚挚的谢意。同时感谢斯特尔令软件工作室的齐雪生,刘敏,秦云川和实验室研究生邹舒婷、李昭鹏等同学。最后,我要特别感谢我的父母。感谢他们对我的支持和关爱,使我能够有信心和勇气面对困难,迎接挑战,顺利完成硕士学业。他们的勤劳工作一直是我学习的榜样。在此对他们表达我深深的祝福。感谢各位专家百忙之中对本文的审阅和赐教!杨进2008年3月硕士学位论文附录A攻读硕士期间发表的论文【1】李肯立,杨进,彭成斌,秦云川.基于MPI+OpenMP混合模型的并行地震数据处理支撑库.计算机工程与科学,2007,29(12):136.139【2】李肯立,杨进,彭成斌,杨磊,肖德贵.基于集群的并行地震数据处理支撑框架.2007全国高性能计算会议,2007,493.499,被推荐到计算机研究与发展(增刊)发表,文章编号H0655地震数据处理中的并行计算技术研究附录B(攻读硕士期间参与的项目列表)【1】并行地震数据处理系统(与美国Nexus公司合作项目)【2】网格环境下地震模拟支撑系统的关键理论与技术研究(国家自然科学基金)地震数据处理中的并行计算技术研究
作者:
学位授予单位:
杨进湖南大学
1.期刊论文 王宏琳.GAO Hui-sheng.WANG Hong-lin.GAO Hui-sheng 地震并行处理模式与应用框架 -计算机学报2001,24(2)
文中研究石油地震数据处理的并行计算设计模式(流水、扇出/扇入、主从和混合)和应用框架.框架和模式的目的都是复用成功的软件设计策略.框架可以看作一类设计模式的具体实现.针对地震数据处理模式设计和实现了GRISYS地震数据处理应用框架.利用这个框架,以往大量的串行地震处理模块,不需要任何改动,可以在工作站集群计算机或大规模并行计算机上实现并行计算.在曙光2000-II并行计算机上试验,获得了非常高的并行处理加速比.
2.会议论文 张军华.雷凌.吕宁 PowerEdge 1750微机集群并行性能测试及实例分析 2005
随着地震勘探新技术的发展和应用,地震数据量和处理量已变得越来越大.微机集群凭借其良好的性价比和高效的运算速度已逐渐成为地震数据处理的主要平台.本文以PowerEdge1750微机集群为例,首先对其体系结构进行了分析,然后给出了雅可比和矩阵乘积两个基准MPI程序的测试,最后以计算量较大的相干体算法为例,进行了实际并行计算与应用.文中给出的并行计算结果与性能分析,为推广应用该类集群提供了借鉴.
3.期刊论文 刘其成.郑纬民.薛巍.孙立民.LIU Qi-cheng.ZHENG Wei-min.XUE Wei.SUN li-min 时移地震数据处理中基于mobile agent的并行相位校正 -计算机应用研究2010,27(1)
研究了基于mobile agent的分布式并行计算及其在石油勘探时移地震数据相位校正中的应用,实现相位校正的高性能计算;利用mobile agent技术把各个可以并行执行的子任务派遣到不同的主机上,从而实现并行计算.将计算任务封装在mobile agent中发送至目的主机,在目的主机端借助目的主机所提供的计算环境及资源,利用本地操作的优势快速而高效地完成其计算任务;在计算过程中,mobile agent还可以适时地根据环境自动决定读取计算所需的数据.在Aglet workbench下基于mobile agent实现了相位校正分布式并行计算,取得了较好的效果.该方法可以应用于各种时移地震数据互均化校正算法,还可以应用于石油勘探常规数据处理的偏移等阶段以及正演模拟.
4.期刊论文 张军华.章多荣.雷凌.吕宁.陆文志.Zhang Junhua.Zhang Duorong.LEI Ling.LV Ning.Lu Wenzi PowerEdge 1750微机集群并行性能测试及实例分析 -石油仪器2005,19(3)
随着地震勘探新技术的发展和应用,地震数据量和处理量已变得越来越大.微机集群凭借其良好的性价比和高效的运算速度已逐渐成为地震数据处理的主要平台.文章以PowerEdge 1750微机集群为例,对其体系结构进行了分析,给出了雅可比和矩阵乘积两个基准MPI程序的测试,以计算量较大的相干体算法为例,进行了实际并行计算与应用.文中给出的并行计算结果与性能分析,为推广应用该类集群提供了方法.
5.学位论文 彭俊杰 基于CUDA平台地震数据处理研究 2009
在地震数据处理领域中,随着处理内容和算法复杂度的不断增加,这为计算技术带来了巨大挑战。并行处理技术日益引起石油地球物理界的广泛关注,如何快速高效地并行处理大规模地震数据这一问题已成为亟待解决的重大课题之一。随着新近发展的图形处理器通用计算技术日趋实用成型,因此,本文基于CUDA(Compute Unified Device Architecture)平台,针对大规模地震数据处理模块中的两个重要处理流程:叠前偏移和相干体并行处理技术,分别研究其高效并行处理技术和并行算法。
为了解决复杂地质构造成像问题,同时提高地震资料信噪比和分辨率,本文研究了Kirchhoff叠前地震偏移,它包括Kirchhoff叠前深度偏移和Kirchhoff叠前时间偏移两个内容。由于Kirchhoff叠前偏移是地震数据处理中最耗时的模块之一,为加快地震数据计算和显示速度,针对CUDA平台多处理器流水线特性,我们首先对传统Kirchhoff叠前深度偏移算法在CUDA平台上进行了重新设计,包括计算地面点对应射线旅行时的并行算法和成像处理的并行算法;然后改进了传统Kirchhoff叠前时间偏移算法,包括基于CUDA的Kirchhoff叠前时间偏移算法,基于CUDA的纵波波动方程算法和GPU与CPU间的通信算法3个子算法。通过实验结果表明,我们提出的基于CUDA平台计算地震数据的并行算法的确能带来性能上的提升。
另外,对于相干体处理技术,传统的计算方法需要较长的运行时间。为缩短解释周期,本文提出了基于CUDA平台的单侧旋转算法,改进了相干体C3算法中的矩阵特征值计算。通过在Intel Core2DueCPU和NVIDIA GeForce8800 GT显卡的PC上进行测试实验,在不丧失地震成像精度的情况下,基于CUDA平台的相干体C3算法处理速度得到8倍以上的提升。本文的研究表明,基于CUDA平台处理地震数据,对提高大规模地震数据处理与显示的实时性具有一定意义。
6.期刊论文 黄易.师学明.范建柯.胡文宝.HUANG Yi.SHI Xue-ming.FAN Jian-Ke.HU Wen-Bao 并行计算技术及其在勘探地球物理学中的现状与展望 -地球物理学进展2010,25(2)
本文详细阐述了并行计算技术及其在地球物理勘探数据处理中的发展现状和发展趋势,分析了几个代表性的并行算法实例.这些结果表明,在拥有强大的并行机的基础上,基于并行计算开发环境(MPI和PVM等)设计高效的并行算法,通过分配合理的并行粒度、通信开销、负载平衡等执行高效的并行计算,可以有效加快处理速度、降低成本.目前,并行算法在地震数据处理中应用已较为成熟,近年来向更实用的基于PC机群的并行技术发展.然而,在非地震方法中,并行算法应用较少见文献报道,研究尚处于初级研究阶段.在大地电磁的二维和三维正、反演问题上,并行计算技术逐渐得到越来越多关注和重视.随着资源和能源需求的增长,地球物理勘探向深度和广度快速发展,大幅增长的数据量使得高性能并行计算机和高效的并行算法在勘探地球物理学中的发展和应用将占据愈来愈重要的地位.
7.会议论文 冯保民.魏锐.李建霞 并行集群环境下迭前时间/深度偏移作业的运行效能研究 2004
地震数据处理领域一直是高性能计算服务器应用的重要领域。基于队架构的高性能集群并行机是伴随着计算机芯片技术、网络技术、系统集成技术和Linux的发展而出现的新产品。这些高性能集群并行机主要应用于地震数据处理、全三维可视化数据体解释、油藏模拟计算,尤其在三维叠前深度偏移及高分关辨率地震资料处理得到了很好的应用,高性能集群并行机和三维叠前深度偏移理论的发展,极大地提高了复杂地质构造的地震资料的成像持量和油气勘探目标的准确识别,成为了三维叠前深度偏移及高分辨率地震资料处理的首选平台。
本研究认为:作为系统管理员,工作中从实际问题、实际需求出发,深入研究系统性能优化技术并结合地震处理软件在实际应用中对系统资源的不同需求,找出应用软件与系统之间存在的某些瓶颈。改进了这些瓶颈,将会对实际生产带来显著的效果和经济效益。
8.期刊论文 方伍宝.孙建国.赵改善.王华忠.程玖兵.Fang Wubao.Sun Jianguo.Zhao Gaishan.Wang Huazhong.Cheng Jiubing 波动方程叠前深度偏移成像软件系统的研制及应用 -石油物探2005,44(5)
基于波动方程的叠前深度偏移成像技术可以将叠前深度偏移技术的应用领域从复杂构造成像扩大到复杂地质条件下的岩性地层成像.研制开发了波动方程叠前深度偏移成像软件系统,该系统包含工区管理、数据管理、偏移速度分析、构造建模、2D/3D地震速度建模、地震偏移成像、三维可视化、辅助计算等一系列功能模块;具有独特的速度建模、叠前深度偏移成像、高效并行计算、三维可视化和性能优化等特色技术.对该软件系统进行了SEG/EAGE3D盐丘模型数据测试,在所获得的成像剖面上盐丘边界和断层清晰.将该软件应用于实际地震资料的处理,河南油田泌阳凹陷的高陡构造、胜利油田的古潜山内幕都得到了很好的成像.
9.学位论文 刘祁 用于地震数据征处理中的一个并行文件系统 1999
地震数据处理中的I/O数据量特别大,研制一个高效、实用的并行文件系统对提高地震数据处理的速度和效率具有重要的实用价值.该文首先简要地叙述了并行处理技术在石油勘探中的应用,给出了一个适于地震数据处理并行计算框架,该框架引入组件技术,提供了一个完整的、有层次的类系统;然后论文重点论述了如何基于地框架构造一个并行文件系统,并介绍了研究人员设计和实现的适合地震数据处理的一个并行文件系统.该系统由目录管理、config管理及负载分配、并发控制和缓冲区管理等组成,与现有的并行文件系统相比,具有简单、高效的特点.
10.期刊论文 方江雪.陈明俊.冯全东.史军超.史彦华 并行计算机在泌阳凹陷地震资料处理中的应用 -江汉石油学院学报2004,26(1)
结合石油勘探和地震资料处理的实际需要,根据并行计算机的特点和性能,讨论了并行计算机在泌阳凹陷地震资料处理中的应用.应用结果表明,并行计算机不仅大大缩短地震资料的处理周期,同时提高了地震资料的处理质量和效率.
本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1659631.aspx
授权使用:中国传媒大学(中国传媒大学),授权号:a3102b51-675d-4cd2-bea3-9e7100ff9634
下载时间:2011年1月20日
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务