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

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

Info

Publication number
CN103091708B
CN103091708B CN201110334836.1A CN201110334836A CN103091708B CN 103091708 B CN103091708 B CN 103091708B CN 201110334836 A CN201110334836 A CN 201110334836A CN 103091708 B CN103091708 B CN 103091708B
Authority
CN
China
Prior art keywords
calculating
code
thread
seismics
vectorization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110334836.1A
Other languages
English (en)
Other versions
CN103091708A (zh
Inventor
许自龙
杨尚琴
岳承琪
宋志翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Petroleum and Chemical Corp
Sinopec Geophysical Research Institute
Original Assignee
China Petroleum and Chemical Corp
Sinopec Geophysical Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Petroleum and Chemical Corp, Sinopec Geophysical Research Institute filed Critical China Petroleum and Chemical Corp
Priority to CN201110334836.1A priority Critical patent/CN103091708B/zh
Publication of CN103091708A publication Critical patent/CN103091708A/zh
Application granted granted Critical
Publication of CN103091708B publication Critical patent/CN103091708B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

一种三维地震构造曲率性能优化方法
技术领域
本发明属于地球科学中的石油地球物理勘探领域,具体涉及一种三维地震构造曲率性能优化方法,用于地震资料后期处理中对地震曲率属性的提取。
背景技术
构造曲率是利用曲率的几何意义进行地质构造面的形态和弯曲变形程度分析,并以此作为裂缝发育预测的评价因子。当岩石受构造应力挤压时,会沿某一方向发生弯曲(初始情况是无弯曲的岩层),中性面以上部位承受拉张应力而形成张裂缝,中性面以下则承受挤压力,不能形成张裂缝。根据岩层发生形变与曲率的关系来预测张裂缝的分布,一般曲率越大,张应力也应越大,张裂缝也越发育,曲率值可间接反映张性裂缝的多少(相对值)。
现有的构造曲率计算实现的流程框图如图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
上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。

Claims (2)

1.一种三维地震构造曲率性能优化方法,其特征在于:所述方法首先通过对三维地震构造曲率算法的代码进行分析得到适合向量化的核心代码;然后对所述核心代码进行向量化优化;最后利用线程池技术运行经过向量化优化后的核心代码,实现基于多线程的三维地震构造曲率的计算;
所述通过对三维地震构造曲率算法的代码进行分析得到适合向量化的核心代码是这样实现的:对三维地震构造曲率算法的代码执行的计算时间进行统计,找到计算热点,即计算花费时间较多的代码部分,然后在计算热点中寻找到一批可以同时应用于一组地震数据的核心代码,所述核心代码即为适合向量化的核心代码;
所述对所述核心代码进行向量化优化是根据向量化计算的编码需求对所述核心代码进行代码重构得到重构后的核心代码,具体包括以下步骤:
①对网格数据进行存储调整,即让数据按照内存对齐,令其满足向量化运算的数据访问要求;所述网格数据就是所述的一组地震数据,它是构造曲率计算时需要的一个在线、道、时间三个方向上的三维数据体;所述按照内存对齐是指按照可以被处理器的位数所整除的方式来定义数据和变量类型;
②通过对所述核心代码对应的核心算法中的互相关运算和多项式拟合运算进行依赖性分析,所述依赖性分析包括控制流的分析和循环迭代控制的分析;然后对所述核心代码进行重构,重构后的核心代码可以同时进行多组地震数据计算;最后编译器直接利用指令集中的向量指令对所述重构后的核心代码进行优化,实现对三维地震构造曲率核心算法的向量化;
所述重构包括循环体的变换和分解,具体如下:去除循环体中的指针,将循环体中有数据相关性的代码变换为无关性的代码,将循环体中的程序分支结构分解为无分支结构;
所述利用线程池技术运行经过向量化优化后的核心代码,实现基于多线程的三维地震构造曲率的计算是根据计算需求创建由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线程和所有计算线程退出,最终完成三维地震构造曲率的计算。
2.根据权利要求1所述的三维地震构造曲率性能优化方法,其特征在于:在所述步骤(1)中,所述线程池中计算线程的数目是这样确定的:当由用户指定时,用户通过修改参数中的线程池中计算线程的数目指定线程池中需要创建的计算线程的数目;当用户不指定时,所述方法根据硬件核数对计算线程的数目进行自适应处理。
CN201110334836.1A 2011-10-28 2011-10-28 一种三维地震构造曲率性能优化方法 Active CN103091708B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110334836.1A CN103091708B (zh) 2011-10-28 2011-10-28 一种三维地震构造曲率性能优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110334836.1A CN103091708B (zh) 2011-10-28 2011-10-28 一种三维地震构造曲率性能优化方法

Publications (2)

Publication Number Publication Date
CN103091708A CN103091708A (zh) 2013-05-08
CN103091708B true CN103091708B (zh) 2015-10-07

Family

ID=48204509

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110334836.1A Active CN103091708B (zh) 2011-10-28 2011-10-28 一种三维地震构造曲率性能优化方法

Country Status (1)

Country Link
CN (1) CN103091708B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104422959A (zh) * 2013-09-05 2015-03-18 中国石油化工股份有限公司 一种检测储层边界的曲率属性方法
CN104516717A (zh) * 2013-09-30 2015-04-15 中国石油化工股份有限公司 一种针对地震数据块的并行循环方法
CN103869362B (zh) * 2014-03-10 2017-01-18 中国石油集团川庆钻探工程有限公司地球物理勘探公司 体曲率获取方法和设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101330473A (zh) * 2007-06-18 2008-12-24 电子科技大学 一种多协议支持的网络垃圾信息过滤方法和装置
CN102184227A (zh) * 2011-05-10 2011-09-14 北京邮电大学 一种面向web服务的通用爬虫引擎系统及其工作方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101330473A (zh) * 2007-06-18 2008-12-24 电子科技大学 一种多协议支持的网络垃圾信息过滤方法和装置
CN102184227A (zh) * 2011-05-10 2011-09-14 北京邮电大学 一种面向web服务的通用爬虫引擎系统及其工作方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
地震前兆数据多线程采集与多目标入库应用研究;张兴国等;《大地测量与地球动力学》;20110630;第31卷(第S1期);132-137 *

Also Published As

Publication number Publication date
CN103091708A (zh) 2013-05-08

Similar Documents

Publication Publication Date Title
CN103235974B (zh) 一种提高海量空间数据处理效率的方法
CN104091092B (zh) 大规模电力系统小干扰稳定性的特征值分析系统
Hou et al. A parallel genetic algorithm with dispersion correction for HW/SW partitioning on multi-core CPU and many-core GPU
CN103116148A (zh) 一种核磁共振二维谱反演的方法
CN104657219A (zh) 一种用于异构众核系统下的应用程序线程数动态调整方法
CN102981807A (zh) 一种基于cuda并行环境的gpu程序优化方法
CN101807144A (zh) 一种前瞻多线程并行执行优化方法
CN104570081A (zh) 一种积分法叠前时间偏移地震资料处理方法及系统
Araya-Polo et al. 3D seismic imaging through reverse-time migration on homogeneous and heterogeneous multi-core processors
CN103226487A (zh) 面向异构众核多级存储结构的数据分布与局部性优化方法
CN108460195B (zh) 海啸数值计算模型基于gpu并行的快速执行方法
CN103246541B (zh) 一种自动并行化多级并行代价评估方法
CN104850866A (zh) 基于SoC-FPGA的自重构K-means聚类技术实现方法
CN103091708B (zh) 一种三维地震构造曲率性能优化方法
CN104101902A (zh) 地震属性聚类方法及装置
CN103076627B (zh) 一种速度模型平滑优化方法
CN111797833A (zh) 一种面向遥感语义分割的自动化机器学习方法及系统
CN104572256A (zh) 一种地震处理多核异构并行模式自适应匹配通用计算模型
CN102880785A (zh) 针对gpu程序的源码级数据传输能耗估算方法
CN109102008A (zh) 一种基于gpu的雷暴核识别方法
CN102722472A (zh) 一种复数矩阵的优化方法
CN103472481B (zh) 一种利用gpu进行逆时偏移提取角度道集的方法
CN102222274A (zh) 基于调度编码的免疫克隆选择作业车间调度方法
CN104422953A (zh) 一种提高地震叠前时间偏移计算效率的方法
Li et al. A GPU-based parallel algorithm for large scale linear programming problem

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant