CN104778088A - 一种基于减少进程间通信开销的并行i/o优化方法与*** - Google Patents
一种基于减少进程间通信开销的并行i/o优化方法与*** Download PDFInfo
- Publication number
- CN104778088A CN104778088A CN201510181574.8A CN201510181574A CN104778088A CN 104778088 A CN104778088 A CN 104778088A CN 201510181574 A CN201510181574 A CN 201510181574A CN 104778088 A CN104778088 A CN 104778088A
- Authority
- CN
- China
- Prior art keywords
- machine
- agent process
- node
- program
- machine node
- 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.)
- Granted
Links
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种基于进程亲和性的减少进程间通信从而提升并行I/O效率的方法,包括以下过程:首先对以Collective I/O为主流的并行I/O程序进行分析,收集和统计集群机器节点信息及MPI程序配置信息;然后,该***通过预处理操作计算各种可能的机器节点与代理进程的匹配结果,然后再通过性能预测模块,确定最佳的匹配策略;最后将预处理得到的匹配策略写入machine file这个配置文件中。实验结果也表明,该***配置简单,能在不用修改原程序代码的情况下,通过简单快递的预处理,为程序的运行确定最佳的进程分配方案,从而减少进程间通信开销,达到提升并行I/O性能的目的。本发明能够解决现有高性能计算领域中并行I/O效率低下的问题,在不影响再有***的其他部署的情况下通过减少进程间数据通信开销从而带来明显的性能提升。
Description
技术领域
本发明属于高性能计算中的I/O子***领域,更具体地是涉及一种基于减少进程间通信开销以提高并行I/O效率的方法与***。
背景技术
近年来大数据处理在科学计算领域持续升温,一方面体现出科学计算领域对大数据处理日益旺盛的需求,同时也可以看出在传统高性能计算领域,随着处理的数据量越来越大,许多科学计算应用正从计算密集型向数据密集型转变,高性能计算面临着大数据带来的全新挑战。
数据传输并行I/O接口(Message-Passing Interface,MPI-IO)标准制定了一种并行I/O接口——聚合I/O(Collective I/O)接口,它为大数据时代的科学计算提供了良好的并行应用程序接口(ApplicationProgramming Interface,API)标准。Collective I/O有多种实现方式,其中的两阶段(Two-Phase)实现是最被广泛接受的一种。Two-Phase实现提供了一个底层文件***的I/O设备抽象层(Abstract Device I/O,ADIO),在这个抽象层中可以方便实现Collective I/O的优化,并且可以保证可靠的移植性。Two-Phase实现中的Two-Phase优化的实现基于的最主要假设是,访问多个不连续的小文件块的I/O开销远比进程间的数据通信要高。因此,通过聚合所有需要I/O数据的进程,从而使得真正到达下层文件***的I/O请求变得更加规整同时保证规模,用进程间的数据交换代替原有的各个进程独立的不连续块I/O访问。以写操作为例,它将整个***的I/O操作分为两个阶段,即数据传输阶段(Shuffle阶段)和I/O阶段,也因此得名,下面具体描述这种实现方式的细节。
首先,从所有需要I/O数据的进程中选出若干进程作为代理进程(Aggregator),这些代理进程将在后面直接与文件***交互,从而避免所有进程同时发出I/O请求造成的请求规模的不可控,与此同时将所有待访问的文件块划分为相应个数的文件域,每个代理进程将负责对应的一个文件域的相关I/O请求操作。以写操作为例,具体在Shuffle阶段中,这些代理进程将根据其他进程对数据的访问请求,以及各自的文件域的对应关系,与其他进程进行数据通信操作,从而获知其他进程将要写入文件的数据块请求信息以及从各个进程中获得对应的数据以备在下一个I/O阶段中写入文件***。完成上述的Shuffle阶段后,代理进程已经收集得到所有进程的数据请求信息,从而也确定了所有代理进程各自的所要负责的文件域,进入下一个I/O阶段后,这些代理进程就代替其他进程与底层文件***进行相关的I/O操作。针对写操作而言,各个代理进程将各自文件域中的数据写入文件,因为文件域中数据是大块连续的,因此,可以十分有效地提升I/O性能。如果是在读操作中,则是在代理进程收集了各个进程所要读取的文件块请求信息后,先进行I/O阶段从文件***中读取数据,然后再进入Shuffle阶段,将读到的数据发送给相应的其他进程。此外,机器配置文件(machine file)是MPI程序的基本配置文件,可以通过其中的配置,决定如何在各个机器上分配具体的进程数量。
随着HPC***中机器节点核数的不断增加,Collective I/O的性能效率也变得越来越重要和关键。HPC***中不同的机器节点拥有不同的CPU核心数,也就是说不同的机器节点上会运行不同个数的进程。这样一来,某个机器节点上运行的代理进程文件域中的数据请求可能来自别的机器节点,该代理进程与别的进程进行数据交换的时候,就会产生一些跨机器节点的数据通信开销。因此,如果能通过某种代理进程与机器节点的匹配方法,使得上述跨机器节点的数据通信开销减少的话,对并行I/O性能的提升会有很大的帮助。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于减少进程间通信开销的并行I/O优化方法,通过减少进程间的数据通信开销,达到增加并行I/O在科学计算领域运行效率的问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于减少进程间通信开销的并行I/O优化方法,包括以下步骤:
(1)收集集群硬件信息及并行程序运行参数,所述集群硬件信息包括:机器节点数及对应ID;所述并行程序运行参数包括:MPI并行程序代理进程个数,进程ID,以及拟分配在各台机器节点上的进程数;
(2)根据步骤(1)得到的集群硬件信息及并行程序运行参数,通过几种排列组合方法得到几种机器节点序列排列结果,然后根据代理进程数量,从上述排列结果中选取相应个数的机器节点来运行代理进程,即得到几种可能的代理进程与机器节点匹配的组合结果;
(3)计算步骤(2)中生成的几种匹配结果的匹配率,从而预测出在Collective I/O中代理进程与其他进程间可能的通信开销;或者通过在各种匹配组合的条件下运行基准测试程序,通过运行时间来对比各种匹配组合下的I/O性能好坏;
(4)根据步骤(3)中的匹配率或者预测结果,从中选出最小进程间通信开销的代理进程与机器节点的匹配结果,作为最终程序的运行配置,并将其写成配置文件;
(5)程序运行前读取该配置文件,从而得到代理进程和机器节点匹配结果,MPI库会按照该配置文件在程序运行过程完成代理进程的配置。
本发明的一个实施例中,步骤(2)中通过几种排列组合方法得到几种机器节点序列排列结果,具体包括:
(2.1).按照拟分配的进程数量,降序排列机器节点;
(2.2)将所有机器节点按“之字型”顺序排列,即将拟分配的进程数量最多的机器节点放在第一位,次多的节点放在最后一位,第三大的放在第二位,依次类推;
(2.3)将拟分配的进程数量最多的机器节点放在第一位,最少的放在第二位,第二大的放在第三位,依次类推;
(2.4)将拟分配的进程数量最多的机器节点放在最后一位,剩下的节点排列同方法(2.3);
(2.5)将方法(2.3)的排列方法逆置,即将拟分配的进程数量最少的机器节点放在第一位,最多的放在第二位,依此类推;
(2.6)将方法(2.4)中的排列方法逆置,即将拟分配的进程数量最少的机器节点放在最后一位,依此类推。
本发明的一个实施例中,步骤(2)中从上述排列结果中选取相应个数的机器节点来运行代理进程,具体为:
依据步骤(1)中的程序运行参数中的代理进程个数K,按照该机器节点序列从中选出前K个机器节点运行代理进程,从而K个代理进程都对应到了相应的机器节点上。
本发明的一个实施例中,所述步骤(3)中的匹配率的计算公式为:
匹配率=∑Ai/S
其中,Ai是指每个代理进程中不需要与其他机器节点上的进程进行转移的文件数据量,S则是指每次Collective I/O操作中所有代理进程的文件域数据量之和。
按照本发明的另一方面,还提供了一种基于减少进程间通信开销的并行I/O优化***,所述***包括信息收集模块、机器节点选择模块、预测模块、配置文件生成模块以及配置模块,其中:
所述信息收集模块,用于收集集群硬件信息及并行程序运行参数,所述集群硬件信息包括:机器节点数及对应ID;所述并行程序运行参数包括:MPI并行程序代理进程个数,进程ID,以及拟分配在各台机器节点上的进程数;
所述机器节点选择模块,用于根据信息收集模块得到的集群硬件信息及并行程序运行参数,通过几种排列组合方法得到几种机器节点序列排列结果,然后根据代理进程数量,从上述排列结果中选取相应个数的机器节点来运行代理进程,即得到几种可能的代理进程与机器节点匹配的组合结果;
所述预测模块,用于计算机器节点选择模块生成的几种匹配结果的匹配率,从而预测出在Collective I/O中代理进程与其他进程间可能的通信开销;或者通过在各种匹配组合的条件下运行基准测试程序,通过运行时间来对比各种匹配组合下的I/O性能好坏;
所述配置文件生成模块,用于根据预测模块得到的匹配率或者预测结果,从中选出最小进程间通信开销的代理进程与机器节点的匹配结果,作为最终程序的运行配置,并将其写成配置文件;
所述配置模块,用于在程序运行前读取该配置文件,得到代理进程和机器节点匹配结果,MPI库会按照该配置文件在程序运行过程完成代理进程的配置。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)对***I/O性能提升明显:通过对现有高性能计算集群特性的有效观察和实验验证,确认了当前并行I/O***的很大一部分性能损耗在于当前大数据环境下的科学计算程序没有考虑到多核环境下,代理进程配置在不同机器节点上运行带来的额外进程间通信开销。而本发明正是基于这点,通过考虑进程亲和性,尽可能减少跨机器节点的数据交换,极大地减少通信开销,极有效地提升了并行I/O效率;
(2)部署方便:本发明结合硬件收集和对用户程序配置参数的读取,生成可供MPI程序识读的新配置文件就可以达到目的,对原有***几乎不需要有程序上的修改,且模块划分清晰,利于后期的开发和维护;
(3)可扩展:本缓存很好地继承了并行文件***易于扩展的特性,当计算平台需要对机器节点进行扩展时,并不需要对策略进行太大调整,只需要按照步骤更新相关配置参数和信息即可。
附图说明
图1是本发明基于减少进程间通信开销的并行I/O优化方法的流程图;
图2是本发明配置之前的代理进程与机器节点匹配示意图;
图3是本发明配置之后的代理进程与机器节点匹配示意图;
图4是本发明的一个匹配文件示例图;
图5是本发明配置前各进程间的通信示意图;
图6是本发明配置后各进程间的通信示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的整体思路在于提供一个基于事先用户提供的各项程序运行参数,以及当前集群环境的配置信息而做出的一个代理进程与机器节点间匹配策略。通过这个策略,配置代理进程在机器节点上的部署,从而将尽可能多的进程与需要跟它进行数据交换的代理进程配置在同一个机器节点上,从而极大地改善进程间的数据交换效率。
如图1所示,本发明基于减少进程间跨机器节点通信开销的并行I/O优化方法包括以下步骤:
(1)收集集群硬件信息及并行程序运行参数,所述集群硬件信息包括:机器节点数及对应ID;所述并行程序运行参数包括:MPI并行程序代理进程个数,进程ID,以及拟分配在各台机器节点上的进程数。
这一步骤中收集的信息为后面的匹配策略的计算提供参数输入,是代理进程如何在机器节点上分布的依据。不同的机器节点可以设置不同数目的CPU核心参与程序运行,参与程序运行的CPU核心数量将与拟分配在该机器节点的进程数相同。
本步骤的优点在于,这些信息的采集是程序运行的一步预操作,在程序运行之前采集完成,集群信息可以反复利用,一次采集之后不需要再根据不同应用而更改。而有关程序的运行参数也比较简单,易于采集。
(2)根据步骤(1)得到的集群硬件信息及并行程序运行参数,通过几种排列组合方法得到几种机器节点序列排列结果,然后根据代理进程数量,从上述排列结果中选取相应个数的机器节点来运行代理进程,即得到几种可能的代理进程与机器节点匹配的组合结果;
为了更好地描述代理进程在机器节点上的分配,采用{c0,c1,…,cn-1}这样的符号记法来描述机器节点序列,这个符号表达式中n即对应步骤(1)中得到的机器节点数量,表示一共有n个机器节点,c0表示拟分配c0个进程在第一个机器节点上运行,依次类推。
对于生成的上述各种不同机器节点序列,MPI库会依据步骤(1)中的程序运行参数中的代理进程个数K,按照该机器节点序列从中选出前K个机器节点运行代理进程,从而K个代理进程都对应到了相应的机器节点上。该步骤中,生成机器节点序列的方式如下所述:
1.按照拟分配的进程数量,降序排列机器节点;
2.将所有机器节点按“之字型”(zigzag)顺序排列,即将拟分配的进程数量最多的机器节点放在第一位,次多的节点放在最后一位,第三大的放在第二位,依次类推;
3.将拟分配的进程数量最多的机器节点放在第一位,最少的放在第二位,第二大的放在第三位,依次类推;
4.将拟分配的进程数量最多的机器节点放在最后一位,剩下的节点排列同方法3;
5.将方法3的排列方法逆置,即将拟分配的进程数量最少的机器节点放在第一位,最多的放在第二位,依此类推;
6.将方法4中的排列方法逆置,即将拟分配的进程数量最少的机器节点放在最后一位,依此类推;
例如,以一个机器序列{8,7,6,5,4,3,2,1}为例说明,该序列表明,一共有8个机器节点,其中第一个机器节点拟分配8个进程,第二个机器节点拟分配7个进程,依此类推。于是根据上面的描述,一共生成6种匹配序列,结果分别对应为:{8,7,6,5,4,3,2,1},{8,6,4,2,1,3,5,7},{8,1,7,2,6,3,5,4},{7,1,6,2,5,3,4,8},{1,8,2,7,3,6,4,5},{1,7,2,6,3,5,8,4}。假设根据步骤(1)的程序运行信息表明,一共需要有4个代理进程,则以结果序列{8,7,6,5,4,3,2,1}为例,从最开头开始选取,将这4个代理进程分别运行在似分配8个进程,7个进程,6个进程,以及5个进程的机器节点上。其他结果的代理进程与机器节点的匹配情况同理可得。
(3)计算步骤(2)中生成的几种匹配结果的匹配率,从而预测出在Collective I/O中代理进程与其他进程间可能的通信开销;或者通过在各种匹配组合的条件下运行基准测试程序,通过运行时间来对比各种匹配组合下的I/O性能好坏。
匹配率主要用来衡量跨机器节点的进程间数据通信大小,以读操作为例,代理进程从文件***读取数据之后,需要与其他进程之间进行数据传输。因为每个机器节点上CPU有限,上述进程不可能和代理进程都在同一个机器节点上,因此总有一些机器节点上的进程所请求的数据需要从别的机器节点上的代理进程获取。为了更好地反映出这种跨机器节点传输的数据量的大小,进而推算出某种分配策略下的进程通信开销大小,引入匹配率的概念。
匹配率的概念反映的是Collective I/O中数据本地性,即一共有多少进程所需要的数据是被同一个机器节点中的代理进程所拥有的。定义匹配率的计算公式为:
匹配率=∑Ai/S
其中,Ai是指每个代理进程中不需要与其他机器节点上的进程进行转移的文件数据量,S则是指每次Collective I/O操作中所有代理进程的文件域数据量之和。
在计算匹配率时,通过假设一个典型数组的访问模式来模拟估算。假设一共有N个机器节点,需要配置M个代理进程,给定一个机器节点序列{c0,c1,c2,…,cN-1},同时得到序列中ci的最大值cmax=MAX(c0,c1,…,cN-1)。为了方便计算,模拟进程访问一个cmax*M大小的数组的典型情况,一共有Csum=c0+c1+…+cN-1个进程,每个代理进程负责Csum/M块的数据。为了计算匹配率,需要按机器节点序列的顺序,假设一个代理进程就运行在该机器节点上,然后判断要与该代理进程进行数据通信的计算节点是否跟当前代理进程位于同一个机器节点,如果是,则记录这是一个匹配块,因为说明这将是一个机器节点内的数据传输;如果不是,则不记录匹配,因为这说明这将是一个跨节点的数据传输。具体的算法如下所述,其中的输入参数都是由上一步骤中提供的参数,即代理进程数,机器节点数,还有(2)中得到的机器节点排列序列。配置一个Csum*M大小的数组,其中的每个元素代表一个数据块,扫描一遍判断请求其中的每块数据的进程所在的机器节点,然后再扫描一遍数组,统计请求该数据块的进程是否与负责这个数据块的代理进程在同一个机器节点上,最后统计结果。
这一步是本发明的核心步骤,借助附图对此加以详细说明。如图2所示,假设有一个4*3的数组部署给了12个进程进行数据处理。这个数组的物理大小为u*v字节。一般情况下一个MPI进程就分配给一个CPU核心处理,一个CPU核心也只运行一个进程。为了充分利用机器资源,即认为有几个CPU核心,就认为拟分配多少个进程运行在该机器节点上。一共有6个机器节点的集群来处理这个数组的作业处理,同时按默认的一个机器节点就一个代理进程的配置,从所有进程中选出6个进程作为代理进程来完成I/O操作。这样一来容易得出,每个代理进程最终负责读写请求的数据量为u*v/N。从图中可以看出,假设m0和m1节点有4个CPU核心(即拟分配4个进程运行在这两个机器节点上),而其他机器节点只有1个CPU核心(即拟分配1个进程在这些机器节点上)。因为每一个进程都是要负责同样多的数据,因此含有更多的CPU核心的机器节点将会比其他节点拥有更多的I/O数据。这样带来的一个结果就是,一些机器节点上进程的数据必须由别的机器节点的代理进程来处理。假定{4,4,1,1,1,1}是最初由***自动生成的配置序列,它表示的含义是给m0和m1机器节点分配4个进程,其他进程各自分配给其他机器节点,可以得到一个匹配率为:
匹配率=0.25
这是其中一种匹配策略下的匹配率,根据排列组合关系可得出还有可能的其他各组合。如图3,则是另一个可能的重排列结果,在这种情形下,同样的算法可以得到匹配率为:
匹配率=0.375
显然可以将匹配率从25%提升到37.5%.
在这一步骤中,如果需要获得尽可能精准的预测数据,还可以通过事先运行一些比较经典的基准测试程序(benchmark),来计算得出步骤(2)中得出的各种匹配组合的运行开销结果。
(4)根据步骤(3)中的匹配率或者预测结果,从中选出最小进程间通信开销的代理进程与机器节点的匹配结果,作为最终程序的运行配置,并将其写成配置文件;
该步骤存在的意义在于,通过比较从步骤(3)中计算得到几种代理进程和机器节点匹配序列的匹配率,或者比较通过基准程序运行出的预测结果,从中选出最佳的策略,写入MPI程序的配置文件。如图4所示,对应的两种不同序列的machine file配置文件。
(5)程序运行前读取该配置文件,从而得到代理进程和机器节点匹配结果,MPI库会按照该配置文件在程序运行过程完成代理进程的配置;
该步骤通过按照生成的machine file文件,分配代理进程到各个机器节点的CPU上。为了更清楚地了解这步骤的作用,如图5和图6所示,分别表示采用本发明策略时配置前和配置后的代理进程与其他进程间通信情况。可以明显看出,配置后的进程通信情况与配置前的相比,明显减少了跨机器节点的进程间数据传输量,从而极大地减少了代理进程与其他进程间通信开销,从而极大地提升性能效率。
本发明还提供了一种基于减少进程间通信开销的并行I/O优化***,所述***包括信息收集模块、机器节点选择模块、预测模块、配置文件生成模块以及配置模块,其中:
所述信息收集模块,用于收集集群硬件信息及并行程序运行参数,所述集群硬件信息包括:机器节点数及对应ID;所述并行程序运行参数包括:MPI并行程序代理进程个数,进程ID,以及拟分配在各台机器节点上的进程数;
所述机器节点选择模块,用于根据信息收集模块得到的集群硬件信息及并行程序运行参数,通过几种排列组合方法得到几种机器节点序列排列结果,然后根据代理进程数量,从上述排列结果中选取相应个数的机器节点来运行代理进程,即得到几种可能的代理进程与机器节点匹配的组合结果;
所述预测模块,用于计算机器节点选择模块生成的几种匹配结果的匹配率,从而预测出在Collective I/O中代理进程与其他进程间可能的通信开销;或者通过在各种匹配组合的条件下运行基准测试程序,通过运行时间来对比各种匹配组合下的I/O性能好坏;
所述配置文件生成模块,用于根据预测模块得到的匹配率或者预测结果,从中选出最小进程间通信开销的代理进程与机器节点的匹配结果,作为最终程序的运行配置,并将其写成配置文件;
所述配置模块,用于在程序运行前读取该配置文件,得到代理进程和机器节点匹配结果,MPI库会按照该配置文件在程序运行过程完成代理进程的配置。
为了验证本发明***的可行性和有效性,在真实环境下配置本发明***,利用超算领域权威Benchmark进行实验。
本发明的集群基本硬件和软件配置如下表1所示:
表1
本发明首先本发明首先对以Collective I/O为主流的并行I/O程序进行分析,收集和统计集群机器节点信息及MPI程序配置信息;然后,该***通过预处理操作计算各种可能的机器节点与代理进程的匹配结果,然后再通过性能预测模块,确定最佳的匹配策略;最后将得到的匹配策略写入machine file这个配置文件中。实验结果也表明,该***配置简单,能在不用修改原程序代码的情况下,通过简单快速的处理过程,为程序的运行确定最佳的代理进程在机器节点上的分配方案,从而减少代理进程与其他进程间的通信开销,达到提升并行I/O性能的目的。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于减少进程间通信开销的并行I/O优化方法,其特征在于,包括以下步骤:
(1)收集集群硬件信息及并行程序运行参数,所述集群硬件信息包括:机器节点数及对应ID;所述并行程序运行参数包括:MPI并行程序代理进程个数,进程ID,以及拟分配在各台机器节点上的进程数;
(2)根据步骤(1)得到的集群硬件信息及并行程序运行参数,通过几种排列组合方法得到几种机器节点序列排列结果,然后根据代理进程数量,从上述排列结果中选取相应个数的机器节点来运行代理进程,即得到几种可能的代理进程与机器节点匹配的组合结果;
(3)计算步骤(2)中生成的几种匹配结果的匹配率,从而预测出在Collective I/O中代理进程与其他进程间可能的通信开销;或者通过在各种匹配组合的条件下运行基准测试程序,通过运行时间来对比各种匹配组合下的I/O性能好坏;
(4)根据步骤(3)中的匹配率或者预测结果,从中选出最小进程间通信开销的代理进程与机器节点的匹配结果,作为最终程序的运行配置,并将其写成配置文件;
(5)程序运行前读取该配置文件,从而得到代理进程和机器节点匹配结果,MPI库会按照该配置文件在程序运行过程完成代理进程的配置。
2.根据权利要求1所述的方法,其特征在于,步骤(2)中通过几种排列组合方法得到几种机器节点序列排列结果,具体包括:
(2.1)按照拟分配的进程数量,降序排列机器节点;
(2.2)将所有机器节点按“之字型”顺序排列,即将拟分配的进程数量最多的机器节点放在第一位,次多的节点放在最后一位,第三大的放在第二位,依次类推;
(2.3)将拟分配的进程数量最多的机器节点放在第一位,最少的放在第二位,第二大的放在第三位,依次类推;
(2.4)将拟分配的进程数量最多的机器节点放在最后一位,剩下的节点排列同方法(2.3);
(2.5)将方法(2.3)的排列方法逆置,即将拟分配的进程数量最少的机器节点放在第一位,最多的放在第二位,依此类推;
(2.6)将方法(2.4)中的排列方法逆置,即将拟分配的进程数量最少的机器节点放在最后一位,依此类推。
3.根据权利要求1或2所述的方法,其特征在于,步骤(2)中从上述排列结果中选取相应个数的机器节点来运行代理进程,具体为:
依据步骤(1)中的程序运行参数中的代理进程个数K,按照该机器节点序列从中选出前K个机器节点运行代理进程,从而K个代理进程都对应到了相应的机器节点上。
4.根据权利要求1或2所述的方法,其特征在于,所述步骤(3)中的匹配率的计算公式为:
匹配率=∑Ai/S
其中,Ai是指每个代理进程中不需要与其他机器节点上的进程进行转移的文件数据量,S则是指每次Collective I/O操作中所有代理进程的文件域数据量之和。
5.一种基于减少进程间通信开销的并行I/O优化***,其特征在于,所述***包括信息收集模块、机器节点选择模块、预测模块、配置文件生成模块以及配置模块,其中:
所述信息收集模块,用于收集集群硬件信息及并行程序运行参数,所述集群硬件信息包括:机器节点数及对应ID;所述并行程序运行参数包括:MPI并行程序代理进程个数,进程ID,以及拟分配在各台机器节点上的进程数;
所述机器节点选择模块,用于根据信息收集模块得到的集群硬件信息及并行程序运行参数,通过几种排列组合方法得到几种机器节点序列排列结果,然后根据代理进程数量,从上述排列结果中选取相应个数的机器节点来运行代理进程,即得到几种可能的代理进程与机器节点匹配的组合结果;
所述预测模块,用于计算机器节点选择模块生成的几种匹配结果的匹配率,从而预测出在Collective I/O中代理进程与其他进程间可能的通信开销;或者通过在各种匹配组合的条件下运行基准测试程序,通过运行时间来对比各种匹配组合下的I/O性能好坏;
所述配置文件生成模块,用于根据预测模块得到的匹配率或者预测结果,从中选出最小进程间通信开销的代理进程与机器节点的匹配结果,作为最终程序的运行配置,并将其写成配置文件;
所述配置模块,用于在程序运行前读取该配置文件,得到代理进程和机器节点匹配结果,MPI库会按照该配置文件在程序运行过程完成代理进程的配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510181574.8A CN104778088B (zh) | 2015-04-17 | 2015-04-17 | 一种基于减少进程间通信开销的并行i/o优化方法与*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510181574.8A CN104778088B (zh) | 2015-04-17 | 2015-04-17 | 一种基于减少进程间通信开销的并行i/o优化方法与*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104778088A true CN104778088A (zh) | 2015-07-15 |
CN104778088B CN104778088B (zh) | 2018-03-27 |
Family
ID=53619569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510181574.8A Active CN104778088B (zh) | 2015-04-17 | 2015-04-17 | 一种基于减少进程间通信开销的并行i/o优化方法与*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104778088B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094998A (zh) * | 2015-09-22 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 一种gtc软件的mpi通信方法及*** |
CN106095669A (zh) * | 2016-06-03 | 2016-11-09 | 中国矿业大学 | 基于调度序列约简的并行程序测试方法 |
CN109508193A (zh) * | 2018-11-28 | 2019-03-22 | 北京东土科技股份有限公司 | 一种应用部署运行方法、装置、终端设备和介质 |
CN109992574A (zh) * | 2019-04-10 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种自动调整并行文件***的参数的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101187906A (zh) * | 2006-11-22 | 2008-05-28 | 国际商业机器公司 | 用于提供高性能可缩放文件i/o的***和方法 |
CN101571814A (zh) * | 2009-06-01 | 2009-11-04 | 中国科学院计算技术研究所 | 基于消息传递接口的设备的通信行为信息提取方法及*** |
CN103336669A (zh) * | 2013-05-21 | 2013-10-02 | 华中科技大学 | 一种基于固态盘内部并行性的i/o调度方法及调度器 |
US20140075452A1 (en) * | 2011-11-08 | 2014-03-13 | Alexander Valerievich Supalov | Message passing interface tuning using collective operation modeling |
CN103699449A (zh) * | 2013-12-20 | 2014-04-02 | 北京遥测技术研究所 | 一种适用于监控mpi并行软件的通信方法 |
-
2015
- 2015-04-17 CN CN201510181574.8A patent/CN104778088B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101187906A (zh) * | 2006-11-22 | 2008-05-28 | 国际商业机器公司 | 用于提供高性能可缩放文件i/o的***和方法 |
CN101571814A (zh) * | 2009-06-01 | 2009-11-04 | 中国科学院计算技术研究所 | 基于消息传递接口的设备的通信行为信息提取方法及*** |
US20140075452A1 (en) * | 2011-11-08 | 2014-03-13 | Alexander Valerievich Supalov | Message passing interface tuning using collective operation modeling |
CN103336669A (zh) * | 2013-05-21 | 2013-10-02 | 华中科技大学 | 一种基于固态盘内部并行性的i/o调度方法及调度器 |
CN103699449A (zh) * | 2013-12-20 | 2014-04-02 | 北京遥测技术研究所 | 一种适用于监控mpi并行软件的通信方法 |
Non-Patent Citations (1)
Title |
---|
ZHIXIANG WANG ET.AL: "Iteration Based Collective I/O Strategy for Parallel I/O Systems", 《2014 14TH IEEE/ACM INTERNATIONAL SYMPOSIUM ON CLUSTER,CLOUD AND GRID COMPUTING》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094998A (zh) * | 2015-09-22 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 一种gtc软件的mpi通信方法及*** |
CN105094998B (zh) * | 2015-09-22 | 2019-05-10 | 浪潮(北京)电子信息产业有限公司 | 一种gtc软件的mpi通信方法及*** |
CN106095669A (zh) * | 2016-06-03 | 2016-11-09 | 中国矿业大学 | 基于调度序列约简的并行程序测试方法 |
CN106095669B (zh) * | 2016-06-03 | 2020-09-25 | 中国矿业大学 | 基于调度序列约简的并行程序测试方法 |
CN109508193A (zh) * | 2018-11-28 | 2019-03-22 | 北京东土科技股份有限公司 | 一种应用部署运行方法、装置、终端设备和介质 |
CN109508193B (zh) * | 2018-11-28 | 2022-02-18 | 北京东土科技股份有限公司 | 一种应用部署运行方法、装置、终端设备和介质 |
CN109992574A (zh) * | 2019-04-10 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种自动调整并行文件***的参数的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104778088B (zh) | 2018-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10581958B2 (en) | Automated server workload management using machine learning | |
CN102799486B (zh) | 一种MapReduce***中的数据采样和划分方法 | |
Bender et al. | Cache-adaptive algorithms | |
CN110740054B (zh) | 一种基于强化学习的数据中心虚拟化网络故障诊断方法 | |
CN104834479A (zh) | 面向云平台的自动优化存储***配置的方法及*** | |
CN107908536B (zh) | Cpu-gpu异构环境中对gpu应用的性能评估方法及*** | |
CN104025053A (zh) | 使用集体操作建模的消息传递接口调谐 | |
CN113821332B (zh) | 自动机器学习***效能调优方法、装置、设备及介质 | |
CN111966495B (zh) | 数据处理方法和装置 | |
Schlag et al. | Scalable edge partitioning | |
CN105556474A (zh) | 管理数据操作的存储器和存储空间 | |
CN104778088A (zh) | 一种基于减少进程间通信开销的并行i/o优化方法与*** | |
CN103425536A (zh) | 一种面向分布式***性能测试的测试资源管理方法 | |
CN112364584A (zh) | 一种基于分布式的静态时序分析方法 | |
Hua et al. | Hadoop configuration tuning with ensemble modeling and metaheuristic optimization | |
CN102521706A (zh) | Kpi 数据的分析方法及装置 | |
CN113807046A (zh) | 一种测试激励优化回归验证方法、***及介质 | |
CN112433853A (zh) | 一种面向超级计算机数据并行应用的异构感知数据划分方法 | |
CN109828790A (zh) | 一种基于申威异构众核处理器的数据处理方法和*** | |
CN103699534A (zh) | ***目录中数据对象的显示方法及装置 | |
CN112328332B (zh) | 一种面向云计算环境的数据库配置优化方法 | |
CN117435451A (zh) | 移动边缘计算中虚拟计算单元的功耗和性能模型建立方法 | |
CN107168795B (zh) | 基于cpu-gpu异构复合式并行计算框架的密码子偏差系数模型方法 | |
CN104050189B (zh) | 页面共享处理方法及装置 | |
Mirsadeghi et al. | PTRAM: A parallel topology-and routing-aware mapping framework for large-scale HPC systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |