本发明属于地球物理勘探,涉及地震数据平台技术,具体地说是一种segy磁盘数据并行加载装置及方法。
背景技术:
1、随着勘探技术的不断进步和采集新技术不断涌现,加快了采集数据量的迅速增长,尤其无线节点持续记录的采集方式,最终导致地震数据处理生产项目要加载的数据量越来越大。
2、目前业界同类处理软件没有在作业流程内实现并行加载segy数据的功能。只能对多个segy数据加载时,根据输出的数据体个数,人为把输入的segy文件分成多组,效率低。而针对单文件大道数的segy数据加载无能为力。如较常用的数据处理系统geoeast并未提供有效的并行加载segy数据技术,因此为了提高处理生产项目的效率,简化处理人员的地震数据加载的流程,提供一种有效加载segy地震数据的方法及装置势在必行。
技术实现思路
1、为解决现有技术中存在的以上不足,本发明旨在提供一种segy磁盘数据并行加载装置及方法,通过使用并行的方法来加载segy磁盘数据,提升海量地震数据输入的效率。
2、为实现上述目的,本发明所采用的技术方案如下:
3、一种segy磁盘数据并行加载装置,它包括参数解析模块、道信息统计模块、并行划分策略模块、数据定位模块和数据读取模块;参数解析模块与道信息统计模块连接,道信息统计模块与并行划分策略模块连接,并行划分策略模块与数据定位模块连接,数据定位模块与数据读取模块连接。
4、本发明还提供了一种segy磁盘数据并行加载方法,它是基于上述segy磁盘数据并行加载装置进行的,该方法包括依次进行的以下步骤:
5、s1.解析并行加载参数
6、将野外采集的segy磁盘文件的文件名放在segy文件容器vfiles中,解析用户输入的segy文件参数和并行加载参数,确定作业使用的并行加载模式;
7、所述segy文件参数,包括子作业总数jobs和每个子作业的序号jobid;
8、所述并行加载参数,包括子作业总数jobs和每个子作业的序号jobid;
9、所述并行加载模式,包括以文件为粒度加载和以数据道为粒度加载;
10、s2.数据道信息统计
11、s21.遍历segy文件容器vfiles中的每个元素,打开对应的segy文件,读取c-card和文件头块,提取采样间隔、样点数和变道长;
12、所述样点数是用来计算每道样点的字节长度;
13、s22.计算任意一道地震数据的字节长度;
14、s23.获取segy文件的字节大小,用字节大小减去c-card的长度和文件头块长度,即为数据道长度;
15、s24.计算每个segy文件中的道数;
16、s25.把每个segy文件的道数放入数据道容器vtraces中;
17、s3.制定数据范围划分策略
18、确定每个子作业的序号jobid负责的segy数据的加载范围,对于以文件为粒度加载的segy数据,计算出序号为jobid的子作业负责的segy文件范围;对于以数据道为粒度加载的segy数据,计算出序号为jobid的子作业负责的数据道范围;
19、s4.数据定位
20、打开segy文件容器vfiles中的第一个文件进行数据分析,分配数据道缓冲区,分别处理以文件为粒度加载的segy数据和以数据道为粒度加载的segy数据;
21、所述分配,是通过c++程序来实现,申请连续的一段内存,用来存储数据道;
22、s5.按照正常流程输入segy数据,进行数据读取。
23、作为一种限定,步骤s1中,所述确定作业使用的并行加载模式,包括依次进行的以下步骤:
24、s11.解析输入的segy磁盘文件参数
25、将野外采集的segy磁盘文件的文件名放在segy文件容器vfiles中,统计segy磁盘文件的文件数;
26、野外采集的segy磁盘文件,一般是一炮一个文件,或者是一个接收点一个文件,输入的segy数据可达到上万个;而成果数据,也是一个大的数据文件,把这些文件名放在segy文件容器vfiles中;
27、s12.解析子作业总数和每个子作业的序号
28、将子作业序号的起始值设置为1,统计子作业总数jobs和每个子作业的序号jobid;
29、如果segy磁盘文件的文件数大于等于作业总数,使用以文件为粒度加载每个子作业的segy数据;如果segy磁盘文件的文件数小于作业总数,使用以数据道为粒度加载每个子作业的segy数据。
30、作为另一种限定,步骤s22中,所述地震数据的字节长度,计算方式为道头的长度240字节与每道样点的字节长度之和。
31、作为第三种限定,步骤s3中,对于以文件为粒度加载的segy数据,执行下步骤:
32、s311.计算每个子作业负责的平均作业数量fnum,即文件名容器vfiles中的segy磁盘文件的文件数/子作业总数jobs;
33、s312.计算子作业负责的起始文件序号curseq,即fnum*(jobid-1)的值进行四舍五入;
34、s313.计算下一个子作业负责的起始文件序号nextseq,即fnum*jobid的值进行四舍五入;
35、s314.计算子作业负责的文件数curnum,即nextseq-curseq。
36、作为第四种限定,步骤s3中,以数据道为粒度加载的segy数据,执行下步骤:
37、s321.统计数据道容器vtraces中的总道数totaltraces;
38、s322.计算每个子作业负责加载的平均数据道nnum,该值为totaltraces/jobs;
39、s323.计算当前子作业jobid的起始道号curseq,起始道号为nnum*(njobid-1);
40、s324.如果jobid不是最后一个子作业,子作业负责的道数curnum为nnum,否则,子作业负责的的道数curnum为totaltraces-curseq-1;
41、s325.通过数据道容器vtraces中记录的每个segy数据道数,计算子作业负责的数据道所在的segy文件序号及其在该文件的起始道号traceseq和终止道号。
42、作为第五种限定,步骤s4中,以文件为粒度加载的segy数据,执行下步骤:
43、s411.从文件容器vfiles中删除不在该子作业范围的元素,同时删除对应的segy文件的关键字控制选择范围;
44、子作业的起始文件号如果是0,执行s412,否则执行s413;
45、子作业的文件号是用户设置的,起始文件号是0;
46、s412.如果segy数据有c-card并且需要输出,则输出c-card,数据定位结束;
47、s413.打开文件容器vfiles的第二个文件,数据定位结束。
48、作为第六种限定,步骤s4中,以数据道为粒度加载的segy数据,执行下步骤:
49、s421.子作业的起始文件号如果不是0,执行s422,否则执行s423;
50、s422.从文件容器vfiles中删除不在该子作业范围的元素,同时删除对应的segy文件的关键字控制选择范围,打开下一个文件进行定位;
51、s423.定位当前文件中的数据道位置,具体包括以下步骤:
52、s4231.如果当前定位的文件中的起始道号traceseq是0,数据定位结束;
53、s4232.计算定位文件中的字节位置,利用文件的起始道号*数据道长度,进行定位,如果用户没有设置道集关键字定位结束;否则执行s4233;
54、所述道集关键字,为用户输入的参数,目的是为了保证,属于同一个道集的数据道只在一个子作业中加载;
55、s4233.读取每一道数据,获取道集关键字对应的道头值curvalue;
56、s4234.读取后一道数据,获取道集关键字对应的道头值prevalue,如果prevalue不等于curvalue,代表当前定位的数据道是新的道集,定位结束;否则执行s4235;
57、s4235.读取下一道,获取道集关键字对应的道头值nextvalue,当segy文件读到结尾或读的道数超过curnum时,子作业结束;当nextvalue不等于curvalue时,定位结束,回退一道;
58、nextvalue不等于curvalue时说明,nextvalue所在的道集与curvalue所在的道集不是同一个道集;
59、回退的原因为,刚读了nextvalue的数据道,文件中的位置标识已经到达了下一道的位置,但是本道是需要的,所以要回退到nextvalue道的开头。
60、本发明构思:统计所有要加载的每个segy文件内的数据道分布情况,根据输出的地震数据数量和统计的信息,确定使用以文件为粒度的方式加载还是以数据道为粒度的方式加载。在作业运行准备阶段,每个子作业中去除与本作业无关的输入数据和数据控制范围,如果是以数据道为粒度的方式加载,需要定位到正确的数据道位置上。对于以数据道为粒度的加载方式,在独立的作业运行中,需要保证道集的完整性,在所有的作业中,需要保证道集的唯一性。
61、由于采用了上述的技术方案,本发明与现有技术相比,所取得的有益效果是:
62、①本发明提供的segy磁盘数据并行加载方法,针对单个segy大数据体和多个segy小数据体加载做了不同的设计,通过预先分析要加载的所有segy数据的信息,合理的划分每个作业负责的数据道范围,保证属于同一个道集的数据道只在一个作业中加载;本方法通过多节点多作业方式,分利用了集群节点硬件资源,简化了处理人员segy地震数据加载流程,提升了地震数据处理项目的工作效率。
63、②本发明提供的segy磁盘数据并行加载方法,使用了自动划分segy数据技术,结合多节点多作业方式,分利用了集群节点硬件资源,简化了处理人员segy地震数据加载流程,提升了地震数据处理项目的工作效率。
64、③本发明设计的一种segy磁盘数据并行加载方法,减少了处理人员的干预,自动划分加载数据的范围,适应了海量segy数据的加载,提高了地震数据处理项目的加载效率,该创新成果将对公司地震数据处理主营业务发展起到一定的支撑作用。
65、本发明适用于通过使用并行的方法来加载segy磁盘数据,提升海量地震数据输入的效率。
1.一种segy磁盘数据并行加载装置,其特征在于,它包括参数解析模块、道信息统计模块、并行划分策略模块、数据定位模块和数据读取模块;参数解析模块与道信息统计模块连接,道信息统计模块与并行划分策略模块连接,并行划分策略模块与数据定位模块连接,数据定位模块与数据读取模块连接。
2.一种segy磁盘数据并行加载方法,其特征在于,它是基于权利要求1中所述的segy磁盘数据并行加载装置进行的,该方法包括依次进行的以下步骤:
3.根据权利要求2所述的一种segy磁盘数据并行加载方法,其特征在于,步骤s1中,所述确定作业使用的并行加载模式,包括依次进行的以下步骤:
4.根据权利要求2所述的一种segy磁盘数据并行加载方法,其特征在于,步骤s22中,所述地震数据的字节长度,计算方式为道头的长度240字节与每道样点的字节长度之和。
5.根据权利要求2所述的一种segy磁盘数据并行加载方法,其特征在于,步骤s3中,对于以文件为粒度加载的segy数据,执行下步骤:
6.根据权利要求2所述的一种segy磁盘数据并行加载方法,其特征在于,步骤s3中,以数据道为粒度加载的segy数据,执行下步骤:
7.根据权利要求2所述的一种segy磁盘数据并行加载方法,其特征在于,步骤s4中,以文件为粒度加载的segy数据,执行下步骤:
8.根据权利要求2所述的一种segy磁盘数据并行加载方法,其特征在于,步骤s4中,以数据道为粒度加载的segy数据,执行下步骤: