首页> 中国专利> 一种三维地震构造曲率性能优化方法

一种三维地震构造曲率性能优化方法

摘要

本发明提供了一种基于向量化和线程池的三维地震构造曲率性能优化方法,属于地球科学中的石油地球物理勘探领域。所述方法首先通过对三维地震构造曲率算法的代码进行分析得到适合向量化的核心代码;然后对所述核心代码进行向量化优化;最后利用线程池技术运行所述经过向量化优化后的核心代码,实现基于多线程的三维地震构造曲率的计算。本发明通过利用计算机并行处理技术,达到正确、快速获得曲率地震属性的目的。本发明充分发挥现今计算机硬件的优势,通过优化提取曲率算法的性能,达到节省功耗,节约资源成本的功效。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-10-07

    授权

    授权

  • 2013-06-12

    实质审查的生效 IPC(主分类):G01V1/28 申请日:20111028

    实质审查的生效

  • 2013-05-08

    公开

    公开

说明书

技术领域

本发明属于地球科学中的石油地球物理勘探领域,具体涉及一种三维地震 构造曲率性能优化方法,用于地震资料后期处理中对地震曲率属性的提取。

背景技术

构造曲率是利用曲率的几何意义进行地质构造面的形态和弯曲变形程度分 析,并以此作为裂缝发育预测的评价因子。当岩石受构造应力挤压时,会沿某 一方向发生弯曲(初始情况是无弯曲的岩层),中性面以上部位承受拉张应力而形 成张裂缝,中性面以下则承受挤压力,不能形成张裂缝。根据岩层发生形变与 曲率的关系来预测张裂缝的分布,一般曲率越大,张应力也应越大,张裂缝也 越发育,曲率值可间接反映张性裂缝的多少(相对值)。

现有的构造曲率计算实现的流程框图如图1所示,其计算步骤可表述如下:

1、在三维地震体中截取相邻P道N个样点组成一个N*P的地震子体,P 为3×3、3×5、…、9×9等;

2、用互相关方法求取中心道与相邻道的延迟时间;

3、采用最小二乘法对地震子体中所有道的延迟时间值进行二次曲面拟合, 得到二次曲面方程;

4、根据二次曲面方程的系数计算各种曲率参数。

根据上述的曲率计算方法可以提取出8种曲率属性(包括平均曲率、高斯 曲率、最大曲率、最小曲率、正曲率、负曲率、倾向曲率、走向曲率),所得的 属性对断层、裂缝及河道的刻画效果非常好,从而可以帮助地球物理领域的专 业人员很好地进行裂缝发育带及其产状的预测。但是在现今由三维向多维发展 的地震勘探中,需要处理的地震数据量越来越大,基于上述构造曲率方法的计 算速度还是比较慢,影响实际生产项目的进度,因此,必须在充分利用软硬件 的前提下进行方法的性能优化,提升提取曲率属性的效率。

发明内容

本发明的目的在于解决上述现有技术中存在的难题,提供一种基于向量化 和线程池的三维地震构造曲率性能优化方法,利用计算机的优势,根据现有硬 件技术的发展,借用现在的计算机并行处理技术,实现自适应的构造曲率并行 优化。

本发明是通过以下技术方案实现的:

一种三维地震构造曲率性能优化方法,所述方法首先通过对三维地震构造 曲率算法的代码进行分析得到适合向量化的核心代码;然后对所述核心代码进 行向量化优化;最后利用线程池技术运行所述经过向量化优化后的核心代码, 实现基于多线程的三维地震构造曲率的计算。

所述通过对三维地震构造曲率算法的代码进行分析得到适合向量化的核心 代码是这样实现的:对三维地震构造曲率算法的代码执行的计算时间进行统计, 找到计算热点,即计算花费时间较多的代码部分,然后在计算热点中寻找到一 批可以同时应用于一组地震数据的核心代码,所述核心代码即为适合向量化的 核心代码。

所述对所述核心代码进行向量化优化是根据向量化计算的编码需求对所述 核心代码进行代码重构得到重构后的核心代码,具体包括以下步骤:

①对网格数据进行存储调整,即让数据按照内存对齐,令其满足向量化运 算的数据访问要求;所述网格数据就是所述的一组地震数据,它是构造曲率计 算时需要的一个在线、道、时间三个方向上的三维数据体;所述按照内存对齐 是指按照可以被处理器的位数所整除的方式来定义数据和变量类型,来达到处 理器读写内存的最快速度,从而提升性能,经过内存对齐后,CPU的内存访问 速度大大提升;

②通过对所述核心代码对应的核心算法中的互相关运算和多项式拟合运 算进行依赖性分析,所述依赖性分析包括控制流的分析和循环迭代控制的分析, 然后对所述核心代码进行重构,重构后的核心代码可以同时进行多组地震数据 计算;最后编译器直接利用指令集中的向量指令对所述重构后的核心代码进行 优化,实现对三维地震构造曲率核心算法的向量化;

所述重构包括循环体的变换和分解,具体如下:去除循环体中的指针,将 循环体中有数据相关性的代码变换为无关性的代码,将循环体中的程序分支结 构分解为无分支结构。

所述利用线程池技术运行所述经过向量化优化后的核心代码,实现基于多 线程的三维地震构造曲率的计算是根据计算需求创建由I/O线程和一组计算线 程组成的线程池,通过线程池对线程进行调度管理,最终实现基于多线程的三 维地震构造曲率的计算,其具体包括以下步骤:

(1)输入参数:所述参数包括地震数据的索引信息、曲率计算的网格大小、 需要计算的地震数据的起止线号、起止道号及起止时间、需要计算的构造曲率 类别以及线程池中计算线程的数目;所述索引信息包括地震数据所在的名称、 区块及盆地;所述构造曲率类别包括平均曲率、高斯曲率、最大曲率、最小曲 率、正曲率、负曲率、倾向曲率及走向曲率;

(2)I/O线程通过步骤(1)中输入参数中的索引信息及网格大小,按照计 算顺序读取需要进行曲率计算的若干道地震数据;然后针对计算线程的个数对 需要计算的地震数据进行负载均衡的分配;接着发送计算信号通知所有计算线 程开始计算;

(3)在计算线程进行计算的同时,I/O线程接着读取下一次曲率计算需要 的若干道地震数据,然后进入等待当前计算线程进行构造曲率计算的状态;

(4)计算线程在得到I/O线程发送的计算信号后,根据需要计算的构造曲 率类别利用所述经过向量化优化后的核心代码完成构造曲率的计算;在当前计 算线程完成计算后发送计算完成信号给I/O线程,通知I/O线程计算结束;进入 等待下一轮地震数据的状态;

(5)I/O线程在得到当前计算线程发送的计算完成信号后,将目前已计算 完成的构造曲率数据进行写操作,写操作包括将索引信息写入数据库及构造曲 率数据写入磁盘的操作;写操作完成后,继续将已经读入的地震数据针对各个 计算线程进行同样的负载均衡的分配,然后发送计算信号通知计算线程开始计 算;

(6)重复步骤(3)、(4)和(5),直至所有地震数据都被I/O线程读取并 合理分配给计算线程,并进行构造曲率的计算完成后,I/O线程发送结束信号给 所有计算线程,I/O线程和所有计算线程退出,最终完成三维地震构造曲率的计 算。

在所述步骤(1)中,所述线程池中计算线程的数目是这样确定的:当用户 指定时,用户通过修改参数中的线程池中计算线程的数目指定线程池中需要创 建的计算线程的数目;当用户不指定时,所述方法根据硬件核数对计算线程的 数目进行自适应处理。

与现有技术相比,本发明的有益效果是:

(1)利用本发明的方法使得用户在提取曲率属性计算上的等待时间大大减 少,而且操作方便,可以实现计算的暂停及回滚等功能,更加人性化。

(2)本发明的方法是一个专门解决地震资料解释及储存预测过程中提取三 维地震属性的实用工具,使用它可以大幅度提高工作效率,并保证计算的正确 性和品质;同时能效比及CPU利用率上也有很大幅度的提高,从而可以缩短科 研或处理解释项目的工作周期,达到了提高工作效率的目的,也可以节省大量 资源。

附图说明

图1是现有技术中构造曲率计算实现的步骤框图。

图2是本发明方法中使用线程池技术优化构造曲率计算的步骤框图。

具体实施方式

下面结合附图对本发明作进一步详细描述:

一种基于线程池的三维地震构造曲率性能优化方法,所述方法利用计算机 并行处理技术,优化三维地震构造曲率的计算性能,提高计算构造曲率的速度。

所述方法首先通过对构造曲率核心算法代码的分析,寻找到适合向量化的 算法代码,根据向量化计算编码的需求对适合向量化的算法代码进行代码重构, 这样编译器可以直接利用指令集中的向量指令对重构后的算法代码进行向量 化。要实现对构造曲率核心算法的向量化不仅需要对该算法的实现过程及算法 结构相当了解,还需要清楚算法中的数据依赖及循环控制,能够找出可以向量 化的实现代码,同时对计算机的软硬件发展和指令集层次的实现也要相当了解。

再次,所述方法利用线程池技术,根据计算的需求创建由I/O线程和一组 计算线程组成的线程池,通过线程池对线程进行调度管理,完成各个线程之间 的无缝配合并完成I/O和计算之间的同步操作,使得三维构造曲率计算的性能得 到优化。线程池技术的实现依赖于多线程技术的熟练掌握及慎密的并行化思维, 需要清楚在何时I/O线程该发送计算信号给计算线程,I/O线程如何得到计算线 程的计算完成信号等调度都需要该实现人员有并行的处理思维;对于I/O线程准 备好的数据如何均衡地分配给计算线程也是需要通过一系列计算和分配。而且 在该方法中由于I/O线程的存在,通过在计算的同时对下一轮数据的读取准备, 在一定程度上解决了实现方法计算时的I/O瓶颈,也起到了性能优化的作用。另 外,用户可以通过修改参数文件指定参与计算的线程数目,在用户不指定的情 况下所述方法会根据硬件核数进行自适应处理。

所述方法首先通过对代码及算法的分析,寻找到适合向量化的算法代码, 进行向量化优化,所述向量化优化包括:①对网格数据的存储调整,令其满足 向量化运算的数据访问要求;②通过对核心算法中的互相关和多项式拟合等算 法进行依赖性分析,包括控制流的分析和循环迭代控制的分析,进行循环体的 变换和分解(即尽量去除循环体中指针,尽量变换循环体中有数据相关性代码 为数据无关性代码,尽量分解循环体中的程序分支结构为无分支结构。),最终 使得编译器根据优化后的代码(首先这里指的优化是针对需要进行向量化的优 化,优化后的代码即是通过对代码的重构得到,就是改变代码的一些执行流程, 或者代码中的一些表达式的顺序,表达式的表述等。)可以直接利用指令集(SSE) 中的向量指令对三维地震构造曲率核心算法进行向量化(即上述优化过的代码 可以被编译器自动的选择向量指令进行优化,最终达到核心算法的向量化。)。

如图2所示,所述方法中的使用线程池技术修改算法包括以下步骤:

(1)输入地震数据所在的名称、区块及盆地等索引信息;输入曲率计算的 网格大小,需要计算的地震数据的起止线号、起止道号及起止时间,需要计算 的构造曲率类别,线程池中计算线程的数目;所述构造曲率类别包括平均曲率、 高斯曲率、最大曲率、最小曲率、正曲率、负曲率、倾向曲率及走向曲率;

(2)I/O线程通过步骤(1)中输入参数中的索引信息及网格大小信息,按 照计算顺序读取需要进行曲率计算的若干道地震数据;然后针对计算线程的个 数对需要计算的地震数据进行负载均衡的分配;接着发送计算信号通知所有计 算线程开始计算;

(3)在计算线程进行计算的同时,I/O线程接着读取下一次曲率计算需要 的若干道地震数据,然后进入等待当前计算线程进行构造曲率计算的状态;

(4)计算线程在得到I/O线程发送的计算信号后,根据需要计算的构造曲 率类别完成构造曲率的计算;在当前计算线程完成计算后发送计算完成信号通 知I/O线程计算结束;进入等待下一轮地震数据的状态;

(5)I/O线程在得到当前计算线程的计算完成信号,将目前已计算完成的 构造曲率数据进行写操作,其中包括将索引信息写入数据库及构造曲率数据写 入磁盘的操作;写操作完成后,继续将上一次读入的地震数据针对各个计算线 程进行同样的负载均衡的分配,然后发送计算信号通知计算线程开始计算;

(6)重复步骤(3)、(4)和(5),直至所有地震数据都被I/O线程读取并 合理分配给计算线程,并进行构造曲率的计算完成后,I/O线程发送结束信号给 所有计算线程,I/O线程和所有计算线程退出,最终完成三维地震构造曲率的计 算。

在步骤(1)中,用户可以根据自己的硬件机器修改参数文件来指定要参与 计算的线程数,在用户不指定的情况下该方法也可以做到对硬件核数的自适应 处理。

在本方法中,I/O线程可以做到合理优化地分配任务,充分发挥出计算线程 的计算能力,分配均衡的分工合作最终大大提高计算构造曲率的速度。

本发明方法通过利用计算机并行处理技术,提供并行计算的方式,利用三 维地震构造曲率原理来提取曲率地震属性,达到正确、快速获得曲率地震属性 的目的,充分发挥了现今计算机硬件的优势,提供快速的计算,同时达到节省 功耗,节约资源成本的功效。本发明的关键不在于曲率计算算法的先进性,而 在于向量化技术、线程池技术、多线程技术及I/O并行等几种技术的综合应用, 及具体结合计算机软硬件进行计算的流程,使其能满足具体生产中的快速实用 性。

本发明主要解决了提取地震属性速度慢的问题,使得提取地震属性的效率 明显提高(在24个计算线程的情况下比原来提高了22倍),测试数据如表1所 示。利用本发明的方法,在速度大大提升的情况下,提取得到的结果和原始算 法的结果一模一样。该项发明特别适合于现在三维甚至多维数据资料处理中大 工区资料的属性提取任务。

  算法   线程数   计算范围   计算时间   速度提高倍数   构造曲率分析   1   1GB叠偏数据   220分钟   1   构造曲率分析   8   1GB叠偏数据   28分钟   7.8   构造曲率分析   24   1GB叠偏数据   10分钟   22

表1

上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言, 在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形, 而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是 优选的,而并不具有限制性的意义。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号