地震资料处理系统控制流程设计及代码的自动生成
第一章 绪论
在石油勘探领域中,随着勘探设备领域的不断进步,陆地到海洋的勘探力度都在逐步的增强,地震数据的获取也走上了高效率、高精度和数据量巨大的道路[1],高密度数据采集方向的发展,导致地震资料处理的数据量日益增大,高效的地震数据处理逐渐成为地震资料处理的核心问题。而随着计算机硬件技术的不断升级,基于高性能计算集群的分布式并行计算,成为解决这一问题的关键技术。软件开发人员通过研究包括海量数据的分割或分组方式、分布存储调度、分布访问调度以及相应的数据块接口和进程间通信等算法[2][3]来提升地震资料处理系统中对数据的处理速度。由于地震资料处理系统中大量分布式、并行计算的引入,加上模块算法、工作流程的多样性,导致了开发程序类型多样,行为错综复杂,多进程、线程等控制流程容易出错,甚至影响整个程序开发的效率。因此,从软件开发人员的角度出发,对地震资料处理系统开发过程中,方便的描述分布式并行计算的控制流程,并且可对整个流程的代码进行自动生成的算法的研究很有必要。
1.1 研究背景及意义
近年来,在油气勘探领域中,随着地震资料采集技术的不断发展,对地震数据的精确性、分辨率等质量的要求也在逐步增强,地震仪的使用规模由从前的千道提升至现在的万道,并开始向百万道的规模前进,在这同时为了进一步提高采集到的地震资料的分辨率和精度,勘探开发过程中逐渐采用单点采集技术,该技术使得采集到的地震资料数据量快速增长[4][5]。地震资料采集设备的逐步发展和采集技术的不断成熟,使以后在地震勘探中获取到的数据量将不断变大甚至按照指数增加,然而,海量地震资料的处理和分析,为了保证处理的速度和精准性,将极大限度的依赖于高性能硬件计算设备和相应的高效的应用软件发展,地震数据量的巨大使得地震数据处理平台中的大规模数据存储、访问及高性能计算面临着巨大的考验[6][7]。 为了保证软件的处理和分析效率能够满足数据发展的要求,基于大型高性能计算集群[8]的高效的分布式、并行计算成为软件开发者关注的关键。随之而来的是大量的分布式、并行计算被引入到地震资料处理系统中。在密集型计算的需求下,分布式并行计算必将成为计算机的发展趋势。在各种体系结构中,集群更是以其廉价、可扩展性而被广泛使用。在复杂地理计算支撑平台与开发工具方面,要充分发挥多核处理器与并行集群的性能,将分布式和并行计算任务、计算模型、计算数据协调地划分到不同的处理器与集群节点,同时对并行的需求也越来越高,复杂的并行需求导致控制流程的设计和开发过程变得繁琐,大大地降低了软件开发阶段的效率,大量进程间的消息传递也导致了通信的复杂和错误率的提高。针对地震资料处理系统分布式并行流程开发过程中,所遇到的分布式并行应用问题,从软件开发的角度设计地震资料处理系统控制流程模型,并基于设计的控制模型,构建可视化的描述方法,根据可视化描述方法构建的流程图,自动生成可执行的动态代码,本应用具体的意义表现在:实现地震资料处理系统并行处理流程的可定制性:地震资料并行处理时的分布式并行设计具有多样性,对于不同的任务需不同的控制流程。通过地震资料处理系统流程模型和可视化描述语言的建立,实现处理流程的可定制性,使设计变得简单灵活、可扩展。
....
1.2 研究现状概述
地震资料是指在油气的勘探过程中,首先由人工来激发地震(放炮),然后利用设备检测、记录地震波信号的传播时间、振幅、波形以及在此过程中所涉及的设备数据等资料[9]。经过上述过程收集的记录在磁带上进行存储形成最原始的地震数据。通过地震资料处理系统对采集的数据进行处理可以获得对应的地震构造图形,数据处理人员通过对地震数据进行分析解释可以得出油气储层的信息[10][11]。 地震资料处理和解释系统一直被很多大公司和研究机构作为研究热点。目前,已经有很多种并行处理与解释系统走向实际应用[12],如 geocluster,WeVista,OpenSpirit等。OpenSpirit 由 Shell、Chevron 和 Schlum-berger 三家公司联合研发的,OpenSpirit 为能源工业提供了一个应用集成框架,使对能源工业的处理可以独立于厂商和平台,由一系列的如坐标变换等基本 E&P 组件和一些针对地下地质解释的组件可以自由的进行对应流程的处理。WebVista 则是基于 web 技术的地震处理系统,其应用具有多种优点的浏览器/服务器(B/S)模式。国产的地震资料处理软件主要有东方地球物理公司物探技术研究中心研发的 GRISYS 及中国海洋石油海量数据并行处理软件 MPS[13][14][15]。
.........
第二章 地震资料处理系统控制流程动态代码自动生成总体架构
本章通过对 SPS 中分布式并行计算涉及的控制流程进行分析,抽象出其中存在的控制流程类型,并研究了不同的控制流程在软件开发过程中存在的复杂性和困难性,从解决复杂的控制流程代码开发问题的角度出发,提出基于 SPS 控制流程的动态代码自动生成技术的总体框架,并通过对框架的介绍,引出本课题的主要研究内容。
2.1 地震资料处理系统控制流程的研究
目前,为了提升海量地震数据处理的效率,分布式并行计算被大量的引入进地震资料处理系统软件的开发中。从整个软件的平台架构到内部算法模块的调度甚至于算法模块的内部实现,都贯穿着分布式和并行的相关处理。基于多核多处理器集群的多节点[31]、多进程[19]、多线程[32]的 SPS 的设计已经成为了海量高精度地震数据快速处理的发展趋势。如图 2.1 是一个基于高性能计算集群 SPS 分布式并行计算框架。在每个节点上,根据地震 SPS 数据处理的流程功能,将整个流程分为输入、运算和输出三个子进程进行实现,最大限度的提升数据流运算速度。各进程之间在数据传递上采用了基于共享内存的数据共享,在执行顺序上依靠进程间的事件通知保证各子进程的运算流程的同步。 数据文件并行读写:统一任务下不同节点的输入和输出进程,同时对远程磁盘上相同的输入和输出文件进行操作。为了保证数据传输过程中对网络资源的合理利用和文件读写的正确性,利用统一的读写管理进程,通过跨节点的事件通知对各节点的读写进行统一管理。 节点内计算模块调度:在具体的数据运算中,为了有效的利用节点上的计算资源,在运算进程中,将每个运算模块以线程池的形式进行启动,并通过不同模块占用计算资源的多少进行其模块数量的动态分配,在各线程之间以数据池的形式进行数据的传递。为了保证获取数据的同步,各线程间采用事件通知和数据共享的形式实现了数据任务的同步执行和模块间运算流程的异步执行。
..........
2.2 基于地震资料处理系统控制流程的动态代码自动生成架构
本节将针对2.1节中提出的在SPS中分布式并行计算流程开发过程中软件开发者遇到的问题,结合动态代码自动生成技术,设计适用于 SPS 控制流程开发的动态代码自动生成技术,并对其实现的总体架构进行设计。基于 SPS 控制流程的动态代码自动生成的架构如图 2.2 所示: 图 2.2 所示,在地震资料处理系统(Seismic Data Processing System,SPS)基础上,抽象出地震资料处理系统控制流程模型(Seismic Data Processing System Control Process Model,SPCM)。然后基于 SPCM,构建可描述其控制流程的可视化建模的地震资料处理系统控制流程建模语言(Seismic Data Processing System Control Process Modeling Language,SPCML)和表示其代码构成的动态代码生成模型(Dynamic Code Generation Model,DCGM)。基于 XMI 的设计思想,设计与 SPCML 对应的控制模型元数据标记语言(Seismic Data Processing System Control Process Matedata Mark Language,SPCMML),用来描述 SPCML 可视化建模的信息,使其具有可获取和解析性。最后设计动态代码的转换算法,通过 SPCMML的使用,生成描述 SPS 控制流程逻辑关系的解析语义树(Parsing Semantic Tree,PST),基于 PST 的解析,完成由 SPCML 建模到代码实现的转换,最终生成可编译执行的动态代码。
.........
第三章 SPCML 的设计 ............ 14
3.1 SPCM 的设计 ........... 14
3.1.1 基础功能元素的定义 ...... 15
3.1.2 逻辑关系元素的定义 ...... 16
3.2 SPCML 的设计 ......... 17
3.2.1 图形库的设计 ......... 18
3.2.2 语义库的设计 ......... 19
3.2.3 SPCML 的构建 ....... 20
3.3 SPCMML 的设计 ..... 21
3.4 本章小结 .......... 22
第四章 地震资料处理系统控制流程的动态代码自动生成模型....... 23
4.1 动态代码生成模型的设计 ......... 23
4.2 地震资料处理系统控制流程解析语义树的设计 ......... 33
4.3 动态代码自动生成算法 .... 37
4.4 本章小结 .......... 39
第五章 地震资料处理系统控制流程动态代码自动生成的实现 ............ 40
5.1 动态代码自动生成运行环境和功能介绍 ............ 40
5.1.1 动态代码自动生成工具运行环境 .... 40
5.1.2 动态代码自动生成的功能介绍 ........ 40
5.2 动态代码自动生成的实现 ......... 40
5.3 动态代码自动生成的测试 ......... 43
5.4 本章小结 .......... 49
第五章 地震资料处理系统控制流程动态代码自动生成的实现
本章在前几章控制流程模型和动态代码自动生成模型的基础上,设计基于地震资料处理系统控制流程的动态代码自动生成工具。应用面向对象的思想,对上述提到的模型中的各种算法,进行有效的抽象,实现高效的,规范的功能接口。对实现后的工具进行使用和测试,保证其与对应模型的一致性和使用的正确性。
5.1 动态代码自动生成运行环境和功能介绍
在本节中主要介绍 SPS 控制流程动态代码自动生成工具的运行环境和功能,分别对地震资料处理系统控制流程动态代码自动生成工具的软硬件环境、开发工具以及所需实现的功能进行了介绍。 软件开发人员根据实际处理需求,建立 SPS 控制流程的设计,并使用 Microsoft office visio 2007 绘图工具建立基于控制流模型的可视化描述,并通过在绘图工具中建立的宏模型导出对应的 SPCMML 文件,,再将 SPCMML 文件转换成对应的解析语义树,结合代码存储模型和底层支撑库生成可编译调试的动态代码。 动态代码自动生成工具的实现是基于 SPS 控制流程模型和动态代码自动生成模型的,因此动态代码自动生成工具的实现分为两个部分:SPS 控制流程模型的建立和与控制流程模型对应代码的自动生成。
........
结 论
本论文通过研究国内外 SPS 的发展趋势,得到了分布式并行计算正在 SPS 的开发中被广泛应用的结论,并在分析 SPS 分布式并行计算中涉及的控制流程过程中,发现由于 SPS 中控制流程的复杂性,在分布式并行计算的开发过程中,软件开发人员遇到了一系列的问题,影响了软件开发的效率和正确性。 本文的设计从软件开发人员在 SPS 分布式并行计算开发过程中遇到的问题出发,通过对代码自动生成技术的相关研究,结合 SPS 自身的特点,设计了满足 SPS 分布式并行计算控制流程开发需求的动态代码自动生成流程,来减少软件开发人员在功能设计和代码实现过程中大量复杂的工作,并通过具体实例的设计和应用,证明本课题研究的正确性和可应用性。本文着重对以下几个方面进行了设计:
1. 设计了地震资料处理系统控制流程建模语言 通过对 SPS 中涉及的与控制流程相关的对象的抽象和符号定义形成控制流程模型SPCM,结合对 UML 顺序图的构件的重定义和语义扩展,形成了 SPS 的控制流程建模语言 SPCML。通过对 SPCML 的应用,解决了在控制流程方案设计过程中,无法进行风格统一的设计,影响软件开发人员对控制流程理解的问题。
2. 动态代码生成模型的设计 在 SPCM 的基础上,通过对 SPS 中应用接口、存储格式的分析,设计了 SPCM 中元素对应的接口设计规则和存储格式规则。并在接口设计规则的基础上,对 SPCM 中具体元素对应的代码段的实现进行了设计,形成了代码实现规则,同时通过 SPCM 与SPCML 的关联,将代码实现规则与 SPCML 具体的图形和语义进行映射,形成了动态代码生成模型 DCGM。DCGM 的应用解决了大量复用底层功能接口重复开发的问题。
.........
参考文献(略)
本文编号:48985
本文链接:https://www.wllwen.com/wenshubaike/lwfw/48985.html