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

文档序号:6021312阅读:205来源:国知局
专利名称:一种三维地震构造曲率性能优化方法
技术领域
本发明属于地球科学中的石油地球物理勘探领域,具体涉及一种三维地震构造曲率性能优化方法,用于地震资料后期处理中对地震曲率属性的提取。
背景技术
构造曲率是利用曲率的几何意义进行地质构造面的形态和弯曲变形程度分析,并以此作为裂缝发育预测的评价因子。当岩石受构造应力挤压时,会沿某一方向发生弯曲(初始情况是无弯曲的岩层),中性面以上部位承受拉张应力而形成张裂缝,中性面以下则承受挤压力,不能形成张裂缝。根据岩层发生形变与曲率的关系来预测张裂缝的分布,一般曲率越大,张应力也应越大,张裂缝也越发育,曲率值可间接反映张性裂缝的多少(相对值)。现有的构造曲率计算实现的流程框图如图1所示,其计算步骤可表述如下:1、在三维地震体中截取相邻P道N个样点组成一个N*P的地震子体,P为3X3、3X5、...、9X9 等;2、用互相关方法求取中心道与相邻道的延迟时间;3、采用最小二乘法对地震子体中所有道的延迟时间值进行二次曲面拟合,得到二次曲面方程;4、根据二次曲面方程的系数计算各种曲率参数。根据上述的曲率计算方法可以提取出8种曲率属性(包括平均曲率、高斯曲率、最大曲率、最小曲率、正曲率、负曲率、倾向曲率、走向曲率),所得的属性对断层、裂缝及河道的刻画效果非常好,从而可以帮助地球物理领域的专业人员很好地进行裂缝发育带及其产状的预测。但是在现今由三维向多维发展的地震勘探中,需要处理的地震数据量越来越大,基于上述构造曲率方法的计算速度还是比较慢,影响实际生产项目的进度,因此,必须在充分利用软硬件的前提下进行方法的性能优化,提升提取曲率属性的效率。

发明内容
本发明的目的在于解决上述现有技术中存在的难题,提供一种基于向量化和线程池的三维地震构造曲率性能优化方法,利用计算机的优势,根据现有硬件技术的发展,借用现在的计算机并行处理技术,实现自适应的构造曲率并行优化。本发明是通过以下技术方案实现的:一种三维地震构造曲率性能优化方法,所述方法首先通过对三维地震构造曲率算法的代码进行分析得到适合向量化的核心代码;然后对所述核心代码进行向量化优化;最后利用线程池技术运行所述经过向量化优化后的核心代码,实现基于多线程的三维地震构造曲率的计算。所述通过对三维地震构造曲率算法的代码进行分析得到适合向量化的核心代码是这样实现的:对三维地震构造曲率算法的代码执行的计算时间进行统计,找到计算热点,即计算花费时间较多的代码部分,然后在计算热点中寻找到一批可以同时应用于一组地震数据的核心代码,所述核心代码即为适合向量化的核心代码。所述对所述核心代码进行向量化优化是根据向量化计算的编码需求对所述核心代码进行代码重构得到重构后的核心代码,具体包括以下步骤:①对网格数据进行存储调整,即让数据按照内存对齐,令其满足向量化运算的数据访问要求;所述网格数据就是所述的一组地震数据,它是构造曲率计算时需要的一个在线、道、时间三个方向上的三维数据体;所述按照内存对齐是指按照可以被处理器的位数所整除的方式来定义数据和变量类型,来达到处理器读写内存的最快速度,从而提升性能,经过内存对齐后,CPU的内存访问速度大大提升;②通过对所述核心代码对应的核心算法中的互相关运算和多项式拟合运算进行依赖性分析,所述依赖性分析包括控制流的分析和循环迭代控制的分析,然后对所述核心代码进行重构,重构后的核心代码可以同时进行多组地震数据计算;最后编译器直接利用指令集中的向量指令对所述重构后的核心代码进行优化,实现对三维地震构造曲率核心算法的向量化;所述重构包括循环体的变换和分解,具体如下:去除循环体中的指针,将循环体中有数据相关性的代码变换为无关性的代码,将循环体中的程序分支结构分解为无分支结构。所述利用线程池技术运行所述经过向量化优化后的核心代码,实现基于多线程的三维地震构造曲率的计算是根据计算需求创建由I/o线程和一组计算线程组成的线程池,通过线程池对线程进行调度管理,最终实现基于多线程的三维地震构造曲率的计算,其具体包括以下步骤:(I)输入参数:所述参数包括地震数据的索引信息、曲率计算的网格大小、需要计算的地震数据的起止线号、起止道号及起止时间、需要计算的构造曲率类别以及线程池中计算线程的数目;所述索引信息包括地震数据所在的名称、区块及盆地;所述构造曲率类别包括平均曲率、高斯曲率、最大曲率、最小曲率、正曲率、负曲率、倾向曲率及走向曲率;(2) I/O线程通过步骤⑴中输入参数中的索引信息及网格大小,按照计算顺序读取需要进行曲率计算的若干道地震数据;然后针对计算线程的个数对需要计算的地震数据进行负载均衡的分配;接着发送计算信号通知所有计算线程开始计算;(3)在计算线程进行计算的同时,I/O线程接着读取下一次曲率计算需要的若干道地震数据,然后进入等待当前计算线程进行构造曲率计算的状态;(4)计算线程在得到I/O线程发送的计算信号后,根据需要计算的构造曲率类别利用所述经过向量化优化后的核心代码完成构造曲率的计算;在当前计算线程完成计算后发送计算完成信号给I/o线程,通知I/O线程计算结束;进入等待下一轮地震数据的状态;(5) I/O线程在得到当前计算线程发送的计算完成信号后,将目前已计算完成的构造曲率数据进行写操作,写操作包括将索引信息写入数据库及构造曲率数据写入磁盘的操作;写操作完成后,继续将已经读入的地震数据针对各个计算线程进行同样的负载均衡的分配,然后发送计算信号通知计算线程开始计算;(6)重复步骤(3)、(4)和(5),直至所有地震数据都被I/O线程读取并合理分配给计算线程,并进行构造曲率的计算完成后,I/o线程发送结束信号给所有计算线程,I/O线程和所有计算线程退出,最终完成三维地震构造曲率的计算。在所述步骤⑴中,所述线程池中计算线程的数目是这样确定的:当用户指定时,用户通过修改参数中的线程池中计算线程的数目指定线程池中需要创建的计算线程的数目;当用户不指定时,所述方法根据硬件核数对计算线程的数目进行自适应处理。与现有技术相比,本发明的有益效果是:(I)利用本发明的方法使得用户在提取曲率属性计算上的等待时间大大减少,而且操作方便,可以实现计算的暂停及回滚等功能,更加人性化。(2)本发明的方法是一个专门解决地震资料解释及储存预测过程中提取三维地震属性的实用工具,使用它可以大幅度提高工作效率,并保证计算的正确性和品质;同时能效比及CPU利用率上也有很大幅度的提高,从而可以缩短科研或处理解释项目的工作周期,达到了提高工作效率的目的,也可以节省大量资源。


图1是现有技术中构造曲率计算实现的步骤框图。图2是本发明方法中使用线程池技术优化构造曲率计算的步骤框图。
具体实施例方式下面结合附图对本发明作进一步详细描述:一种基于线程池的三维地震构造曲率性能优化方法,所述方法利用计算机并行处理技术,优化三维地震构造曲率的计算性能,提高计算构造曲率的速度。所述方法首先通过对构造曲率核心算法代码的分析,寻找到适合向量化的算法代码,根据向量化计算编码的需求对适合向量化的算法代码进行代码重构,这样编译器可以直接利用指令集中的向量指令对重构后的算法代码进行向量化。要实现对构造曲率核心算法的向量化不仅需要对该算法的实现过程及算法结构相当了解,还需要清楚算法中的数据依赖及循环控制,能够找出可以向量化的实现代码,同时对计算机的软硬件发展和指令集层次的实现也要相当了解。再次,所述方法利用线程池技术,根据计算的需求创建由I/O线程和一组计算线程组成的线程池,通过线程池对线程进行调度管理,完成各个线程之间的无缝配合并完成I/o和计算之间的同步操作,使得三维构造曲率计算的性能得到优化。线程池技术的实现依赖于多线程技术的熟练掌握及慎密的并行化思维,需要清楚在何时I/o线程该发送计算信号给计算线程,I/O线程如何得到计算线程的计算完成信号等调度都需要该实现人员有并行的处理思维;对于I/o线程准备好的数据如何均衡地分配给计算线程也是需要通过一系列计算和分配。而且在该方法中由于I/o线程的存在,通过在计算的同时对下一轮数据的读取准备,在一定程度上解决了实现方法计算时的I/o瓶颈,也起到了性能优化的作用。另夕卜,用户可以通过修改参数文件指定参与计算的线程数目,在用户不指定的情况下所述方法会根据硬件核数进行自适应处理。所述方法首先通过对代码及算法的分析,寻找到适合向量化的算法代码,进行向量化优化,所述向量化优化包括:①对网格数据的存储调整,令其满足向量化运算的数据访问要求;②通过对核心算法中的互相关和多项式拟合等算法进行依赖性分析,包括控制流的分析和循环迭代控制的分析,进行循环体的变换和分解(即尽量去除循环体中指针,尽量变换循环体中有数据相关性代码为数据无关性代码,尽量分解循环体中的程序分支结构为无分支结构。),最终使得编译器根据优化后的代码(首先这里指的优化是针对需要进行向量化的优化,优化后的代码即是通过对代码的重构得到,就是改变代码的一些执行流程,或者代码中的一些表达式的顺序,表达式的表述等。)可以直接利用指令集(SSE)中的向量指令对三维地震构造曲率核心算法进行向量化(即上述优化过的代码可以被编译器自动的选择向量指令进行优化,最终达到核心算法的向量化。)。如图2所示,所述方法中的使用线程池技术修改算法包括以下步骤:(I)输入地震数据所在的名称、区块及盆地等索引信息;输入曲率计算的网格大小,需要计算的地震数据的起止线号、起止道号及起止时间,需要计算的构造曲率类别,线程池中计算线程的数目;所述构造曲率类别包括平均曲率、高斯曲率、最大曲率、最小曲率、正曲率、负曲率、倾向曲率及走向曲率;(2) I/O线程通过步骤(I)中输入参数中的索引信息及网格大小信息,按照计算顺序读取需要进行曲率计算的若干道地震数据;然后针对计算线程的个数对需要计算的地震数据进行负载均衡的分配;接着发送计算信号通知所有计算线程开始计算;(3)在计算线程进行计算的同时,I/O线程接着读取下一次曲率计算需要的若干道地震数据,然后进入等待当前计算线程进行构造曲率计算的状态;(4)计算线程在得到I/O线程发送的计算信号后,根据需要计算的构造曲率类别完成构造曲率的计算;在当前计算线程完成计算后发送计算完成信号通知I/o线程计算结束;进入等待下一轮地震数据的状态;(5) I/O线程在得到当前计算线程的计算完成信号,将目前已计算完成的构造曲率数据进行写操作,其中包括将索引信息写入数据库及构造曲率数据写入磁盘的操作;写操作完成后,继续将上一次读入的地震数据针对各个计算线程进行同样的负载均衡的分配,然后发送计算信号通知计算线程开始计算; (6)重复步骤(3)、(4)和(5),直至所有地震数据都被I/O线程读取并合理分配给计算线程,并进行构造曲率的计算完成后,I/o线程发送结束信号给所有计算线程,I/O线程和所有计算线程退出,最终完成三维地震构造曲率的计算。在步骤(I)中,用户可以根据自己的硬件机器修改参数文件来指定要参与计算的线程数,在用户不指定的情况下该方法也可以做到对硬件核数的自适应处理。在本方法中,I/O线程可以做到合理优化地分配任务,充分发挥出计算线程的计算能力,分配均衡的分工合作最终大大提高计算构造曲率的速度。本发明方法通过利用计算机并行处理技术,提供并行计算的方式,利用三维地震构造曲率原理来提取曲率地震属性,达到正确、快速获得曲率地震属性的目的,充分发挥了现今计算机硬件的优势,提供快速的计算,同时达到节省功耗,节约资源成本的功效。本发明的关键不在于曲率计算算法的先进性,而在于向量化技术、线程池技术、多线程技术及I/O并行等几种技术的综合应用,及具体结合计算机软硬件进行计算的流程,使其能满足具体生产中的快速实用性。本发明主要解决了提取地震属性速度慢的问题,使得提取地震属性的效率明显提高(在24个计算线程的情况下比原来提高了 22倍),测试数据如表I所示。利用本发明的方法,在速度大大提升的情况下,提取得到的结果和原始算法的结果一模一样。该项发明特别适合于现在三维甚至多维数据资料处理中大工区资料的属性提取任务。
权利要求
1.一种三维地震构造曲率性能优化方法,其特征在于:所述方法首先通过对三维地震构造曲率算法的代码进行分析得到适合向量化的核心代码;然后对所述核心代码进行向量化优化;最后利用线程池技术运行所述经过向量化优化后的核心代码,实现基于多线程的三维地震构造曲率的计算。
2.根据权利要求1所述的三维地震构造曲率性能优化方法,其特征在于:所述通过对三维地震构造曲率算法的代码进行分析得到适合向量化的核心代码是这样实现的:对三维地震构造曲率算法的代码执行的计算时间进行统计,找到计算热点,即计算花费时间较多的代码部分,然后在计算热点中寻找到一批可以同时应用于一组地震数据的核心代码,所述核心代码即为适合向量化的核心代码。
3.根据权利要求2所述的三维地震构造曲率性能优化方法,其特征在于:所述对所述核心代码进行向量化优化是根据向量化计算的编码需求对所述核心代码进行代码重构得到重构后的核心代码,具体包括以下步骤: ①对网格数据进行存储调整,即让数据按照内存对齐,令其满足向量化运算的数据访问要求;所述网格数据就是所述的一组地震数据,它是构造曲率计算时需要的一个在线、道、时间三个方向上的三维数据体;所述按照内存对齐是指按照可以被处理器的位数所整除的方式来定义数据和变量类型; ②通过对所述核心代码对应的核心算法中的互相关运算和多项式拟合运算进行依赖性分析,所述依赖性分析包括控制流的分析和循环迭代控制的分析;然后对所述核心代码进行重构,重构后的核心代码可以同时进行多组地震数据计算;最后编译器直接利用指令集中的向量指令对所述重构后的核心代码进行优化,实现对三维地震构造曲率核心算法的向量化; 所述重构包括循环体的变换和分解,具体如下:去除循环体中的指针,将循环体中有数据相关性的代码变换为无关性的代码,将循环体中的程序分支结构分解为无分支结构。
4.根据权利要求3所述的三维地震构造曲率性能优化方法,其特征在于:所述利用线程池技术运行所述经过向量化优化后的核心代码,实现基于多线程的三维地震构造曲率的计算是根据计算需求创建由I/O线程和一组计算线程组成的线程池,通过线程池对线程进行调度管理,最终实现基于多线程的三维地震构造曲率的计算,其具体包括以下步骤: (1)输入参数:所述参数包括地震数据的索引信息、曲率计算的网格大小、需要计算的地震数据的起止线号、起止道号及起止时间、需要计算的构造曲率类别以及线程池中计算线程的数目;所述索引信息包括地震数据所在的名称、区块及盆地;所述构造曲率类别包括平均曲率、高斯曲率、最大曲率、最小曲率、正曲率、负曲率、倾向曲率及走向曲率; (2)I/O线程通过步骤(I)中输入参数中的索引信息及网格大小,按照计算顺序读取需要进行曲率计算的若干道地震数据;然后针对计算线程的个数对需要计算的地震数据进行负载均衡的分配;接着发送计算信号通知所有计算线程开始计算; (3)在计算线程进行计算的同时,I/O线程接着读取下一次曲率计算需要的若干道地震数据,然后进入等待当前计算线程进行构造曲率计算的状态; (4)计算线程在得到I/O线程发送的计算信号后,根据需要计算的构造曲率类别利用所述经过向量化优化后的核心代码完成构造曲率的计算;在当前计算线程完成计算后发送计算完成信号给I/O线程,通知I/O线程计算结束;进入等待下一轮地震数据的状态;(5)I/O线程在得到当前计算线程发送的计算完成信号后,将目前已计算完成的构造曲率数据进行写操作,写操作包括将索引信息写入数据库及构造曲率数据写入磁盘的操作;写操作完成后,继续将已经读入的地震数据针对各个计算线程进行同样的负载均衡的分配,然后发送计算信号通知计算线程开始计算; (6)重复步骤(3)、(4)和(5),直至所有地震数据都被I/O线程读取并合理分配给计算线程,并进行构造曲率的计算完成后,I/O线程发送结束信号给所有计算线程,I/O线程和所有计算线程退出,最终完成三维地震构造曲率的计算。
5.根据权利要求4所述的三维地震构造曲率性能优化方法,其特征在于:在所述步骤(I)中,所述线程池中计算线程的数目是这样确定的:当由用户指定时,用户通过修改参数中的线程池中计算线程的数目指定线程池中需要创建的计算线程的数目;当用户不指定时,所述方法根据硬件核数对计算 线程的数目进行自适应处理。
全文摘要
本发明提供了一种基于向量化和线程池的三维地震构造曲率性能优化方法,属于地球科学中的石油地球物理勘探领域。所述方法首先通过对三维地震构造曲率算法的代码进行分析得到适合向量化的核心代码;然后对所述核心代码进行向量化优化;最后利用线程池技术运行所述经过向量化优化后的核心代码,实现基于多线程的三维地震构造曲率的计算。本发明通过利用计算机并行处理技术,达到正确、快速获得曲率地震属性的目的。本发明充分发挥现今计算机硬件的优势,通过优化提取曲率算法的性能,达到节省功耗,节约资源成本的功效。
文档编号G01V1/28GK103091708SQ20111033483
公开日2013年5月8日 申请日期2011年10月28日 优先权日2011年10月28日
发明者许自龙, 杨尚琴, 岳承琪, 宋志翔 申请人:中国石油化工股份有限公司, 中国石油化工股份有限公司石油物探技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1