一种自动优化的MPI通信传输方法技术

技术编号:30335862 阅读:22 留言:0更新日期:2021-10-10 01:05
本发明专利技术公开了一种自动优化的MPI通信传输方法。本发明专利技术所述自动优化MPI通信传输方法,根据通信数组的数据量、通信次数和前后代码段情况,选择最优通信数据量区间{min,max}下每个数据包的大小,利用MPI通信带宽、降低时延,提高程序通信执行效率,特别在大规模下能显著减少程序执行的时间开销,实现对不同通信数据量的MPI程序进行自动优化。的MPI程序进行自动优化。的MPI程序进行自动优化。

【技术实现步骤摘要】
一种自动优化的MPI通信传输方法


[0001]本专利技术具体涉及一种自动优化的MPI通信传输方法,属于高性能计算、并行计算、计算机网络的


技术介绍

[0002]超级计算机的兴起与不断发展,给应用程序的计算提供了更高效的平台,应用程序可模拟计算的规模也逐渐增加,大规模计算变得越来越普遍。MPI作为一种分布式存储并行内存编程模型,经常被应用于大规模计算任务。MPI通过消息传递的方式来完成进程间的数据传输,借助每个进程自己独立的堆栈空间,完成进程间通信的显式函数调用。MPI已经成为高性能计算领域主流并且被广泛应用的进程间通信方式,目前MPI实现主要分为MPICH和OPENMPI两大类。
[0003]MPI的使用和流行使得进程间通信的性能优化逐渐得到重视,通信的带宽和时延成为衡量MPI进程间通信性能的两个主要因素。在小规模下,MPI进程通信带宽随进程规模的不断增加,呈线性增长。但是,进行大规模计算,特别是上千进程甚至上万进程时,MPI通信带宽趋势发生变化,不再呈线性递增。在神威国产超级计算机10000进程下,单次通信数据量小于2k字节时,带宽曲线呈指数增长;单次通信数据量等于2k字节时,带宽达到峰值;当单次通信数据量增加到4k字节期间,带宽呈明显下降趋势;然后随着单次通信数据量增大到1M字节期间,带宽曲线再次呈指数增长;单次通信数据量为1M字节时,带宽达到最大但低于峰值。对于时延而言,单次通信数据量小于等于2k字节时,时延在同一量级,增加不明显;当单次通信数据量增加到16k字节期间,时延呈明显上升趋势;随着单次通信数据量增大到1M字节期间,个别点有所下降,但是仍然保持较高的时延。综合考虑通信带宽和时延两个因素,进行大规模计算时,大多数应用程序的MPI通信带宽利用率低,时延高,最终制约了应用程序的计算性能。
[0004]针对上述问题,目前也形成了一些针对特定规模下的MPI优化方法,但是实际问题多种多样,要根据具体情况具体优化,给实际优化的工作带来了巨大挑战,不仅产生了较大的工作量,而且可推广性比较差。亟需找到解决此类问题的关键,设计一种可以自动优化的MPI通信传输方法。
[0005]例如,赵海涛,唐紫浩等人在专利“一种基于MPI广域高性能计算网络方法”中提出了一种新的OPENMPI框架模型来解决带宽利用率低、时延高的问题,但是该方法无法实现对不同通信数据量的MPI程序进行自动优化。

技术实现思路

[0006]针对现有技术的不足,本专利技术提供了一种自动优化的MPI通信传输方法。
[0007]专利技术概述:本专利技术根据测试代码中MPI通信的特点,针对性地选择合适的优化方法,对MPI通信函数进行打包或者拆包操作。本专利技术默认用户基于MPI的应用程序能正确并发执行。
[0008]术语解释:
[0009]MPI:(Message Passing Interface),消息传递接口。
[0010]打包:指将多个同类MPI操作合并成一个MPI操作。
[0011]拆包:指将一个MPI操作拆分成多个同类MPI操作。
[0012]本专利技术的技术方案为:
[0013]一种自动优化的MPI通信传输方法,包括步骤如下:
[0014]1)配置应用程序算例,确定应用程序算例的运行规模为N个MPI进程;
[0015]2)分析N进程规模下算例中存在的MPI通信类型;MPI通信类型包括集合通信和点对点通信;
[0016]3)对于每一类MPI通信类型形成最优性能优区间I:
[0017]3.1)针对该MPI通信类型在N进程规模下,测试数据量在2字节到1M字节的通信带宽和时延,得到带宽和时延变化趋势;
[0018]3.2)寻找数据量超过1M字节时,带宽突然下降后又逐步上升的转折点,记录该转折点的数据量为max,作为性能最优区间的最大值;
[0019]3.3)取min=0.5*max,作为最优区间的最小值;
[0020]3.4)形成性能最优区间I={min,max};
[0021]4)对于每一类MPI通信类型进行如下操作:
[0022]4.1)分析MPI通信数组的维数n、维度大小Dj以及MPI通信语句前后代码段中存在相同通信类型的通信次数P;其中,j=1,

,n;n≥1;MPI通信语句前后代码段的划分标准是“代码段内的代码与代码段外的代码不存在数据依赖”;MPI通信数组即涉及MPI通信的数组;
[0023]4.2)申请x个本地临时缓冲区buffi;
[0024]4.3)计算第i个待MPI通信的MPI通信数组的数据量Si=D1*

*Dn*sizeof(数据类型);其中,sizeof(数据类型)表示该数据类型所占字节数的大小;数据类型包括浮点型和整型;sizeof(浮点型)=4,sizeof(整型)=8;
[0025]4.4)如果Si>max,调用拆包方法UNPACK接口,跳转到步骤4.7);
[0026]4.5)如果Si<min,调用打包方法PACK接口,跳转到步骤4.10);
[0027]4.6)如果min≤Si≤max,调用NORMAL接口,该接口不作处理,直接调用原MPI通信接口;
[0028]4.7)如果Si能被max整除,则跳转到步骤4.14),否则,跳转到步骤4.8);
[0029]4.8)如果Si不能被max整除,且余数大于等于min,跳转到步骤4.14);否则进入步骤4.9);
[0030]4.9)设置新的最优区间I={min,(max+min)/2},进入步骤4.8);
[0031]4.10)调用PACK接口后,重新判断MPI通信语句前后代码段中存在相同通信类型的通信次数P,如果P≠0,则执行步骤4.11);如果P=0,则调用NORMAL接口,不作处理,直接调用原MPI通信接口;
[0032]4.11)当Q≥2时,将数据量小于min的MPI通信数组依次打包,直至数据量大于等于min或者把Q个通信数组都合并完成,设i=i+Q,进入步骤4.12);
[0033]4.12)将待打包的MPI通信数组拼接到临时缓冲区buffi中,并记录每个打包数据
的拼接点p[q],然后调用原有的MPI通信方法,进入步骤4.13);其中,q=1,

,Q

1;
[0034]4.13)MPI通信完成后,从临时缓冲区buffi按拼接点p[q]取出原有MPI通信数组,按打包前的顺序进行数组拆包操作,还原原数组,进入步骤4.16);
[0035]4.14)将待拆包的MPI通信数组分割到w个临时缓冲区buffi中,并记录每个缓冲区片段的长度li,然后调用原有的MPI通信方法进行MPI通信,进入步骤4.15);其中w=Si/max,w≤x;
[0036]4.15)MPI通信完成后,根据每个缓冲区片段的长度li将每个缓冲区片段中的数据从临时缓冲区buffi打包到原MPI通本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种自动优化的MPI通信传输方法,其特征在于,包括步骤如下:1)配置应用程序算例,确定应用程序算例的运行规模为N个MPI进程;2)分析N进程规模下算例中存在的MPI通信类型;MPI通信类型包括集合通信和点对点通信;3)对于每一类MPI通信类型形成最优性能优区间I:3.1)针对该MPI通信类型在N进程规模下,测试数据量在2字节到1M字节的通信带宽和时延,得到带宽和时延变化趋势;3.2)寻找数据量超过1M字节时,带宽突然下降后又逐步上升的转折点,记录该转折点的数据量为max,作为性能最优区间的最大值;3.3)取min=0.5*max,作为最优区间的最小值;3.4)形成性能最优区间I={min,max};4)对于每一类MPI通信类型进行如下操作:4.1)分析MPI通信数组的维数n、维度大小Dj以及MPI通信语句前后代码段中存在相同通信类型的通信次数P;其中,j=1,

,n;n≥1;MPI通信语句前后代码段的划分标准是“代码段内的代码与代码段外的代码不存在数据依赖”;4.2)申请x个本地临时缓冲区buffi;4.3)计算第i个待MPI通信的MPI通信数组的数据量Si=D1*

*Dn*sizeof(数据类型);其中,sizeof(数据类型)表示该数据类型所占字节数的大小;4.4)如果Si>max,调用拆包方法UNPACK接口,跳转到步骤4.7);4.5)如果Si<min,调用打包方法PACK接口,跳转到步骤4.10);4.6)如果min≤Si≤max,调用NORMAL接口,该接口不作处理,直接调用原MPI通信接口;4.7)如果Si能被max整除,则跳转到步骤4.14),否则,跳转到步骤4.8);4.8)如果Si不能被max整除,且余数大于等于min,跳转到步骤4....

【专利技术属性】
技术研发人员:曾云辉庄园张海红郭强郭莹王利杨美红
申请(专利权)人:山东省计算中心国家超级计算济南中心
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1