首页> 中国专利> 一种用于地震勘探资料处理流程控制的方法

一种用于地震勘探资料处理流程控制的方法

摘要

本发明公开了一种用于地震勘探资料处理流程控制的方法,涉及地震勘探资料处理流程控制技术领域,包括如下步骤:1)规范功能模块开发方案和接口;2)改进功能模块的开发结构,在功能模块中实现多线程;3)作业流程控制:通过对作业描述文件中的模块及其拓扑结构进行解析,装载功能模块对象并控制其执行,完成作业流程的数据处理。本发明通过对作业描述文件中的模块及其拓扑结构进行解析,装载功能模块对象并控制其执行,完成作业流程的数据处理,充分地利用了计算资源,缩短了作业运行时间,提高了地震数据处理生产效率以及软件的可扩展性。

著录项

  • 公开/公告号CN102063308A

    专利类型发明专利

  • 公开/公告日2011-05-18

    原文格式PDF

  • 申请/专利号CN201110005029.5

  • 发明设计人 李磊;胡光岷;何光明;

    申请日2011-01-12

  • 分类号G06F9/44(20060101);G01V1/28(20060101);

  • 代理机构成都天嘉专利事务所(普通合伙);

  • 代理人冉鹏程

  • 地址 610051 四川省成都市成华区府青路1段3号川庆钻探公司科技信息处

  • 入库时间 2023-12-18 02:26:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-06-19

    授权

    授权

  • 2011-07-20

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20110112

    实质审查的生效

  • 2011-05-18

    公开

    公开

说明书

 

技术领域

本发明涉及地震勘探资料处理流程控制技术领域,确切地说涉及一种适用于集群计算系统的地震资料处理作业运行时的流程控制方法。

背景技术

在现代的地震勘探资料处理过程中,通过野外勘探采集得到的地震资料数据需要经过静校正、去噪、反褶积、动较正和叠加等一系列的处理过程,最终才能得到满足生产需要的数据内容供解释人员使用。并且各个阶段的处理过程涉及到多种实现技术,每种技术需要软件实现一个功能模块供软件系统调用。实际的资料处理生产过程中,通常是生成一个定义流程拓扑结构的处理作业描述文件,该流程由上述功能模块构成。在对作业描述文件进行解析后,将其中的功能模块描述装载为功能模块对象,并根据作业描述文件中的拓扑结构解释执行所述功能模块对象,从而得到经过一系列处理过程后的数据结果。

当代计算机硬件技术发展迅速,近几年来,计算机处理器厂商为提高计算机处理速度进行了多项研究,其中多CPU多核成为了集群计算节点提高处理速度的主流发展方向。但是,传统的软件开发方式并不能充分发挥计算节点多CPU多核的特性,为了适应硬件的发展,软件开发方案也需要随之调整。如上所述,在一个处理作业描述文件中包含了多个处理模块,这些模块都需要对地震数据中的每一道进行处理,对于实际生产中动辄几十G的数据来说,作业消费的时间会显得很长,带来的结果是不仅长时间的占用了计算资源,而且影响了生产效率。

如公开号为101630018,公开日为2010年01月20日的中国专利文献公开了一种控制全声波方程反演过程的地震勘探数据处理方法,采集理论模型地震数据,获得深度域体积模量和密度初始模型;用伪谱法模拟声学介质中地震波场;计算理论模型与初始模型模拟数据的差;给定δ=1.0e-6,计算误差能量E,当E≤δ,停止反演,输出反演结果,如果E>δ,继续下列步骤;计算残差数据;计算体积模量和密度模型的共轭修改量;计算修改步长,获得梯度;对初始模型进行修改;将修改后的模型数据作为新的初始模型,通过对反演过程进行自动控制,使声波方程反演稳定、快速收敛,反演收敛速度比常规方法提高了近5倍。,但上述现有技术仍然没有使软件结构具有多线程的特征,仍然没有解决“对于实际生产中动辄几十G的数据来说,作业消费的时间长,长时间的占用计算资源,影响生产效率”的技术问题。

发明内容

为解决上述技术问题,本发明提出了一种通过改进功能模块开发结构,使之与现代集群计算节点多CPU多核的特性相适应的用于地震勘探资料处理流程控制的方法,本发明通过对作业描述文件中的模块及其拓扑结构进行解析,装载功能模块对象并控制其执行,完成作业流程的数据处理,充分地利用了计算资源,缩短了作业运行时间,提高了地震数据处理生产效率以及软件的可扩展性。

本发明是通过采用下述技术方案实现的:

一种用于地震勘探资料处理流程控制的方法,其特征在于:包括如下步骤:

1)规范功能模块开发方案和接口;

2)改进功能模块的开发结构,在功能模块中实现多线程;

3)作业流程控制:通过对作业描述文件中的模块及其拓扑结构进行解析,装载功能模块对象并控制其执行,完成作业流程的数据处理。

所述的规范功能模块开发方案接口可以采用现有技术,也可以以功能模块基类开发结构为例采用如下方式:功能模块基类开发结构向外暴露构造函数、初始化函数Initialize()、参数检查函数CheckPara()、预处理函数PreRun()、数据处理函数Run()、后期处理函数PostRun()和析构函数七个成员函数供目标程序调用,具体的功能模块类继承这个功能模块基类开发结构并重载这七个成员函数以完成其具体要实现的功能。

所述的改进功能模块的开发结构,在功能模块中实现多线程可以采用现有技术,也可以具体采用如下方式:在功能模块基类的数据处理函数Run()接口中实现了多线程的代码开发工作,当目标程序调用数据处理函数Run()接口函数时,该函数将自动创建一个线程,并在线程中调用功能模块的MainLoop()成员函数进行数据处理。

所述的MainLoop()的功能是进行地震数据的处理,是功能模块的核心部分,是受保护的成员函数,不被暴露给外部的调用程序,但用于被子类继承后修改其具体实现的功能。

所述的作业流程控制可以采用现有技术,也可以具体为:目标程序对作业流程中的功能模块及其拓扑结构进行解析后,生成并装载功能模块以及端口对象和拓扑连接对象;然后在执行控制主线程中调用功能模块的初始化函数Initialize()、参数检查函数CheckPara()和预处理函数PreRun()接口,完成作业运行前的预备工作;接下来由执行控制主线程调用功能模块的数据处理函数Run()接口,启动各功能模块的数据处理线程从而完成地震数据处理;在所有功能模块的数据处理工作完成以后,执行控制主线程调用后期处理函数PostRun()接口,完成资源释放工作;最后在执行控制主线程中调用各功能模块的析构函数,完成功能模块的卸载功能。

在所述3)后还有共享内存数据交互步骤:共享内存是建立在功能模块的输出端口之上的,每一个输出端口及其连接的输入端口对应一块共享内存区,输入输出端口所属的功能模块通过对这块共享内存的读写实现功能模块间的数据传递。

与现有技术相比,本发明所达到的技术效果如下:

1、采用本发明所述的1)、2)和3)步骤进行处理,并依次处理后形成的技术方案,即使步骤1)、2)和3)都采用常规处理方式,但将这三个步骤有机的结合起来形成的技术方案,就能实现了通过改进功能模块开发结构,使之在软件结构上具有线程的特征,从而使之与现代集群计算节点多CPU多核的特性相适应,充分地利用了计算资源,缩短了作业运行时间,提高了地震数据处理生产效率以及软件的可扩展性。

2、采用如本发明所述的区别于现有技术的1)、2)和3)的具体步骤形成的技术方案,利用计算机软件开发中的多线程技术改造功能模块,使之具有线程的特征,并在此基础上应用作业流程控制执行的多线程解决方案:“通过对作业描述文件中的模块及其拓扑结构进行解析,装载功能模块对象并控制其执行,完成作业流程的数据处理”能够得到更优的技术效果:进一步缩短作业运行时间,进一步提高地震数据处理生产效率以及软件的可扩展性。

附图说明

下面将结合说明书附图和具体实施方式对本发明作进一步的详细说明,其中:

图1为功能模块基类结构图

图2为作业流程控制系统结构图

图3为执行控制主线程对功能模块的调用流程图

图4为执行控制主线程工作流程图

图5为功能模块拓扑图

图6为功能模块共享内存结构示意图。

具体实施方式

实施例1

作为本发明一较佳实施方式,本发明提出了一种用于地震勘探资料处理流程控制的方法,按照计算机软件理论,在软件开发中应用多线程技术可以提高目标程序在多CPU多核处理器中的处理速度,因此,本发明构思的出发点就是在作业控制执行时使用多线程技术,将作业流程中的功能模块作为进程中的不同线程来执行,为了实现这个构思方案,需要改进功能模块的开发结构,使之在软件结构上具有线程的特征,具体可以采用以下三个步骤:1)规范功能模块开发方案和接口,可以采用现有技术中的常规方法实现; 2)改进功能模块的开发结构,在功能模块中实现多线程,可以采用现有技术中的常规方法实现; 3)作业流程控制:通过对作业描述文件中的模块及其拓扑结构进行解析,装载功能模块对象并控制其执行,完成作业流程的数据处理,也可以采用现有技术中的常规方法实现,虽然这三个步骤都分别采用现有技术实现,但将这三个步骤有机的结合起来,实现了通过改进功能模块开发结构,使之在软件结构上具有线程的特征,从而使之与现代集群计算节点多CPU多核的特性相适应,充分地利用了计算资源,缩短了作业运行时间,提高了地震数据处理生产效率以及软件的可扩展性。

实施例2

作为本发明的最佳实施方式为:

1、规范功能模块开发方案和接口。

通过规范功能模块开发方案和接口,可以提高软件的可扩展性。如图1所示为功能模块基类开发结构,该类向外暴露构造函数、初始化函数等七个接口供目标程序调用。具体的功能模块类可继承这个基类并重载这七个成员函数以完成其具体要实现的功能,这样可以确保所有的功能模块向目标程序提供统一的接口。同时,目标程序在装载和调用功能模块的时候,也不需要去关心它调用的是哪一个功能模块以及实现的是什么功能。这样当需要加入新的功能模块,或者对现有模块的功能进行改动后,不必修改目标程序,极大的提高了软件的可扩展性。下面对功能模块提供的接口函数功能进行详细介绍:

(1)、构造函数,负责功能模块对象自身的创建、资源获取及初始化工作。

(2)、初始化函数Initialize(),完成功能模块对象的运算参数、控制参数以及消息参数的初始化工作。

(3)、参数检查函数CheckPara(),在这个接口函数中完成功能模块对象的一些静态参数的检查工作,判断它们是不是满足预定义的参数约束条件,为处理作业的顺利运行做好初期的保障工作。

(4)、预处理函数PreRun(),在这个接口函数中完成数据处理前的检查工作,进行无数据的空运行检查,判断运行时动态参数是否满足参数约束条件,确保处理作业能够顺利运行。

(5)、数据处理函数Run(),在这个接口函数中实现功能模块对数据的处理工作,通过该函数的调用,输入数据将得到预期的处理结果。

(6)、后期处理函数PostRun(),在这个接口函数中进行异常处理以及部分资源释放工作。

(7)、析构函数,负责功能模块对象的析构及一些资源释放工作。

2、在功能模块中实现多线程

在功能模块基类的数据处理函数Run()接口中实现了多线程的代码开发工作,当目标程序调用Run()接口函数时,该函数将自动创建一个线程,并在线程中调用功能模块的MainLoop()成员函数进行数据处理。MainLoop()的功能是进行地震数据的处理,是功能模块的核心部分,它作为一个受保护的成员函数,不会被暴露给外部的调用程序,但同时又可以被子类继承后修改其具体实现的功能。对于功能模块开发人员来说,他们不必关心Run()接口函数,只需要在重载基类的基础上重写MainLoop()函数即可。

3、作业流程控制

如图2所示,在目标程序对作业流程中的功能模块及其拓扑结构进行解析后,生成并装载功能模块以及其它对象(端口对象和拓扑连接对象);然后在目标程序主线程(执行控制主线程)中调用功能模块的初始化、参数检查和预处理接口,完成作业运行前的预备工作,尽可能的确保处理作业能够顺利完成数据处理工作;接下来由执行控制主线程调用功能模块的数据处理接口Run(),启动各功能模块的数据处理线程从而完成地震数据处理;在所有功能模块的数据处理工作完成以后,执行控制主线程将调用PostRun()函数接口,完成资源释放等工作;最后在执行控制主线程中调用各功能模块的析构函数,完成功能模块的卸载功能。执行控制主线程与功能模块接口函数的调用关系如图3所示。

如图4所示,在作业启动后的执行过程中可能会因各种原因导致作业运行中断,中断可能是有异常引起,也可能是外部消息引起的强制中断,这时需要进行统一的异常退出处理并输出分析信息。

4、共享内存数据交互

在作业流程的运行过程中,有着拓扑连接的功能模块之间需要进行数据传递,采用共享内存的设计方案可以实现线程之间的数据传递。共享内存是建立在功能模块的输出端口之上的,也就是说,每一个输出端口及其连接的输入端口对应一块共享内存区,输入输出端口所属的功能模块通过对这块共享内存的读写来实现功能模块间的数据传递。图5展示了一个功能模块处理后的数据交给另外两个功能模块进行后续处理的情况,这三个功能模块需要一块共享内存区进行数据传递,其共享内存的设计如图6所示。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号