GPU/CPU协同方式可控震源数据相关处理设备及方法
技术领域
本发明涉及一种地震勘探数据预处理方法,特别是涉及一种GPU/CPU协同方式可控震源数据相关处理设备及方法。
技术背景
1、可控震源采集技术发展现状及对地震勘探仪器的相关要求
随着地震勘探技术的发展和环保的要求日益提高,可控震源在地震勘探中使用越来越广泛,但与脉冲资源相比,使用可控震源往往意味着野外作业时间的大大增加。为满足尽可能高密度的采样并同时降低勘探成本的要求必须尽可能的提高可控震源的采集效率,缩短野外作业时间。目前利用可控震源采集较常用的技术有可控震源交替扫描,滑动扫描,单台震源独立工作模式(ISS),多组滑动多套相隔一定距离同步技术(DSSS)、高保真可控震源采集技术等。这些可控震源的采集技术在方法原理和实现过程上不尽相同,但共同点都需要采集仪器对地震信号进行长时间、大数据量的实时记录,同时采集仪器需要有快速的数据处理能力以便对可控震源的原始记录进行叠前或叠后相关甚至从多组震源的相干记录中分离出单台震源的记录。以高保真可控震源采集技术(HFVS)为例:HFVS技术是以采集到的每台震源实际运动的信号来进行数据反演,替代了传统的以参考信号进行的互相关处理,从而有效地减少了谐波畸变对地震资料品质的影响。同时由于HFVS采集采用多台震源同时激发,而且具有将多台震源采集的记录分离为单台震源激发记录的特有分离技术。但由于目前的地震采集系统对可控震源数据的处理方式和处理能力的限制,采集数据的分离是在室内完成的,现场仪器记录的是未相关记录,而且现场仪器记录的数据量将是常规地震采集的10~20倍,数据量巨大。大大浪费了磁带,磁盘存储空间并影响了勘探效率。总之,可控震源技术的发展对地震采集仪器的实时处理能力提出了迫切的要求:海量的数据管理、快速的运算速度、相应的去噪处理和相应的数据分离模块。
2、目前常用地震仪的可控震源数据相关处理现状
目前较常用的地震采集仪器对可控震源的数据进行处理(相关、叠加)通常采用两种模式进行:1、数据传送至服务器,由服务器中的软件进行。2、在采集系统上加入DSP模块,由DSP进行处理后再传入服务器。目前地震仪的实时带道指仪器在采集周期内可将所有采样数据传回至仪器中心记录单元,而数据的处理工作(解编、解压缩或可控震源的数据处理)和磁盘、磁带记录可以在上次震动的采集周期结束与下次震动开始的时间间隔内完成。如果两次震动之间的时间间隔过短则会有越来越多的数据在内存单元等待处理。采集时间越长,道数越多,采样点越密则需要进行处理的数据量越多,在处理和记录速度无法较好解决的情况下只有不断延长两次震动之间的间隔,减慢了施工的效率。显而易见,在整个地震采集系统中加入一个速度尽可能快的数据处理单元是地震采集仪器往更高施工效率方向发展的一个必须的且行之有效的方案。
3、图形处理器(GPU)在数值计算方面的进展及GPU/CPU混合计算技术的应用
GPU(图形处理器)的原始功能是用于图形加速处理,以减少图形处理对CPU的依赖。今天,GPU已经不再局限于3D图形处理了,GPU通用计算技术发展已经引起业界不少的关注,事实也证明在浮点运算、并行计算等部分计算方面,GPU可以提供数十倍乃至于上百倍于CPU的性能。现在用于计算的GPU被称为“大规模多线程并行处理器”或叫GPU计算机。目前,GPU计算已经在石油勘探、天文、气象等很多行业上比较成熟的使用,并且已经是高性能科学计算的引领方向。GPU通用计算方面的标准目前有OPEN CL、CUDA、ATI STREAM等。使用这些并行编程标准软件开发人员可以快速的开发出可以在GPU上进行并行计算的计算机程序。GPU计算有着逻辑运算等方面的计算缺陷,而GPU/CPU协同并行计算是指在硬件上将GPU和CPU两种不同架构的处理器结合在一起,在应用程序中由CPU负责执行顺序型的代码和逻辑运算,而由GPU来负责密集型的并行计算,CPU和GPU各司其职,大幅度提高总体的计算效能。总之GPU在各行业的应用都带来了惊人效果,它大大提高了计算效能,同时节省了硬件成本和能源使用,是一场数据计算的革命。
发明内容
本发明目的在于克服现有技术的上述缺陷,提供一种GPU/CPU协同方式可控震源数据相关处理设备,本发明目的还在于在该设备上实施的数据相关处理方法。
为实现上述目的,本发明GPU/CPU协同方式可控震源数据相关处理设备,其特别之处在于由六大单元组成:存储器(内存)、存储设备、图形处理器GPU、中央处理器CPU、终端和野外数据采集接口;野外数据采集接口通过千兆光缆与野外部件相连采集地震野外数据,由两条绑定的千兆网线提供野外数据采集接口与CPU之间的连接,通过CPU主板上的高速接口连接GPU、存储器和存储设备,终端设备也连接在CPU主板上。由于引入了GPU/CPU联合海量数据相关处理技术,使得数字地震仪器系统的可控震源相关技术部件结构简单,可靠性提高;由于采用了通用部件,成本大大降低、系统升级能力也相应提高。
作为优化,海量数据相关技术采用GPU/CPU联合处理,由CPU完成野外数据的接收和编排、数据的存储和组织、流程的控制、进度的控制和显示,由GPU完成相关算法的高速平行处理。
作为优化,存储器用于野外采集数据的存放和与GPU之间的数据交换,存储设备用于最终数据的存放,终端设备用于进度控制和显示,CPU作为控制中心完成对野外数据采集接口、GPU、存储器、存储设备和终端设备的控制和协调。
所述野外数据采集接口采用专门开发的LandScan野外数据采集接口,与国际上在野外数据采集接口采用DSP进行可控震源采集数据相关技术不同,本系统采用GPU/CPU联合完成可控震源采集数据相关技术,在本系统的野外数据采集接口没有可控震源采集数据相关功能,所以具有结构简单、成本低、可靠性高等特点。
作为优化,所述GPU为使用至少一块tesla系列或其他支持CUDA的显卡的GPU模块;相关计算的程序运用CUDA语言作为GPU上的代码编制;进行相关计算的CUDA程序代码可以分为主机端代码和设备端代码两部分;主机端代码在CPU上运行,设备端代码在GPU上运行;
作为优化,主机端代码主要完成以下功能:
●启动CUDA程序,使用多个GPU时要加上设备号;
●为GPU分配显存,用于存放原始的可控震源采样数据;
●将内存中的可控震源采样点数据拷贝到已经分配好的显存中;
●调用设备端的kernel函数进行相关并行运算,并将计算之后的结果写到显存中的对应区域;
●为CPU分配一块新的内存,用于存放GPU传回来的输出数据;
●将显存中的结果回读到内存;
●使用CPU把相关之后的地震数据进行segy文件输出;
●释放内存(如需多次相关后结果叠加则暂不释放)和显存空间;
●退出CUDA;
设备端的代码主要完成以下功能:
●从显存读取数据到GPU片内;
●对数据进行相关需要的乘加运算;
●把相关后的数据写回显存。
作为优化,数据由内存拷贝到显存后的运算是循环多次进行的矩阵乘法运算;其中矩阵A表示由采集系统传回到服务器的原始可控震源扫描信号,ns表示采样点个数,ntr为采集道数,矩阵B是一维的,为可控震源的参考信号,nvp为参考信号的长度,矩阵C为相关后的结果,矩阵大小为(ns-nvp)×ntr。
作为优化,a.在CPU管理下,由野外数据采集接口接收野外数据;
b.经解编后存放于存储器中(由CPU完成),直到完成数据采集;
c.在CPU的控制下,把存储器中的数据组合成数据流灌入GPU中;
d.进行并行化相关处理(由GPU完成);
e.在CPU的控制下,将得到的结果返回存储器;
f.是否完成本激发点所有数据的处理,如果没有,转到C继续处理
g.经编排并加上道头数据,成为标准的SEG-Y数据体(由CPU完成);
h.在CPU的控制下,把标准的SEG-Y数据体存入存储设备,完成采集数据的相关处理。
在本发明GPU/CPU协同方式可控震源数据相关处理设备上实施的数据相关处理方法是海量数据相关技术采用GPU/CPU联合处理,由CPU完成野外数据的接收和编排、数据的存储和组织、流程的控制、进度的控制和显示,由GPU完成相关算法的高速平行处理。
作为处理方法的优化,a.在CPU管理下,由野外数据采集接口接收野外数据;
b.经解编后存放于存储器中(由CPU完成),直到完成数据采集;
c.在CPU的控制下,把存储器中的数据组合成数据流灌入GPU中;
d.进行并行化相关处理(由GPU完成);
e.在CPU的控制下,将得到的结果返回存储器;
f.是否完成本激发点所有数据的处理,如果没有,转到C继续处理
g.经编排并加上道头数据,成为标准的SEG-Y数据体(由CPU完成);
h.在CPU的控制下,把标准的SEG-Y数据体存入存储设备,完成采集数据的相关处理。
作为处理方法的优化,所述GPU为使用至少一块tesla系列或其他支持CUDA的显卡的GPU模块;相关计算的程序运用CUDA语言作为GPU上的代码编制;进行相关计算的CUDA程序代码可以分为主机端代码和设备端代码两部分;主机端代码在CPU上运行,设备端代码在GPU上运行;
主机端代码主要完成以下功能:
●启动CUDA程序,使用多个GPU时要加上设备号;
●为GPU分配显存,用于存放原始的可控震源采样数据;
●将内存中的可控震源采样点数据拷贝到已经分配好的显存中;
●调用设备端的kernel函数进行相关并行运算,并将计算之后的结果写到显存中的对应区域;
●为CPU分配一块新的内存,用于存放GPU传回来的输出数据;
●将显存中的结果回读到内存;
●使用CPU把相关之后的地震数据进行segy文件输出;
●释放内存(如需多次相关后结果叠加则暂不释放)和显存空间;
●退出CUDA;
设备端的代码主要完成以下功能:
●从显存读取数据到GPU片内;
●对数据进行相关需要的乘加运算;
●把相关后的数据写回显存。
或者存储器用于野外采集数据的存放和与GPU之间的数据交换,存储设备用于最终数据的存放,终端设备用于进度控制和显示,CPU作为控制中心完成对野外数据采集接口、GPU、存储器、存储设备和终端设备的控制和协调。
作为处理方法的优化,数据由内存拷贝到显存后的运算是循环多次进行的矩阵乘法运算;其中矩阵A表示由采集系统传回到服务器的原始可控震源扫描信号,ns表示采样点个数,ntr为采集道数,矩阵B是一维的,为可控震源的参考信号,nvp为参考信号的长度,矩阵C为相关后的结果,矩阵大小为(ns-nvp)×ntr。
采用上述技术方案后,本发明中的存储器(内存)不必再像传统地震仪那样选择较大容量的内存来提高带道能力、采集时间长度和采样点密度。由于系统的数据处理速度非常快,采样数据的处理时间远远小于采集周期,每次新的震动开始前内存基本都会被清空出来,不会出现多次震动的数据拥堵在内存中待处理的现象。
本发明中的存储设备与传统地震仪中的存储设备也有不同。传统的地震仪在可控震源采集的情况下由于数据处理速度慢,但同时又要追求施工效率很多情况下都把可控震源的原始扫描信号直接记录到存储设备中,这时就需要巨大容量的磁盘或盘阵,或需要尽可能高速的磁带存储器,从而增加了采集系统成本。而本装置中由于采用了几乎零耗时的数据处理单元,可控震源施工时的数据量不会再是脉冲震源的几倍或十几倍,对存储设备的要求会比传统的地震仪大为降低。
本发明中GPU模块使用至少一块tesla系列或其他支持CUDA的显卡。具体配置标准根据地震仪器的带道规模而做出调整。由于可控震源的相关运算是比较适合并行一种计算,即使只有几十个处理单元的显卡也可以把相关计算的速度提高到百倍以上。相关计算的程序运用CUDA语言作为GPU上的代码编制,CUDA在多种硬件和操作系统平台上都可以获得很好的支持,这些设计都使整个采集装置具有很好的可移植性。同时,开发人员可以快速的对CUDA语言编写的可控震源数据处理的程序进行修改和完善。与可控震源相关处理使用DSP的地震仪相比,本装置可以尽可能多的增加与可控震源相关的数据的相关、叠加或分离等处理,以适应各种可控震源采集技术的需要,大大提高了地震勘探仪器在可控震源采集时的带道能力。
因此,本发明GPU/CPU协同方式可控震源数据相关处理设备及方法能对可控震源的原始记录进行快速的相关等处理,具有可控震源相关技术部件结构简单,可靠性提高,成本大大降低、数据处理能力显著提高,系统升级能力也相应提高,显著提高地震仪器的实时带道能力和采集效率的优点。可广泛应用于石油勘探、天然气勘探、煤田勘探、矿产勘探、地质工程勘察、地质灾害监测等方面。
附图说明
图1是本发明GPU/CPU协同方式可控震源数据相关处理方法的流程图;
图2是本发明GPU/CPU协同方式可控震源数据相关处理设备的结构示意图;
图3是本发明GPU/CPU协同方式可控震源数据相关处理设备的GPU中可控震源数据相关运算示意图C=A×B;
图4是两种计算模式耗时对比示意;
图5是反射系数模型;
图6是30Hz雷克子波褶积模型;
图7是Chirp信号合成的可控震源记录;
图8是相关后结果。
具体实施方式
本发明GPU/CPU协同方式可控震源数据相关处理设备由六大单元组成:存储器(或者内存)C1、存储设备C2、图形处理器GPU、中央处理器CPU、终端C5和野外数据采集接口C6;野外数据采集接口C6通过千兆光缆与野外部件C8相连采集地震野外数据,由两条绑定的千兆网线提供野外数据采集接口C6与CPU之间的连接,通过CPU主板上的高速接口连接GPU、存储器C1和存储设备C2,终端C5(设备)也连接在CPU主板上。
海量数据相关技术采用GPU/CPU联合处理,由CPU完成野外数据的接收和编排、数据的存储和组织、流程的控制、进度的控制和显示,由GPU完成相关算法的高速平行处理。
存储器用于野外采集数据的存放和与GPU之间的数据交换,存储设备用于最终数据的存放,终端设备用于进度控制和显示,CPU作为控制中心完成对野外数据采集接口、GPU、存储器、存储设备和终端设备的控制和协调。
所述GPU为使用至少一块tesla系列或其他支持CUDA的显卡的GPU模块;相关计算的程序运用CUDA语言作为GPU上的代码编制;进行相关计算的CUDA程序代码可以分为主机端代码和设备端代码两部分;主机端代码在CPU上运行,设备端代码在GPU上运行;主机端代码主要完成以下功能:
●启动CUDA程序,使用多个GPU时要加上设备号;
●为GPU分配显存,用于存放原始的可控震源采样数据;
●将内存中的可控震源采样点数据拷贝到已经分配好的显存中;
●调用设备端的kernel函数进行相关并行运算,并将计算之后的结果写到显存中的对应区域;
●为CPU分配一块新的内存,用于存放GPU传回来的输出数据;
●将显存中的结果回读到内存;
●使用CPU把相关之后的地震数据进行segy文件输出;
●释放内存(如需多次相关后结果叠加则暂不释放)和显存空间;
●退出CUDA;
设备端的代码主要完成以下功能:
●从显存读取数据到GPU片内;
●对数据进行相关需要的乘加运算;
●把相关后的数据写回显存。
数据由内存拷贝到显存后的运算是循环多次进行的矩阵乘法运算;其中矩阵A表示由采集系统传回到服务器的原始可控震源扫描信号,ns表示采样点个数,ntr为采集道数,矩阵B是一维的,为可控震源的参考信号,nvp为参考信号的长度,矩阵C为相关后的结果,矩阵大小为(ns-nvp)×ntr。
a.在CPU管理下,由野外数据采集接口接收野外数据;
b.经解编后存放于存储器中(由CPU完成),直到完成数据采集;
c.在CPU的控制下,把存储器中的数据组合成数据流灌入GPU中;
d.进行并行化相关处理(由GPU完成);
e.在CPU的控制下,将得到的结果返回存储器;
f.是否完成本激发点所有数据的处理,如果没有,转到C继续处理
g.经编排并加上道头数据,成为标准的SEG-Y数据体(由CPU完成);
h.在CPU的控制下,把标准的SEG-Y数据体存入存储设备,完成采集数据的相关处理。
在本发明GPU/CPU协同方式可控震源相关数据相关处理设备上实施的数据相关处理方法是海量数据相关技术采用GPU/CPU联合处理,由CPU完成野外数据的接收和编排、数据的存储和组织、流程的控制、进度的控制和显示,由GPU完成相关算法的高速平行处理。
a.在CPU管理下,由野外数据采集接口接收野外数据;
b.经解编后存放于存储器中(由CPU完成),直到完成数据采集;
c.在CPU的控制下,把存储器中的数据组合成数据流灌入GPU中;
d.进行并行化相关处理(由GPU完成);
e.在CPU的控制下,将得到的结果返回存储器;
f.是否完成本激发点所有数据的处理,如果没有,转到C继续处理
g.经编排并加上道头数据,成为标准的SEG-Y数据体(由CPU完成);
h.在CPU的控制下,把标准的SEG-Y数据体存入存储设备,完成采集数据的相关处理。
所述GPU为使用至少一块tesla系列或其他支持CUDA的显卡的GPU模块;相关计算的程序运用CUDA语言作为GPU上的代码编制;进行相关计算的CUDA程序代码可以分为主机端代码和设备端代码两部分;主机端代码在CPU上运行,设备端代码在GPU上运行;
主机端代码主要完成以下功能:
●启动CUDA程序,使用多个GPU时要加上设备号;
●为GPU分配显存,用于存放原始的可控震源采样数据;
●将内存中的可控震源采样点数据拷贝到已经分配好的显存中;
●调用设备端的kernel函数进行相关并行运算,并将计算之后的结果写到显存中的对应区域;
●为CPU分配一块新的内存,用于存放GPU传回来的输出数据;
●将显存中的结果回读到内存;
●使用CPU把相关之后的地震数据进行segy文件输出;
●释放内存(如需多次相关后结果叠加则暂不释放)和显存空间;
●退出CUDA;
设备端的代码主要完成以下功能:
●从显存读取数据到GPU片内;
●对数据进行相关需要的乘加运算;
●把相关后的数据写回显存。
存储器用于野外采集数据的存放和与GPU之间的数据交换,存储设备用于最终数据的存放,终端设备用于进度控制和显示,CPU作为控制中心完成对野外数据采集接口、GPU、存储器、存储设备和终端设备的控制和协调。
更具体是:本发明的GPU高速运算模块在可控震源采样数据传回到服务器后对数据进行极其快速的处理,在很短的时间内实现可控震源数据的相关、叠加或分离。使用了本产品的地震勘探采集系统的施工效率将会得到空前提高。
参见附图1,GPU/CPU可控震源数据相关系统由六大单元组成:存储器(内存)、存储设备、GPU(图形处理器)、CPU(中央处理器)、终端和野外数据采集接口。可控震源施工前,操作员在客户端需要对可控震源施工的相关参数进行设置,主要包括:
●采集数据是否进行相关处理。如果用户选择不进行相关处理则服务器端在采样周期结束获得了采样数据结束端标志后直接将原始数据进行标准格式输出,不启动GPU相关程序。
●是否进行多次采样数据叠加。如需叠加,是选择相关后叠加还是多次数据叠加之后再进行相关。
●相关计算是否采用高保真技术。高保真技术是使用震源的实际运动信号和扫描信号进行户相关,而传统技术是使用参考信号进行互相关。
●是否使用滑动扫描技术活ISS技术。如果采集时使用这些可控震源的新技术进行,则相关程序相应较为复杂。相关时需要提供多台震源的各自参考信号或实际运动信号以期分离出单炮记录。同时为减少计算量,每台震源的信号只在连续扫描记录中各自的扫描时间段内进行互相关。
采集系统服务器在获得一个采样周期的采样数据回传完毕的信号后自动调用相关函数。数据和上面所述的用户配置以函数参数形式传入。主要包括:是否进行相关,扫描信号长度及内存地址,各可控震源参考信号内存地址,各可控震源实际震动信号内存地址等。
数据由内存拷贝到显存后的运算是循环多次进行的矩阵乘法运算,参见附图2。其中矩阵A表示由采集系统传回到服务器的原始可控震源扫描信号,ns表示采样点个数,ntr为采集道数,矩阵B是一维的,为可控震源的参考信号,nvp为参考信号的长度,矩阵C为相关后的结果,矩阵大小为(ns-nvp)×ntr。
为验证本技术对可控震源数据高速相关计算的有效性,选用了一块具有普通计算能力的显卡进行数值试验。显卡芯片型号为:GeForce 9800GT,SM(计算核心)数量为14,计算能力为1.1,显存512MB。CPU型号为:Intel(R)Core(TM)2Quad Q8200,主频2.33GHz,内存2.0GB。使用chirp模拟可控震源的激发信号,与反射系数模型进行褶积运算获得可控震源模拟地震剖面。Chirp信号长度为12秒,采样率为1ms,频率由1Hz递增至100Hz,反射系数模型为5秒,1ms采样。图4-7分别为反射系数模型、使用雷克子波的合成地震记录、使用chirp信号合成的可控震源模拟记录和相关后的地震记录。分别选取不同数量的地震道使用GPU和CPU两种模式进行相关计算,计算时间和加速比如见表1。从表1中可以看出,当计算模较小时(小于200道),CPU计算的速度很快,GPU表现平平;当规模较大时,GPU加速效果显著,产生了十几倍到几十倍的加速,而且规模越大,加速效果越明显。5000道数据的相关计算GPU的加速比达到66倍。产生该现象的原因是,主机(host)内存数据与GPU内存数据交互(读入、返回)需要一定的时间开销,规模不大时这部分开销对最终的计算时间有很大影响,只有当数据规模较大时,数据交互时间所占比例较小,GPU计算时间足以抵过这部分开销,GPU加速的效果才比较突出。
表1两种计算模式的计算时间结果
数据由内存拷贝到显存后的运算是循环多次进行的矩阵乘法运算;其中矩阵A表示由采集系统传回到服务器的原始可控震源扫描信号,ns表示采样点个数,ntr为采集道数,矩阵B是一维的,为可控震源的参考信号,nvp为参考信号的长度,矩阵C为相关后的结果,矩阵大小为(ns-nvp)×ntr。