掌桥专利:专业的专利平台
掌桥专利
首页

基于MPI负载平衡方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 13:49:36


基于MPI负载平衡方法、装置、计算机设备和存储介质

技术领域

本发明涉及石油地震勘探技术领域,特别涉及一种基于MPI负载平衡方法、装置、计算机设备和存储介质。

背景技术

当前,在地震数据密集型和计算密集型的高性能计算中,MPI(Message Passinginterface,信息传递接口)是一种常用的节点间地震数据传递的高效方法,但由于MPI没有相应的负载平衡功能,所以使用MPI时的负载平衡由使用者自己解决,这给专业的方法人员带来了困难。而负载平衡是集群并行计算系统中的重要技术,它通过在由高速网络连接起来的各个节点间平衡系统负载来提高集群系统的性能。已有的研究表明,在集群系统中采用负载平衡系统可以显著提高系统的性能。在目前大多数的计算集群中,读写地震数据存储设备往往是整个计算的瓶颈,特别是在多个写请求存储设备时,如果达不到负载平衡,则I/O的效率会成倍的下降,即降低地震数据传输效率。

发明内容

基于此,有必要针对上述技术问题,提供一种基于MPI负载平衡方法、装置、计算机设备和存储介质。

一种基于MPI负载平衡方法,包括:

获取第一时间,所述第一时间为n个节点从存储设备读取指定大小的地震数据所需的总时间,其中n>1;

获取第二时间,所述第二时间为从节点0或所述存储设备到节点n,传输所述地震数据所需的时间;

获取第三时间,所述第三时间为从节点m到节点0,传输所述地震数据所需的时间,其中,m为n个节点中最先接收完所述地震数据,并开始计算的节点,且n>m>1;

获取第四时间,所述第四时间为计算单元完成一次所述地震数据处理及计算所需的时间;

将所述第三时间与所述第四时间进行求和处理,得到第五时间;

判断所述第一时间是否小于或等于所述第五时间;

当所述第一时间小于或等于所述第五时间时,判断所述第五时间是否大于所述第二时间;

当所述第五时间和大于所述第二时间时,在所述第一时间小于或等于所述第五时间的前提下,通过调节计算节点或者每一次传输地震数据的字节数,以使所述第五时间与所述第二时间的差值达到最小值,以实现负载平衡。

在其中一个实施例中,在所述判断所述第一时间是否小于或等于所述第五时间的步骤之后,还包括:

当所述第一时间大于所述第五时间时,通过给定不同的MPI进程数并进行测试,计算出所述地震数据节点的最佳缓冲区大小;

根据所述地震数据节点的最佳缓冲区大小,对所述地震数据节点的缓冲区大小进行调节。

在其中一个实施例中,在所述根据所述地震数据节点的最佳缓冲区大小,对所述地震数据节点的缓冲区大小进行调节的步骤之后,还包括:

对小粒度并行效率进行调整,以实现负载平衡。

在其中一个实施例中,在所述判断所述第五时间是否大于所述第二时间的步骤之后,还包括:

当所述第五时间小于所述第二时间时,通过给定不同的MPI进程数并进行测试,计算出所述计算单元的最佳缓冲区大小;

根据所述计算单元的最佳缓冲区大小,对所述计算节点的缓冲区大小进行调节;

对小粒度并行效率进行调整,以实现负载平衡。

在其中一个实施例中,所述获取第一时间,所述第一时间为n个节点从存储设备读取指定大小的地震数据所需的总时间,其中n>1,包括:

对所述地震数据进行多次读取操作,得到地震数据读取速度;

根据地震数据读取分析算法,对所述地震数据读取速度进行计算,得到节点从所述存储设备读取数据的平均时间;

根据节点数n及所述平均时间,得到所述第一时间。

在其中一个实施例中,所述对所述地震数据进行多次读取操作,得到地震数据读取速度的步骤,包括:

对segy格式的地震数据进行多次读取操作,得到所述地震数据读取速度。

在其中一个实施例中,所述获取第二时间,所述第二时间为从节点0或所述存储设备到节点n,传输所述地震数据所需的时间,包括:

获取多次从节点0或所述存储设备到节点n,传输所述地震数据所需的时间,并对传输所述地震数据所需的时间进行加权平均,得到所述第二时间。

在其中一个实施例中,一种基于MPI负载平衡装置,包括:

第一时间获取模块,用于获取第一时间,所述第一时间为n个节点从存储设备读取指定大小的地震数据所需的总时间,其中n>1;

第二时间获取模块,用于获取第二时间,所述第二时间为从节点0或所述存储设备到节点n,传输所述地震数据所需的时间;

第三时间获取模块,用于获取第三时间,所述第三时间为从节点m到节点0,传输所述地震数据所需的时间,其中,m为n个节点中最先接收完所述地震数据,并开始计算的节点,且n>m>1;

第四模块获取模块,用于获取第四时间,所述第四时间为计算单元完成一次所述地震数据处理及计算所需的时间;

第五时间获取模块,用于将所述第三时间与所述第四时间进行求和处理,得到第五时间;

第一判断模块,用于判断所述第一时间是否小于或等于所述第五时间;

第二判断模块,用于当所述第一时间小于或等于所述第五时间时,判断所述第五时间是否大于所述第二时间;

负载平衡模块,用于当所述第五时间和大于所述第二时间时,在所述第一时间小于或等于所述第五时间的前提下,通过调节计算节点或者每一次传输地震数据的字节数,以使所述第五时间与所述第二时间的差值达到最小值,以实现负载平衡。

在其中一个实施例中,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例中所述方法的步骤。

在其中一个实施例中,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例中所述的方法的步骤。

上述基于MPI负载平衡方法、装置、计算机设备和存储介质,通过判断第一时间是否小于第五时间,若是,则说明计算单元接收及处理地震数据的能力大于从存储设备读取地震数据文件的数量,即相当于生产者产出的地震数量小于消费者消费的地震数据,此时,通过调节计算节点或者每一次传输地震数据的字节数,以从存储设备中读取更多的地震数据文件,满足计算单元处理地震数据能力,以达到负载平衡最佳状态,提升地震数据处理及传输效率,提高系统性能。

附图说明

图1为本发明一个实施例中所述基于MPI负载平衡方法的流程示意图;

图2为本发明中单节点读写地震数据管理,多节点计算的集群处理时间需求流程示意图;

图3为本发明另一个实施例中所述基于MPI负载平衡方法的流程示意图;

图4为本发明一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

例如:提供一种基于MPI负载平衡方法,包括:

获取第一时间,所述第一时间为n个节点从存储设备读取指定大小的地震数据所需的总时间,其中n>1;

获取第二时间,所述第二时间为从节点0或所述存储设备到节点n,传输所述地震数据所需的时间;

获取第三时间,所述第三时间为从节点m到节点0,传输所述地震数据所需的时间,其中,m为n个节点中最先接收完所述地震数据,并开始计算的节点,且n>m>1;

获取第四时间,所述第四时间为计算单元完成一次所述地震数据处理及计算所需的时间;

将所述第三时间与所述第四时间进行求和处理,得到第五时间;

判断所述第一时间是否小于或等于所述第五时间;

当所述第一时间小于所述第五时间时,判断所述第五时间是否大于所述第二时间;

当所述第五时间和大于所述第二时间时,在所述第一时间小于或等于所述第五时间的前提下,通过调节计算节点或者每一次传输地震数据的字节数,以使所述第五时间与所述第二时间的差值达到最小值,以实现负载平衡。

上述基于MPI负载平衡方法、装置、计算机设备和存储介质,通过判断第一时间是否小于第五时间,若是,则说明计算单元接收及处理地震数据的能力大于从存储设备读取地震数据文件的数量,即相当于生产者产出的地震数量小于消费者消费的地震数据,此时,通过调节计算节点或者每一次传输地震数据的字节数,以从存储设备中读取更多的地震数据文件,满足计算单元处理地震数据能力,以达到负载平衡最佳状态,提升地震数据处理及传输效率,提高系统性能。

请参阅图1,在其中一个实施例中,提供一种基于MPI负载平衡方法,包括:

步骤110,获取第一时间,所述第一时间为n个节点从存储设备读取指定大小的地震数据所需的总时间,其中n>1。

具体的,地震数据或地震数据文件是存储在存储设备中,计算主节点从存储设备读取指定大小的地震数据,统计每一节点从存储设备中读取指定大小的地震数据所需的时间I,则n个节点所需的总时间为n*I,以此时间作为第一时间。需说明的是,指定大小可以理解为预设大小,即指定数据大小的地震数据。对于一个地震数据,其数据的大小是固定的。

步骤120,获取第二时间,所述第二时间为从节点0或所述存储设备到节点n,传输所述地震数据所需的时间。

具体的,节点0到节点n存在n个节点,则从节点0或存储设备到节点x,传输所述地震数据所需时间为II

步骤130,获取第三时间,所述第三时间为从节点m到节点0,传输所述地震数据所需的时间II

步骤140,获取第四时间III,所述第四时间为计算单元完成一次所述地震数据处理及计算所需的时间。

步骤150,将所述第三时间与所述第四时间进行求和处理,得到第五时间。具体的,所述第五时间即为所述第三时间与第四时间之和。

步骤160,判断所述第一时间是否小于或等于所述第五时间。具体的,判断所述第一时间是否小于所述第五时间,即判断n个节点从存储设备读取指定大小的地震数据所需的总时间是否小于或等于为从节点m到节点0传输所述地震数据所需的时间与计算单元完成一次所述地震数据处理及计算所需的时间之和。可以理解的是,判断所述第一时间是否小于或等于所述第五时间,即相当于判断计算单元接收及处理地震数据的能力是否大于从存储设备读取地震数据文件的数量,也理解为,判断生产者是否可实时地产出消费者需要的地震数据。

步骤170,当所述第一时间小于所述第五时间时,判断所述第五时间是否大于所述第二时间。具体的,当所述第一时间小于所述第五时间时,则说明计算单元接收及处理地震数据的能力小于从存储设备读取地震数据文件的数量,也理解为,生产者可实时地产出消费者需要的地震数据。此时任务的处理和计算尽量要满足的所述第五时间等于第二时间,即消费者可以实时地消费掉生产出来的地震数据。因此判断第五时间与第二时间的关系。

步骤180,当所述第五时间和大于所述第二时间时,在所述第一时间小于或等于所述第五时间的前提下,通过调节计算节点或者每一次传输地震数据的字节数,以使所述第五时间与所述第二时间的差值达到最小值,以实现负载平衡。

具体的,当所述第五时间大于所述第二时间时,说明还可以增加计算节点或者还可以增加每一次传输的地震数据字节数,最大到第一时间等于第五时间,即让生产者产出更多的地震数据,供消费者消费,从而对MPI中存储设备和网络负载节点进行调节,以达到负载平衡或尽量达到负载平衡的状态。应当理解的是,调节计算节点或者每一次传输地震数据的字节数时,则n个节点从存储设备读取指定大小的地震数据所需的总时间会随之改变,因此在调节计算节点或者每一次传输地震数据的字节数时,需将调节后得到的第一时间控制在小于或等于所述第五时间内。

具体的,在所述第一时间小于或等于所述第五时间的前提下,调节计算节点或者每一次传输地震数据的字节数,以使所述第五时间与所述第二时间的差值达到最小值。即可以还可以增加计算节点或者还可以增加每一次传输的地震数据字节数,最大到第五时间与所述第二时间相等,即让生产者产出更多的地震数据,供消费者消费。

可以理解的是,本实施例中所述的负载平衡可以为饱和负载平衡,饱和负载平衡是指能够使最终的结构让计算、处理硬件资源,从整个任务的开始到结束,都全速的运行。

具体的,运行时间是衡量并行程序性能的重要指标。一个并行程序通常是由多个进程组成的,在集群环境下通常每个节点上运行一个进程,并行程序的运行时间是由最迟完成对应任务的节点决定的。这就需要通过调度与分配算法来实现任务的优化分配,从而有效低减少平均响应时间,降低执行时的额外开销。因此,负载平衡一直是并行程序设计中一个重要考虑因素,它的一个作用是提高系统性能,缩短用户任务的平均响应时间,它的另一个作用是充分利用整个系统的资源。

为了便于更好了解本发明的技术方案,即理解各时间关系所对应的关系,进行以下具体说明,在以下地震数据分发和接收的表述中,如果存储设备在主节点上,则是指在主节点和计算节点之间的地震数据分发和接收;如果存储设备是单独的节点,主节点和计算节点是通过网络连接的,则是指主节点告诉计算节点需要读取的地震数据位置大小等控制信息,而计算节点自己通过网络到存储设备上读和写地震数据。因此,对分析地震数据处理及计算的通常步骤为:

第一步骤,主节点分析各个计算单元的计算地震数据的位置大小等控制信息,并把控制信息发送给计算单元。

第二步骤,计算单元根据控制信息从指定存储设备中读取地震数据,放到为各个计算单元开辟的空缓冲区中。具体的,空缓冲区中没有被相应计算单元可处理的地震数据。本步骤会一直读取地震数据到空缓冲区中。即其是一个单独的地震数据读取线程,会一直读取当前计算单元所需的地震数据到空缓冲区中,如果空缓冲区满,则进入等待阶段,一旦有数据存入空缓冲区,就读需计算的地震数据,直到需计算的地震数据读完结束。

第三步骤,任务分配单元使用通信技术,把满缓冲区中的数据分发到各个计算节点缓冲池中,并供计算单元进行计算。具体的,任务分配单元一般为主节点,满缓冲区即该缓冲区的数据没有被相应的计算单元处理;计算单元进行计算一般是节点内进程中的线程。

第四步骤,把各个计算单元所得的结果接收或者归约到结果收集节点,使用各计算节点用临时文件保存着,完成任务后统一有主节点控制,并规约;若计算任务结束了,则执行第五步骤;若计算任务没有结束,则返回执行第三步骤;其中,结果收集节点为主节点或存储设备。具体的,把各个计算单元所得的结果接收或者归约到结果收集节点,会加大MPI消息传递次数,所以此处使用各计算节点用临时文件保存。

第五步骤,结束计算单元的所有计算,统一由主节点控制,并接收或者归约所有的地震数据,保存所得的地震数据,得出任务执行的最终结果。

基于上述对分析地震数据处理及计算的通常步骤并结合图2所示的MPI模式中单节点读写地震数据管理,多节点计算的集群处理时间需求流程示意图,以充分说明上述时间关系所对应的状态。

上述基于MPI负载平衡方法,通过判断第一时间是否小于第五时间,若是,则说明计算单元接收及处理地震数据的能力大于从存储设备读取地震数据文件的数量,即相当于生产者产出的地震数量小于消费者消费的地震数据,此时,通过调节计算节点或者每一次传输地震数据的字节数,以从存储设备中读取更多的地震数据文件,满足计算单元处理地震数据能力,以达到负载平衡最佳状态,解决了负载平衡难以管理的问题,提升地震数据处理及传输效率,提高系统性能。

为了更好地解决I/O吞吐率瓶颈,进一步地提升负载平衡,在其中一个实施例中,在所述判断所述第一时间是否小于或等于所述第五时间的步骤之后;还包括:

当所述第一时间大于所述第五时间时,通过给定不同的MPI进程数并进行测试,计算出所述地震数据节点的最佳缓冲区大小;

根据所述地震数据节点的最佳缓冲区大小,对所述地震数据节点的缓冲区大小进行调节。

具体的,当所述第一时间大于所述第五时间时,即n个节点从存储设备读取指定大小的地震数据所需的总时间大于为从节点m到节点0传输所述地震数据所需的时间与计算单元完成一次所述地震数据处理及计算所需的时间之和。可以理解的是,当所述第一时间大于所述第五时间,即相当于计算单元接收及处理地震数据的能力小于从存储设备读取地震数据文件的数量。也可以理解为,生产者产出的地震数据不能实时地满足消费者需要的地震数据,此时存在I/O(Input/Output,输入/输出)吞吐率瓶颈。对此,通过给定不同的MPI进程数并进行测试,计算出所述地震数据节点的最佳缓冲区大小;根据所述地震数据节点的最佳缓冲区大小,对所述地震数据节点的缓冲区大小进行调节。即在已知的集群节点和相应的计算机算法实现中,给定不同的MPI进程数,及通过测试,计算出地震数据节点的最佳的缓冲区大小。其中测试的标准就是集群中的节点都尽量达到饱和负载平衡,以缓解存储设备的I/O吞吐率瓶颈,提升负载平衡,以进一步解决MPI所带来的负载平衡难以管理的问题。

在其中一个实施例中,所述通过调节计算节点或者每一次传输地震数据的字节数,以使所述第五时间与所述第二时间的差值达到最小值,以实现负载平衡的步骤,还包括:

对小粒度并行效率进行调整,以实现负载平衡。

具体的,对小粒度并行效率进行调整,即提高小粒度并行效率。在通过给定不同的MPI进程数并进行测试,计算出最佳缓冲区大小,根据所述最佳缓冲区大小,对所述地震数据节点进行调节的基础上,通过提高小粒度并行效率,例如通过Phtread(POSIX Threads,可移植操作系统接口)/OpenMp(Open Multi-Processing,共享存储并行编程)等多线程技术,发挥SMP(Symmetrical Multi-Processing,对称多处理)多核处理器性能,减少算法计算的时间,从而可以缩小第一时间,使得第一时间与所述第五时间尽量接近,或者使得第一时间小于或者等于第五时间,以进一步缓解或解决I/O吞吐率瓶颈,以更好地达到负载平衡。

为了更好地缓解网络瓶颈,提升负载平衡,在其中一个实施例中,在所述判断所述第五时间是否大于所述第二时间的步骤之后,还包括:

当所述第五时间小于所述第二时间时,通过给定不同的MPI进程数并进行测试,计算出所述计算单元的最佳缓冲区大小;

根据所述计算单元的最佳缓冲区大小,对所述计算节点的缓冲区大小进行调节;

对小粒度并行效率进行调整,以实现负载平衡。

具体的,当所述第五时间小于所述第二时间时,即当从节点m到节点0传输所述地震数据所需的时间与计算单元完成一次所述地震数据处理及计算所需的时间之和小于从节点0或所述存储设备到节点n,传输所述地震数据所需的时间,则说明当前存在节点没有在饱和负载平衡下运行,这时相应计算资源的浪费是在所难免的,即网络速度这个资源不够消费者使用,这就是网速瓶颈。对此,通过给定不同的MPI进程数并进行测试,计算出所述计算单元节点的最佳缓冲区大小;根据所述计算单元节点的最佳缓冲区大小,对所述计算单元节点的缓冲区大小进行调节。即在已知的集群节点和相应的计算机算法实现中,给定不同的MPI进程数,及通过测试,计算出计算单元节点的最佳的缓冲区大小。其中测试的标准就是集群中的节点都尽量达到饱和负载平衡,以缓解存储设备的网络瓶颈,提升负载平衡,以进一步解决MPI所带来的负载平衡难以管理的问题。并且,对小粒度并行效率进行调整,即提高小粒度并行效率。在通过给定不同的MPI进程数并进行测试,计算出最佳缓冲区大小,根据所述最佳缓冲区大小,对所述地震数据节点进行调节的基础上,通过提高小粒度并行效率,例如通过Phtread(POSIX Threads,可移植操作系统接口)/OpenMp(Open Multi-Processing,共享存储并行编程)等多线程技术,发挥SMP(Symmetrical Multi-Processing,对称多处理)多核处理器性能,减少算法计算的时间,也可以实现缓解网络瓶颈的效果。

上述实施例中,采用两级缓冲区,其中两级缓冲区为读地震数据节点缓冲区和各个计算节点缓冲区。其中地震数据节点缓冲区用于缓解存储设备I/O瓶颈,各计算节点缓冲区是缓解网络瓶颈和尽量减少计算节点和数据节点之间的通信次数。一定程度上解决了MPI编程所带来的负载平衡很难管理的问题,提高了高性能计算的效率和简易度。

为了更准确地计算出第一时间,请参阅图3,在其中一个实施例中,所述获取第一时间,所述第一时间为n个节点从存储设备读取指定大小的地震数据所需的总时间,其中n>1,包括:

步骤111,对所述地震数据进行多次读取操作,得到地震数据读取速度。

步骤112,根据地震数据读取分析算法,对所述地震数据读取速度进行计算,得到节点从所述存储设备读取数据的平均时间。

步骤113,根据节点数n及所述平均时间,得到所述第一时间。

具体的,用户进程读写存储设备中的文件时的未确定性,很大程度取决于磁头访问时间;通过对指定大小的地震数据进行多次读取速度,使用地震数据读取速度分析算法,以得到存储设备数据的平均时间,减少单次统计产生的误差,进而可以提升第一时间计算的准确度,更好地达到负载平衡。应当理解的是,根据节点数n及所述平均时间,得到所述第一时间,即将节点数n乘以所述平均时间,得到所述第一时间。

在其中一个实施例中,所述对所述地震数据进行多次读取操作,得到地震数据读取速度的步骤,包括:

对segy格式的地震数据进行多次读取操作,得到所述地震数据读取速度。

具体的,地震数据一般以地震道为单位进行组织,采用segy文件格式存储。segy格式是由SEG(Society of Exploration Geophysicists,地球物理学者协会)提出的标准磁带数据格式之一,它是石油勘探行业地震数据的最为普遍的格式之一。因此,采用segy格式的地震数据为例,可以使得所达到的负载平衡具有代表性。

为了准确计算得到第二时间,在其中一个实施例中,所述获取第二时间,所述第二时间为从节点0或所述存储设备到节点n,传输所述地震数据所需的时间,包括:

获取多次从节点0或所述存储设备到节点n,传输所述地震数据所需的时间,并对传输所述地震数据所需的时间进行加权平均,得到所述第二时间。

具体的,对于第二时间的计算值取决于网络的传输速率和各种未知的网络环境和第一时间中的读写磁盘时间,依靠MPI标准中提供的通信功能进行测试记录,并最终计算出时间。通过获取多次从节点0或所述存储设备到节点n,传输所述地震数据所需的时间,并对传输所述地震数据所需的时间进行加权平均,得到所述第二时间,以避免第二时间计算的偶然性,提升第二时间的计算精度。

在其中一个实施例中,对于第三时间的计算,同样可以采用加权平均算法,对从节点m到节点0,传输所述地震数据所需的时间进行加权平均,得到所述第三时间。其原理及效果相当于第二时间的获取方式,本实施例中,不再赘述。

下面是一个具体的实施例:

图2中“I”表示从存储设备中读指定大小地震数据所需要的时间。由于地震数据文件存在存储设备中,所以访问地震数据的各个部分可能有不同的时间。下面就来分析一下文件系统对存储设备的操作过程,以便于说明“I”时间的计算方法。用户进程读写存储设备中的文件时的未确定性,很大程度取决于磁头访问时间。所以为了较准确的计算出图2中的“I”时间,本方案通过对segy格式的地震数据进行多次读取速度,使用地震数据读取速度分析算法,求得存储设备数据的平均值作为“I”的时间。

“X-II(1)”指从节点0或存储设备到节点X(1到n),传输指定地震数据所需要的时间;“X-II(2)”指从节点X(1到n)到节点0,传输指定地震数据所需要的时间。因为从节点0或存储设备发送出去的地震数据和接收回来的地震数据不一定相等,所以此处把这两个时间分开来计算。

具体的计算值取决于网络的传输速率和各种未知的网络环境和“I”分析时间中的读写磁盘时间。为了避免复杂的网络环境所带来的分析难度,本方案在此不做具体时间的详细分析,而是依靠MPI标准中提供的通信功能进行测试记录,并最终计算出时间。同理“I”时间的计算,为了避免偶然性,提高计算值的准确性,“X-II(1)”和“X-II(2)”时间都是通过多次的测试数据加权求平均值得到。

“III”时间指计算单元完成一次指定地震数据处理、计算所需要的时间。它取决于当前次地震数据块的大小、算法的复杂度和计算机对算法处理的技术。这一步通过使用Pthread/OpenMP等多线程手段实现好多线程算法,利用标准测试例程,求出特定地震数据,完成特定算法计算需要的时间,就是“III”时间,由于不同机器,不同的配置,所以在特定算法上执行的特定地震数据所使用的时间是不同,所以本模型不同计算节点根据自己的配置动态的计算获取。

在以下地震数据分发和接收的表述中,如果存储设备在主节点上,则是指在主节点和计算节点之间的地震数据分发和接收;如果存储设备是单独的节点,主节点和计算节点是通过网络连接的,则是指主节点告诉计算节点需要读取的地震数据位置大小等控制信息,而计算节点自己通过网络到存储设备上读和写地震数据。

分析地震数据处理及计算的通常步骤是:

(1)主节点分析各个计算单元所需的计算地震数据的位置大小等控制信息,并把控制信息发送给计算单元。计算单元根据控制信息从指定存储设备中读取地震数据,放到为各个计算单元开辟的空缓冲区(此缓冲区中没有被相应计算单元可处理的地震数据)中。此步骤会一直读取地震数据到空缓冲区中。即它是一个单独的地震数据读取线程,它会一直读取当前计算单元所需的地震数据到空缓冲区中,如果空缓冲区满,等待,一旦有缓存区空闲区,就读需计算的地震数据,直到需计算的地震数据读完结束。

(2)任务分配单元(一般为主节点)使用通信技术(此方案是MPI的消息传递),把满缓冲区(此缓冲区中的数据没有被相应的计算单元处理)中的数据分发到各个计算节点缓冲池中,并供计算单元(一般是节点内进程中的线程)进行计算。

(3)把各个计算单元所得的结果接收(归约)到结果收集节点(一般为主节点/或存储设备),这种方法会加大MPI消息传递次数,所以此处使用各计算节点用临时文件保存着,完成任务后统一有主节点控制,并规约。若计算任务结束了,跳去(4)执行;若计算任务没有结束,跳去(2)执行。

(4)结束计算单元的所有计算,统一由主节点控制,并接收(归约)所有的地震数据,保存所得的地震数据,得出任务执行的最终结果。

结合图2使用的MPI模式,从上可见,为了尽量达到饱和负载平衡,则:

①若(“I”时间*n)小于等于(“III”时间+“m-II(2)”时间)(即生产者可以实时地产出消费者需要的地震数据),则任务的处理和计算尽量要满足的条件是:(“III”时间+“m-II(2)”时间)等于(“1-II(1)”时间+…+“n-II(1)”时间)(即消费者可以实时地消费掉生产出来的地震数据)。其中m为n个计算节点/进程中最先收完地震数据的,并开始计算的节点/进程。

如果(“III”时间+“m-II(2)”时间)大于(“1-II(1)”时间+…+“n-II(1)”时间),说明还可以增加计算节点或者还可以增加每一次传输的地震数据字节数,最大到(“I”时间*n)等于(“III”时间+“m-II(2)”时间),即让生产者产出更多的地震数据,供消费者消费。如果(“III”时间+“m-II(2)”时间)小于(“1-II(1)”时间+…+“n-II(1)”时间),说明当前存在节点没有在饱和负载平衡下运行,这时相应计算资源的浪费是在所难免的,即网络速度这个资源不够消费者使用,这就是网速瓶颈。其中(“1-II(1)”时间+…+“n-II(1)”时间):所有计算节点/进程。

②但若(“I”时间*n)大于(“III”时间+“m-II(2)”时间),即生产者不能实时地满足消费者,需要消费者等待,这就是I/O瓶颈。

总结上面可得,这些分析都是一个理想的过程,在实际的集群环境中,可能会有很多未知的因素影响并行计算效率。但以下2方面是可以肯定的作为并行效率提高的关键要素:

(1)在已知的集群节点和相应的计算算法实现中,给定不同的MPI进程数;及通过测试,计算出计算单元最佳的缓冲区大小。其中测试的标准就是集群中的节点都尽量达到饱和负载平衡,即用合适的空间换取时间,达到最好的并行计算效率。

(2)在(1)的基础上,提高小粒度并行效率,即通过Phtread/OpenMp等多线程技术,发挥SMP多核处理器性能,减少算法计算的时间。

所以针对不同计算速度的算法,使用其相应的MPI进程数,及合理有效的空间换取时间策略和多线程等技术是必要的。

本发明描述了一种基于MPI的并行计算中地震数据负载平衡模型,通过对常用集群的分析,尤其是针对MPI单节点读写管理,多节点计算的集群模式的地震数据的读写及计算分析,给出了基于MPI的并行计算中地震数据负载平衡方法。本方法采用两级缓冲区(读地震数据节点缓冲区和各个计算节点缓冲区)。其中地震数据节点缓冲区是缓解存储设备I/O瓶颈,各计算节点缓冲区是缓解网络瓶颈和尽量减少计算节点和数据节点之间的通信次数。它在一定程度上解决了MPI编程所带来的负载平衡很难管理的问题,同时在MPI基础上结合其它一些技术,提高了高性能计算的效率和简易度。

在其中一个实施例中,所述基于MPI负载平衡装置采用上述任一实施例所述基于MPI负载平衡方法实现。在其中一个实施例中,所述基于MPI负载平衡装置包括用于实现所述基于MPI负载平衡方法各步骤的相应模块。

在其中一个实施例中,一种基于MPI负载平衡装置,包括:

第一时间获取模块,用于获取第一时间,所述第一时间为n个节点从存储设备读取指定大小的地震数据所需的总时间,其中n>1;

第二时间获取模块,用于获取第二时间,所述第二时间为从节点0或所述存储设备到节点n,传输所述地震数据所需的时间;

第三时间获取模块,用于获取第三时间,所述第三时间为从节点m到节点0,传输所述地震数据所需的时间,其中,m为n个节点中最先接收完所述地震数据,并开始计算的节点,且n>m>1;

第四模块获取模块,用于获取第四时间,所述第四时间为计算单元完成一次所述地震数据处理及计算所需的时间;

第五时间获取模块,用于将所述第三时间与所述第四时间进行求和处理,得到第五时间;

第一判断模块,用于判断所述第一时间是否小于或等于所述第五时间;

第二判断模块,用于当所述第一时间小于或等于所述第五时间时,判断所述第五时间是否大于所述第二时间;

负载平衡模块,用于当所述第五时间和大于所述第二时间时,在所述第一时间小于或等于所述第五时间的前提下,通过调节计算节点或者每一次传输地震数据的字节数,以使所述第五时间与所述第二时间的差值达到最小值,以实现负载平衡。

上述基于MPI负载平衡装置,通过判断第一时间是否小于第五时间,若是,则说明计算单元接收及处理地震数据的能力大于从存储设备读取地震数据文件的数量,即相当于生产者产出的地震数量小于消费者消费的地震数据,此时,通过调节计算节点或者每一次传输地震数据的字节数,以从存储设备中读取更多的地震数据文件,满足计算单元处理地震数据能力,以达到负载平衡最佳状态,提升地震数据处理及传输效率,提高系统性能。

在其中一个实施例中,所述的基于MPI负载平衡装置还包括:

第一缓冲区大小计算模块,用于当所述第一时间大于所述第五时间时,通过给定不同的MPI进程数并进行测试,计算出所述地震数据节点的最佳缓冲区大小。

第一调节模块,根据所述地震数据节点的最佳缓冲区大小,对所述地震数据节点的缓冲区大小进行调节。

在其中一个实施例中,所述的基于MPI负载平衡装置还包括:

并行效率调节模块,用于对小粒度并行效率进行调整,以实现负载平衡。

在其中一个实施例中,所述的基于MPI负载平衡装置还包括:

第二缓冲区大小计算模块,用于当所述第五时间小于所述第二时间时,通过给定不同的MPI进程数并进行测试,计算出所述计算单元的最佳缓冲区大小。

第二调节模块,根据所述计算单元的最佳缓冲区大小,对所述计算节点的缓冲区大小进行调节。

并行效率调节模块,用于对小粒度并行效率进行调整,以实现负载平衡。

在其中一个实施例中,所述第一时间获取模块包括:

读取速度获取子模块,用于对所述地震数据进行多次读取操作,得到地震数据读取速度。

平均时间计算子模块,用于根据地震数据读取分析算法,对所述地震数据读取速度进行计算,得到节点从所述存储设备读取数据的平均时间。

第一时间获取子模块,用于根据节点数n及所述平均时间,得到所述第一时间。

在其中一个实施例中,所述读取速度获取子模块用于对segy格式的地震数据进行多次读取操作,得到所述地震数据读取速度。

在其中一个实施例中,所述第二时间获取模块用于获取多次从节点0或所述存储设备到节点n,传输所述地震数据所需的时间,并对传输所述地震数据所需的时间进行加权平均,得到所述第二时间。

在其中一个实施例中,提供了一种计算机设备,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于MPI负载平衡方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在其中一个实施例中,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取第一时间,所述第一时间为n个节点从存储设备读取指定大小的地震数据所需的总时间,其中n>1;

获取第二时间,所述第二时间为从节点0或所述存储设备到节点n,传输所述地震数据所需的时间;

获取第三时间,所述第三时间为从节点m到节点0,传输所述地震数据所需的时间,其中,m为n个节点中最先接收完所述地震数据,并开始计算的节点,且n>m>1;

获取第四时间,所述第四时间为计算单元完成一次所述地震数据处理及计算所需的时间;

将所述第三时间与所述第四时间进行求和处理,得到第五时间;

判断所述第一时间是否小于或等于所述第五时间;

当所述第一时间小于或等于所述第五时间时,判断所述第五时间是否大于所述第二时间;

当所述第五时间和大于所述第二时间时,在所述第一时间小于或等于所述第五时间的前提下,通过调节计算节点或者每一次传输地震数据的字节数,以使所述第五时间与所述第二时间的差值达到最小值,以实现负载平衡。

上述计算机设备,通过判断第一时间是否小于第五时间,若是,则说明计算单元接收及处理地震数据的能力大于从存储设备读取地震数据文件的数量,即相当于生产者产出的地震数量小于消费者消费的地震数据,此时,通过调节计算节点或者每一次传输地震数据的字节数,以从存储设备中读取更多的地震数据文件,满足计算单元处理地震数据能力,以达到负载平衡最佳状态,提升地震数据处理及传输效率,提高系统性能。

在其中一个实施例中,所述处理器执行所述计算机程序时实现上述任一实施例中所述基于MPI负载平衡方法的步骤。

在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:

当所述第一时间大于所述第五时间时,通过给定不同的MPI进程数并进行测试,计算出所述地震数据节点的最佳缓冲区大小;

根据所述地震数据节点的最佳缓冲区大小,对所述地震数据节点的缓冲区大小进行调节。

在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:

对小粒度并行效率进行调整,以实现负载平衡。

在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:

当所述第五时间小于所述第二时间时,通过给定不同的MPI进程数并进行测试,计算出所述计算单元的最佳缓冲区大小;

根据所述计算单元的最佳缓冲区大小,对所述计算节点的缓冲区大小进行调节;

对小粒度并行效率进行调整,以实现负载平衡。

在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:

对所述地震数据进行多次读取操作,得到地震数据读取速度;

根据地震数据读取分析算法,对所述地震数据读取速度进行计算,得到节点从所述存储设备读取数据的平均时间;

根据节点数n及所述平均时间,得到所述第一时间。

在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:

对segy格式的地震数据进行多次读取操作,得到所述地震数据读取速度。

在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:

获取多次从节点0或所述存储设备到节点n,传输所述地震数据所需的时间,并对传输所述地震数据所需的时间进行加权平均,得到所述第二时间。

在其中一个实施例中,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取第一时间,所述第一时间为n个节点从存储设备读取指定大小的地震数据所需的总时间,其中n>1;

获取第二时间,所述第二时间为从节点0或所述存储设备到节点n,传输所述地震数据所需的时间;

获取第三时间,所述第三时间为从节点m到节点0,传输所述地震数据所需的时间,其中,m为n个节点中最先接收完所述地震数据,并开始计算的节点,且n>m>1;

获取第四时间,所述第四时间为计算单元完成一次所述地震数据处理及计算所需的时间;

将所述第三时间与所述第四时间进行求和处理,得到第五时间;

判断所述第一时间是否小于或等于所述第五时间;

当所述第一时间小于或等于所述第五时间时,判断所述第五时间是否大于所述第二时间;

当所述第五时间和大于所述第二时间时,在所述第一时间小于或等于所述第五时间的前提下,通过调节计算节点或者每一次传输地震数据的字节数,以使所述第五时间与所述第二时间的差值达到最小值,以实现负载平衡。

上述存储介质,通过判断第一时间是否小于第五时间,若是,则说明计算单元接收及处理地震数据的能力大于从存储设备读取地震数据文件的数量,即相当于生产者产出的地震数量小于消费者消费的地震数据,此时,通过调节计算节点或者每一次传输地震数据的字节数,以从存储设备中读取更多的地震数据文件,满足计算单元处理地震数据能力,以达到负载平衡最佳状态,提升地震数据处理及传输效率,提高系统性能。

在其中一个实施例中,所述计算机程序被处理器执行时实现上述任一实施例中所述的基于MPI负载平衡方法的步骤。

在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:

当所述第一时间大于所述第五时间时,通过给定不同的MPI进程数并进行测试,计算出所述地震数据节点的最佳缓冲区大小;

根据所述地震数据节点的最佳缓冲区大小,对所述地震数据节点的缓冲区大小进行调节。

在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:

对小粒度并行效率进行调整,以实现负载平衡。

在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:

当所述第五时间小于所述第二时间时,通过给定不同的MPI进程数并进行测试,计算出所述计算单元的最佳缓冲区大小;

根据所述计算单元的最佳缓冲区大小,对所述计算节点的缓冲区大小进行调节;

对小粒度并行效率进行调整,以实现负载平衡。

在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:

对所述地震数据进行多次读取操作,得到地震数据读取速度;

根据地震数据读取分析算法,对所述地震数据读取速度进行计算,得到节点从所述存储设备读取数据的平均时间;

根据节点数n及所述平均时间,得到所述第一时间。

在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:

对segy格式的地震数据进行多次读取操作,得到所述地震数据读取速度。

在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取多次从节点0或所述存储设备到节点n,传输所述地震数据所需的时间,并对传输所述地震数据所需的时间进行加权平均,得到所述第二时间。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 基于MPI负载平衡方法、装置、计算机设备和存储介质
  • 基于联合学习框架的设备使用寿命的预测方法、装置、计算机设备及计算机可读存储介质
技术分类

06120113822820