一种旅行时数据缓存方法与装置与流程

文档序号:16528720发布日期:2019-01-05 10:33阅读:288来源:国知局
一种旅行时数据缓存方法与装置与流程

本发明涉及油气地球物理勘探领域,更具体地,涉及一种旅行时数据缓存方法与装置。



背景技术:

旅行时数据是kirchhoff叠前深度偏移的输入数据之一。由于kirchhoff的近似计算和对速度横向变化适应性差,并且旅行时数据量大,因此,一般会以稀疏网格的方式将旅行时数据提前计算好。在偏移计算地震道数据时,先从旅行时文件中读取炮点或检波点周围4点的旅行时三维数据体,经4点插值后得到炮点和检波点各自的三维旅行时数据体,再进行偏移计算。这将导致旅行时数据频繁的读入和替换,偏移计算性能大幅下降和网络流量过高。

当前的通常做法是申请足够大的内存,尽量多的读入旅行时数据至一个内存队列中,以“先进先出”的方式刷新队列中的旅行时数据,来减少io次数,提高数据检索效率。但是,毕竟内存有限,旅行时数据检索的命中率较低,旅行时数据仍然需要频繁的读入缓冲内存或从内存剔除,计算性能虽有改善,但还有待进一步提升。因此,有必要开发一种能够显著提高计算性能的旅行时数据缓存方法与装置。

公开于本发明背景技术部分的信息仅仅旨在加深对本发明的一般背景技术的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域技术人员所公知的现有技术。



技术实现要素:

本发明的目的是通过数据预测和多级缓存方法,提高旅行时数据的复用率和访问命中率,减少数据io时间,降低网络流量,从而提高kirchhoff叠前深度偏移的计算性能。

根据本发明的一方面,提出一种旅行时数据缓存方法。该数据缓存方法可以包括以下步骤:

遍历地震道数据,统计出每个地震数据使用的旅行时信息,其中所述地震道数据是共偏移距道集数据;

建立各个地震道数据的缓存优先级别和位置索引;

以地震道数据的炮号和道号为关键字对所述地震道数据进行排序,形成多个小炮集,每个小炮集共用一个炮点旅行时;

设置多个优先级级别的旅行时数据缓存区,在旅行时数据的使用过程中,基于所述旅行时数据的优先级级别将其保存至相应的旅行时数据缓存区中;

预取旅行时数据时,按照旅行时缓存区的优先级进行检索;

基于检索结果对旅行时缓存区中的旅行时数据进行刷新。

优选地,所述旅行时信息包括旅行时使用炮数,所述旅行时信息包括旅行时使用炮数,每个炮点旅行时使用的次数,各炮旅行时数据使用的最小道号、最大道号,读取次数。

优选地,所述旅行时数据的优先级级别是基于旅行时使用的次数确定的。

优选地,所述多个优先级别的旅行时数据缓存区包括:本地磁盘缓存区、共享内存缓存区、炮点旅行时专用内存缓存区、检波点旅行时专用内存缓存区。

优选地,所述多个优先级别的旅行时数据缓存区包括:本地磁盘缓存区、共享内存缓存区、炮点旅行时专用内存缓存区、检波点旅行时专用内存缓存区。

优选地,预取旅行时数据时,按照旅行时缓存区的优先级进行检索包括:首先在优先级级别高的缓存区中进行检索,如果未发现需要的旅行时数据则在下一级缓存区中检索;如果在所有旅行时数据缓存区中均未发现需要的旅行时数据,则直接从原旅行时文件中读取。

优选地,基于检索结果对旅行时缓存区中的旅行时数据进行刷新包括对于直接从原旅行时文件中读取的在所有旅行时数据缓存区中均未进行缓存的旅行时数据,在所述旅行时数据为检波点旅行时数据或炮点旅行时数据时,执行如下步骤:

如果检波点旅行时专用内存缓存区或炮点旅行时专用内存缓存区未满,则将在原旅行时文件中读取的检波点旅行时数据或炮点旅行时数据加入检波点旅行时专用内存缓存区或炮点旅行时专用内存缓存区中,如果缓存区空间已满,则置换已过期的旅行时数据;

如果检波点旅行时专用内存缓存区或炮点旅行时专用内存缓存区中没有过期的旅行时数据,则进行如下判断:

如果待加入检波点旅行时数据或炮点旅行时数据的优先级高于检波点旅行时专用内存缓存区或炮点旅行时专用内存缓存区中的旅行时数据的优先级,则置换检波点旅行时专用内存缓存区或炮点旅行时专用内存缓存区中优先级最低的旅行时数据;

如果待加入检波点旅行时数据或炮点旅行时数据的优先级没有高于检波点旅行时专用内存缓存区或炮点旅行时专用内存缓存区中的旅行时数据的优先级,则将最先加入的旅行时数据剔除将其加入下一级缓存区中。

根据本发明的另一方面,提出一种旅行时数据缓存装置。所述数据缓存装置包括:用于接收地震道数据的接收器、处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时能够实现以下步骤:

遍历地震道数据,统计出每个地震数据使用的旅行时信息,其中所述地震道数据是共偏移距道集数据;

建立各个地震道数据的缓存优先级别和位置索引;

以地震道数据的炮号和道号为关键字对所述地震道数据进行排序,形成多个小炮集,每个小炮集共用一个炮点旅行时;

设置多个优先级级别的旅行时数据缓存区,在旅行时数据的使用过程中,基于所述旅行时数据的优先级级别将其保存至相应的旅行时数据缓存区中;

预取旅行时数据时,按照旅行时缓存区的优先级进行检索;

基于检索结果对旅行时缓存区中的旅行时数据进行刷新。

优选地,预取旅行时数据时,按照旅行时缓存区的优先级进行检索包括:首先在优先级级别高的缓存区中进行检索,如果未发现需要的旅行时数据则在下一级缓存区中检索;如果在所有旅行时数据缓存区中均未发现需要的旅行时数据,则直接从原旅行时文件中读取。

优选地,所述多个优先级别的旅行时数据缓存区包括:本地磁盘缓存区、共享内存缓存区、炮点旅行时专用内存缓存区、检波点旅行时专用内存缓存区。

本发明提出的旅行时数据缓存方法与装置,在kirchhoff叠前深度偏移中实现了旅行时数据预取的多级缓存与刷新。本发明通过推演预测和数据排序,明显提高了旅行时数据的复用率;通过多级缓存与数据刷新,提高了数据访问的命中率和数据预取速率,避免因频繁访问异地磁盘而导致的io竞争和网络堵塞,明显提高了kirchhoff叠前深度偏移的计算性能。

本发明的方法和装置具有其它的特性和优点,这些特性和优点从并入本文中的附图和随后的具体实施例中将是显而易见的,或者将在并入本文中的附图和随后的具体实施例中进行详细陈述,这些附图和具体实施例共同用于解释本发明的特定原理。

附图说明

通过结合附图对本发明示例性实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显,其中,在本发明示例性实施例中,相同的参考标号通常代表相同部件。

图1为根据本发明的示例性实施方案的旅行时数据缓存方法的流程图;

图2为旅行时数据使用的统计分析结果及说明。

图3为单炮地震数据采集示意图。

图4为多级缓存区设计与数据流程示意图。

图5为数据刷新的流程图。

具体实施方式

下面将参照附图更详细地描述本发明。虽然附图中显示了本发明的优选实施例,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。

旅行时数据是kirchhoff叠前深度偏移的输入数据之一。由于内存有限、旅行时数据量大,偏移计算过程中需要频繁的获取不同点的旅行时数据,导致偏移计算性能大幅下降。因此,本发明通过推演、统计、分析旅行时数据的使用规律,对offset分组地震数据按炮点重新排序,设置当地磁盘、共享内存和专用内存三级缓存空间。在旅行时数据使用过程中,根据旅行时数据的优先级、使用周期将数据读入、置出到不同的缓存空间中。以下以512mb共偏移距道集数据进行kirchhoff叠前深度偏移为例来叙述发明内容。

参考图1,根据本发明示例性实施例的旅行时数据缓存方法主要包括以下步骤:

1)遍历地震道数据,统计出每个地震数据使用的旅行时信息,其中所述地震道数据是共偏移距道集数据。

首先,在进行偏移之前遍历一遍地震道数据,统计出每个地震道数据使用的旅行时信息。

旅行时信息可以包括旅行时使用炮数,每个炮点旅行时使用的次数,各炮旅行时数据使用的最小道个、最大道号,网编读取次数等。本领域技术人员应当理解,旅行时信息中还可以包括其他的数据。

2)建立各个地震道数据的缓存优先级别和位置索引。

在统计完成之后,建立每个地震道数据相应的缓存优先级别和位置索引等,如图2所示。

3)以地震道数据的炮号和道号为关键字对所述地震道数据进行排序,形成多个小炮集,每个小炮集共用一个炮点旅行时。

输入的地震道数据虽然是排序关键字为(偏移距顺序号、线号、纵线号)((offset,inline,crossline))的共偏移距数据,但在容差范围内的多个偏移道集,必定有多道是共炮点的。因此,对512mb的共偏移距道集以炮号和道号(即(炮点,道号))为关键字进行二次排序,形成偏移距分组数据的小炮集,如图3所示。在图3中,正中心的黑点为炮点位置,采集网格的每个网格点都是一个检波点。每一个同心圆环对一个偏移距组,同心圆环上采集的道集为一个共offset道集。比如图中白点对应的道集,它们共有一个炮点,可以组成一个小炮集。在旅行时数据缓存时,可以共用一个炮点旅行时。

这些小炮集可以共用炮点旅行时,这样旅行时数据的io量将减少将近一半。

4)设置多个优先级级别的旅行时数据缓存区,在旅行时数据的使用过程中,基于所述旅行时数据的优先级级别将其保存至相应的旅行时数据缓存区中。

在旅行时计算过程中,供kirchhoff叠前深度偏移使用的旅行时数据一般是保存在磁盘阵列或分布式文件系统中的。为了提高旅行时数据的访问速度,根据io性能、网络带宽和访问速率,设置多个级别的缓存区,分别是计算节点本地磁盘缓存区、共享内存缓存区、炮点旅行时专用内存缓存区、检波点旅行时专用内存缓存区。其中本地磁盘缓存区保存从磁盘阵列或分布式文件系统(即原旅行时文件)中读取的旅行时数据,或者从共享内存缓存区中置换出来的旅行时数据;共享内存缓存区用于保存从磁盘阵列或分布式文件系统中读取的新数据,或从本地磁盘缓存区读取曾过期而从共享内存缓存区中置出的数据,减少了网络流量、避免了io冲突。该缓存区尽量大,尽量多的保存旅行时数据,提高访问命中率。对于一个偏移距组内的小炮集来说,炮点是一定的,但检波点是变化的,但在一定范围内是可以复用的。因此,炮点旅行时专用内存缓存区用于存储已做插值等处理,可直接用于偏移计算的炮点旅行时数据;而检波点旅行时专用内存缓存区用于存储使用频率高的检波点旅行时数据,但未插值。当需要某个检波点旅行时时,从该专用缓存区中获得4个旅行时进行插值得到。这样,大大提高了旅行时数据复用率。

旅行时数据检索的优先级从高到低依次是:炮点旅行时专用内存缓存区、检波点旅行时专用内存缓存区、共享内存缓存区和本地磁盘缓存区,如图4所示。

在旅行时使用统计分析阶段,根据统计分析出来的炮点旅行时使用次数进行优先级设置,使用次数越多,编号越小,优先级越高。

5)预取旅行时数据时,按照旅行时缓存区的优先级进行检索。

预取旅行时数据时,首先在优先级级别高的缓存区中进行检索,如果未发现需要的旅行时数据则在下一级缓存区中检索;如果在所有旅行时数据缓存区中均未发现需要的旅行时数据,则直接从原旅行时文件中读取,并缓存到检波点专用内存缓存区中。

6)基于检索结果对旅行时缓存区中的旅行时数据进行刷新。

对于直接从原旅行时文件中读取的在所有旅行时数据缓存区中均未进行缓存的旅行时数据,对旅行时缓存区中的旅行时数据进行刷新的流程图如图5所示。

如果检波点旅行时专用内存缓存区中或炮点旅行时专用内存缓存区未满,则将在原旅行时文件中读取的检波点旅行时数据或炮点旅行时数据加入检波点旅行时专用内存缓存区中或炮点旅行时专用内存缓存区中,如果缓存区空间已满,则置换已过期的旅行时数据;

如果检波点旅行时专用内存缓存区中或炮点旅行时专用内存缓存区中没有过期的旅行时数据,则进行如下判断:

如果待加入检波点旅行时数据或炮点旅行时数据的优先级高于检波点旅行时专用内存缓存区中或炮点旅行时专用内存缓存区中的旅行时数据的优先级,则置换检波点旅行时专用内存缓存区中或炮点旅行时专用内存缓存区中优先级最低的旅行时数据;

如果待加入检波点旅行时数据或炮点旅行时数据的优先级没有高于检波点旅行时专用内存缓存区中或炮点旅行时专用内存缓存区中的旅行时数据的优先级,则将最先加入的旅行时数据剔除将其加入下一级缓存区中。

其中,某个旅行时是否过期,需要判断所有计算进程的计算进度、使用优先级和最大缓存个数等。

根据本发明的另一实施例的旅行时数据缓存装置,提出一种旅行时数据缓存装置。所述数据缓存装置包括:用于接收地震道数据的接收器、处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时能够实现以下步骤:

遍历地震道数据,统计出每个地震数据使用的旅行时信息,其中所述地震道数据是共偏移距道集数据;

建立各个地震道数据的缓存优先级别和位置索引;

以地震道数据的炮号和道号为关键字对所述地震道数据进行排序,形成多个小炮集,每个小炮集共用一个炮点旅行时;

设置多个优先级级别的旅行时数据缓存区,在旅行时数据的使用过程中,基于所述旅行时数据的优先级级别将其保存至相应的旅行时数据缓存区中;

预取旅行时数据时,按照旅行时缓存区的优先级进行检索;

基于检索结果对旅行时缓存区中的旅行时数据进行刷新。

优选地,预取旅行时数据时,按照旅行时缓存区的优先级进行检索包括:首先在优先级级别高的缓存区中进行检索,如果未发现需要的旅行时数据则在下一级缓存区中检索;如果在所有旅行时数据缓存区中均未发现需要的旅行时数据,则直接从原旅行时文件中读取。

优选地,所述多个优先级别的旅行时数据缓存区包括:本地磁盘缓存区、共享内存缓存区、炮点旅行时专用内存缓存区、检波点旅行时专用内存缓存区:

本发明通过推演预测和数据排序,提高了旅行时数据的复用率;通过多级缓存与数据刷新,提高了数据访问的命中率和数据预取速率,避免因频繁访问异地磁盘而导致的io竞争和网络堵塞,明显提高了叠前深度偏移的计算性能。

应用示例

下面以对旅行时数据实施本发明为例来说明本发明的实施过程及相关效果。

将包含本发明的旅行时数据缓存方法的kirchhoff叠前深度偏移软件部署在64节点集群的hadoop运行环境下,选用某勘探工区72gb地震数据和400mb深度域速度模型数据进行kirchhoff叠前深度偏移处理。测试表明:采用多级缓存和刷新技术,各节点的cpu利用率由原来的55%提高到95%,网络流量从30gb/s降低到小于3gb/s,内存使用平稳,整体计算性能提高了5.8倍。

本领域技术人员应理解,上面对本发明的实施例的描述的目的仅为了示例性地说明本发明的实施例的有益效果,并不意在将本发明的实施例限制于所给出的任何示例。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1