CN109241633B - 基于遗传算法的流体机械并行仿真程序进程映射方法 - Google Patents
基于遗传算法的流体机械并行仿真程序进程映射方法 Download PDFInfo
- Publication number
- CN109241633B CN109241633B CN201811063464.1A CN201811063464A CN109241633B CN 109241633 B CN109241633 B CN 109241633B CN 201811063464 A CN201811063464 A CN 201811063464A CN 109241633 B CN109241633 B CN 109241633B
- Authority
- CN
- China
- Prior art keywords
- communication
- individual
- simulation program
- mpi
- fluid machinery
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/06—Multi-objective optimisation, e.g. Pareto optimisation using simulated annealing [SA], ant colony algorithms or genetic algorithms [GA]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Biology (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Genetics & Genomics (AREA)
- Data Mining & Analysis (AREA)
- Physiology (AREA)
- Geometry (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了基于遗传算法的流体机械并行仿真程序进程映射方法,包括以下步骤:在流体机械并行仿真程序编译时链接进程通信插桩库,捕获程序运行过程中MPI通信的通信信息,得到记录有进程间传输消息大小和通信频次的日志文件;根据通信日志文件构建进程通信模式矩阵;对用户申请到的计算资源测试通信代价,建立计算单元通信距离矩阵;定义流体机械并行仿真程序的通信开销模型;使用混合并行遗传算法求解最优的进程映射策略;根据混合并行遗传算法中得到的最优进程映射策略,静态绑定MPI进程到指定计算节点,重新运行流体机械并行仿真程序。
Description
技术领域
本发明属于计算流体力学与计算机交叉领域,特别涉及基于遗传算法的流体机械并行仿真程序进程映射方法。
背景技术
计算流体力学(CFD,Computational Fluid Dynamics)是一门采用数值计算方法直接求解流动主控方程来解释各种流动现象的学科,是典型的高性能数值计算应用领域。随着CFD技术的不断进步以及超级计算机计节点规模的不断扩大,需要模拟的流体机械应用领域的物理过程和几何模型越来越复杂,涉及的网格规模也更庞大,已有流体机械并行仿真程序使用十万核进行模拟计算。在流体机械并行仿真程序中,计算区域被划分为很多网格,这些计算网格被分配到位于不同的计算核心上的进程进行计算,而位于不同计算核心之间的进程通过消息传递接口MPI(Message Passing Interface)进行通信。为了满足高性能互连网络大规模,低延迟,高吞吐率的要求,超级计算机多采用胖树(Fat tree)网络拓扑结构,在这种网络拓扑结构中,计算节点位于树的叶子节点上,路由节点位于树的中间节点上,负责链接不同层次的节点,进行节点之间消息的传输和发送。这种多层次的网络拓扑架构导致了MPI进程在不同层次的计算节点间进行消息传递的通信代价差异较大。当流体机械并行仿真程序的进程数量达到一定规模后,进程间的通信开销将成为程序性能提升的瓶颈。因此,寻找一种映射策略,将流体机械并行仿真程序的各个MPI进程合理分配到超级计算机的计算节点上,对解决大规模流体机械并行仿真程序的通信瓶颈问题有重要的意义。
MPI进程映射是一个NP难的问题,目前已有研究人员通过图论方法、启发式算法和数学规划方法来寻求接近最优的进程映射方法。但是这些方法存在容易陷入局部最优解、搜索效率低的问题,当并行程序的进程规模增大时,求解最优映射的时间开销过长。
发明内容
本发明的目的在于提供基于遗传算法的流体机械并行仿真程序进程映射方法,以解决上述问题。
为实现上述目的,本发明采用以下技术方案:
基于遗传算法的流体机械并行仿真程序进程映射方法,包括以下步骤:
步骤1,在流体机械并行仿真程序中,不同进程之间使用消息传递接口MPI进行通信。收集流体机械并行仿真程序各个MPI进程间的通信亲和度信息,并记录到日志文件中;
步骤2,从步骤1得到的日志文件中整理各个MPI进程间的通信亲和度,建立一个进程通信模式矩阵G∈Rn×n,n表示流体机械并行仿真程序中MPI进程个数,其中的元素g(i,j)(i∈n,j∈n)表示进程i和进程j的通信亲和度。
步骤3,Pingpong是测试任意两个计算单元之间进行发送Ping并接收消息Pong来回所需时间的程序。通过Pingpong测试对用户申请到的计算单元间的通信带宽和通信延迟数据进行收集,对收集到的数据进行正规化整合,得到不同计算单元间的通信距离;
步骤4,定义流体机械并行仿真程序的通信开销模型Z;如公式1所示,G为步骤2提到的进程通信模式矩阵,H为步骤3提到的计算单元通信距离矩阵,π为MPI进程和计算单元间的一对一映射,g(i,j)为进程i和进程j的通信亲和度,h(π(i),π(j))表示进程i和进程j所在计算单元之间的通信距离,通过计算得到流体机械并行仿真程序在进程映射π下的通信总开销Z;
步骤5,将步骤2得到的进程通信模式矩阵G和步骤3得到的计算单元通信距离矩阵H整理到一个文件中,使用混合并行遗传算法根据该文件中的数据求解最优的进程映射策略;将流体机械并行仿真程序的进程映射方案定义为个体,利用迭代的方式对种群中的个体进行选择、交叉、变异、模拟退火操作,生成使得通信开销Z最小的进程映射方案;
步骤6,根据步骤5中得到的进程映射策略,静态绑定MPI进程到指定计算节点,重新运行流体机械并行仿真程序。
进一步的,步骤3中,建立一个计算单元通信距离矩阵H∈Rn×n,n表示计算单元的个数,与流体机械并行仿真程序中的MPI进程个数相同,其中的元素h(p,q)(p∈n,q∈n)为计算单元p和计算单元q的通信距离。
进一步的,步骤1中,对MPI进程间传输消息的大小和通信的频次进行正规化整合,得到MPI进程间通信亲和度;通过在流体机械并行仿真程序编译时链接进程通信插桩库,将程序中MPI函数的调用过程引导到进程通信插桩库中,从而利用进程通信插桩库中的相应函数捕获程序运行过程中MPI进程的通信亲和度,并记录到日志文件中。
进一步的,步骤5具体包括以下步骤:
1)编码;对混合并行遗传算法中的个体采用实数编码,定义一个长度为n的实数编码序列TP,n表示进程数目和计算单元的数目;序列TP中,进程号所在的位置表示该进程所对应的计算单元;TP(k)=pi表示将流体机械并行仿真程序中的进程pi(i∈n)映射到计算单元k上,其中k为计算单元的编号,pi表示进程编号,k∈[0,n-1],pi∈[0,n-1];在混合并行遗传算法中,一个个体表示一种进程编号序列,对应一种进程映射方案;实数编码表示流体机械模拟程序中进程号和计算单元的映射关系;
2)建立适应度函数;选择步骤4提到的公式1作为适应度函数;适应度函数越小的个体表示其对应的进程映射策略通信开销越小,在混合并行遗传算法运行结束时,适应度函数最小的个体就是要求的最优个体,对应使得通信开销最小的进程映射方案;
3)初始化;在混合并行遗传算法中将0号进程称为主进程,其他进程称为从进程;用户在算法运行前,在配置文件中设置遗传算法的配置参数,包括种群规模、最大进化代数、交叉概率、选择概率、变异概率和模拟退火算法的初始温度T0和终止温度Ts;算法初始时主进程读入配置文件,并将其中的配置参数通过MPI依次发送给其它从进程;从进程在接收到配置参数后,独立地在本进程内产生初始种群;
4)在从进程中生成多个线程;OpenMP是一个针对共享内存架构的多线程编程标准,是基于显示编译指导语句的多线程程序编程接口。各从进程调用OpenMP编译指导语句生成多个线程,这些线程并行执行5)~9),在主线程中保留当前种群中适应度函数最小的个体;
5)选择操作;采用精英保留和轮盘赌选择两种方法进行选择操作;精英选择是指在算法执行过程中,每一次迭代时,当前种群中的最优个体不参与遗传及模拟退火操作,而是用它来替换本次迭代结束后种群中适应度最大的个体;轮盘赌选择能保证当前种群中适应度函数值较小的个体有更大的概率被遗传到下一代;
6)交叉操作;在种群中随机选择两个个体S1和S2进行交叉操作:随机选择一个交叉点r,r∈(0,n-1),n为个体的长度,对应于流体机械并行仿真程序的MPI进程个数;以此交叉点r将S1和S2分别划分为两部分:前一部分长度为r,后一部分长度为n-r;将S1的后部分基因与S2的后部分基因进行交换,然后重新调整,保证两个个体中的基因没有重复出现,得到两个新的个体S1’和S2’,将它们放到种群中;
7)变异操作;在种群中随机选择一个个体S,在S的序列中随机选择两个位置的基因,将它们的位置进行交换,得到一个新的个体S’,将它放到种群中;
8)模拟退火操作;根据3)中的初始温度T0和终止温度Ts,在每次迭代的最后一步,根据公式(2)计算当前的温度Ti,其中k表示总的迭代步数,i表示当前迭代代数;
Ti=0.6×(1+cos(i×π÷k))×(T0-Ts)+Ts (2)
模拟退火的主要实现方式为:对于当前迭代产生的种群中的个体,依次计算它们的适应度函数值并进行比较;具体流程为,记最小的适应度函数值为Z_best,对于新的个体,其适应度函数值为Z_new,根据公式(3)计算适应度函数变化量Δ,当Δ<0时,令Z_best=Z_new,接受该个体,并将其加入到种群中;当Δ>0时,以概率p接受该个体,p的计算方式如公式(4)所示;
Δ=Z_new-Z_best (3)
p=exp(Δ/Ti) (4)
9)各个进程执行优秀个体迁移操作;在主进程中设置一个优秀个体接收缓冲区,每隔一定的进化代数d,各个从进程就调用MPI的发送函数,向主进程的优秀个体接收缓冲区发送当前种群中的最优个体;主进程在接收到各个从进程发送的最优个体后,根据它们的适应度函数值进行排序,将适应度函数值最小的个体以广播的方式发送给各个从进程;从进程接收到主进程发送的最优个体后,用最优个体替换掉当前种群中的适应度函数值最大的个体;
10)判断混合并行遗传算法是否结束;判断当前进化代数i,当i等于3)中设置的最大进化代数时,算法结束,由主进程输出求解得到的最优个体,即最优的进程号序列,否则转到4)继续执行。
与现有技术相比,本发明有以下技术效果:
本发明提供的基于遗传算法的流体机械并行仿真程序进程映射方法,首先考虑到目前超级计算机中节点的使用方式多为独占式,计算节点分配给用户后,不能为其他用户使用。因此用户可以利用已经申请到的节点资源,在流体机械并行仿真程序正式运行之前,通过本发明提出的进程映射方法在非常短的时间内求得一种最优的进程映射策略。在流体机械并行仿真程序正式运行时,根据这种进程映射策略将MPI进程静态绑定到已经申请到的计算节点上,减小了流体机械并行仿真程序在运行期间的通信开销,提升了程序的执行效率。
其次,本发明通过MPI+OpenMP混合编程的方式设计了求解进程映射策略时用到的遗传算法,实现了进程和线程的两级并行,能够充分利用超级计算机中不同层次的计算资源,同时也充分挖掘了遗传算法的内在并行性,从根本上提升了进程映射问题的求解质量和求解速度,使得进程映射方法能更好地应用于大规模流体机械并行仿真程序中,有效解决了大规模流体机械并行仿真程序的通信瓶颈问题。
最后通过在混合并行遗传算法的每次进化中引入模拟退火算法,使得算法能够以一定的概率接受进化过程中产生的较差个体,保证了种群的多样性,进一步解决了传统遗传算法容易陷入早熟的不足,使得混合并行遗传算法的求解质量更高。
本发明在引入进程映射方法解决流体机械并行仿真程序通信瓶颈问题的同时,通过设计混合并行遗传算法,引入模拟退火算法等方式,优化了映射算法求解进程映射策略时的求解质量和求解速度,能够在短时间内求到高质量的进程映射策略,将这种进程映射策略应用到流体机械并行仿真程序中,有效减少了流体机械并行仿真程序的通信开销,实现了通信优化的效果。
附图说明
图1为进程映射方法的框架示意图
图2为混合并行遗传算法的流程图
具体实施方式
以下结合附图对本发明进一步说明:
请参阅图1和图2,基于遗传算法的流体机械并行仿真程序进程映射方法,其特征在于,包括以下步骤:
步骤1,在流体机械并行仿真程序中,不同进程之间使用消息传递接口MPI(Message Passing Interface)进行通信。收集流体机械并行仿真程序各个MPI进程间的通信亲和度信息,并记录到日志文件中;
步骤2,从步骤1得到的日志文件中整理各个MPI进程间的通信亲和度,建立一个进程通信模式矩阵G∈Rn×n,n表示流体机械并行仿真程序中MPI进程个数,其中的元素g(i,j)(i∈n,j∈n)表示进程i和进程j的通信亲和度。
步骤3,Pingpong是测试任意两个计算单元之间进行发送(Ping)并接收消息(Pong)来回所需时间的程序。通过Pingpong测试对用户申请到的计算单元间的通信带宽和通信延迟数据进行收集,对收集到的数据进行正规化整合,得到不同计算单元间的通信距离;
步骤4,定义流体机械并行仿真程序的通信开销模型Z;如公式1所示,G为步骤2提到的进程通信模式矩阵,H为步骤3提到的计算单元通信距离矩阵,π为MPI进程和计算单元间的一对一映射,g(i,j)为进程i和进程j的通信亲和度,h(π(i),π(j))表示进程i和进程j所在计算单元之间的通信距离,通过计算得到流体机械并行仿真程序在进程映射π下的通信总开销Z;
步骤5,将步骤2得到的进程通信模式矩阵G和步骤3得到的计算单元通信距离矩阵H整理到一个文件中,使用混合并行遗传算法根据该文件中的数据求解最优的进程映射策略;将流体机械并行仿真程序的进程映射方案定义为个体,利用迭代的方式对种群中的个体进行选择、交叉、变异、模拟退火操作,生成使得通信开销Z最小的进程映射方案;
步骤6,根据步骤5中得到的进程映射策略,静态绑定MPI进程到指定计算节点,重新运行流体机械并行仿真程序。
步骤3中,建立一个计算单元通信距离矩阵H∈Rn×n,n表示计算单元的个数,与流体机械并行仿真程序中的MPI进程个数相同,其中的元素h(p,q)(p∈n,q∈n)为计算单元p和计算单元q的通信距离。
步骤1中,对MPI进程间传输消息的大小和通信的频次进行正规化整合,得到MPI进程间通信亲和度;通过在流体机械并行仿真程序编译时链接进程通信插桩库,将程序中MPI函数的调用过程引导到进程通信插桩库中,从而利用进程通信插桩库中的相应函数捕获程序运行过程中MPI进程的通信亲和度,并记录到日志文件中。
步骤5具体包括以下步骤:
1)编码;对混合并行遗传算法中的个体采用实数编码,定义一个长度为n的实数编码序列TP,n表示进程数目和计算单元的数目;序列TP中,进程号所在的位置表示该进程所对应的计算单元;TP(k)=pi表示将流体机械并行仿真程序中的进程pi(i∈n)映射到计算单元k上,其中k为计算单元的编号,pi表示进程编号,k∈[0,n-1],pi∈[0,n-1];在混合并行遗传算法中,一个个体表示一种进程编号序列,对应一种进程映射方案;实数编码表示流体机械模拟程序中进程号和计算单元的映射关系;
2)建立适应度函数;选择步骤4提到的公式1作为适应度函数;适应度函数越小的个体表示其对应的进程映射策略通信开销越小,在混合并行遗传算法运行结束时,适应度函数最小的个体就是要求的最优个体,对应使得通信开销最小的进程映射方案;
3)初始化;在混合并行遗传算法中将0号进程称为主进程,其他进程称为从进程;用户在算法运行前,在配置文件中设置遗传算法的配置参数,包括种群规模、最大进化代数、交叉概率、选择概率、变异概率和模拟退火算法的初始温度T0和终止温度Ts;算法初始时主进程读入配置文件,并将其中的配置参数通过MPI依次发送给其它从进程;从进程在接收到配置参数后,独立地在本进程内产生初始种群;
4)在从进程中生成多个线程;OpenMP是一个针对共享内存架构的多线程编程标准,是基于显示编译指导语句的多线程程序编程接口。各从进程调用OpenMP编译指导语句生成多个线程,这些线程并行执行5)~9),在主线程中保留当前种群中适应度函数最小的个体;
5)选择操作;采用精英保留和轮盘赌选择两种方法进行选择操作;精英选择是指在算法执行过程中,每一次迭代时,当前种群中的最优个体不参与遗传及模拟退火操作,而是用它来替换本次迭代结束后种群中适应度最大的个体;轮盘赌选择能保证当前种群中适应度函数值较小的个体有更大的概率被遗传到下一代;
6)交叉操作;在种群中随机选择两个个体S1和S2进行交叉操作:随机选择一个交叉点r,r∈(0,n-1),n为个体的长度,对应于流体机械并行仿真程序的MPI进程个数;以此交叉点r将S1和S2分别划分为两部分:前一部分长度为r,后一部分长度为n-r;将S1的后部分基因与S2的后部分基因进行交换,然后重新调整,保证两个个体中的基因没有重复出现,得到两个新的个体S1’和S2’,将它们放到种群中;
7)变异操作;在种群中随机选择一个个体S,在S的序列中随机选择两个位置的基因,将它们的位置进行交换,得到一个新的个体S’,将它放到种群中;
8)模拟退火操作;根据3)中的初始温度T0和终止温度Ts,在每次迭代的最后一步,根据公式(2)计算当前的温度Ti,其中k表示总的迭代步数,i表示当前迭代代数;
Ti=0.6×(1+cos(i×π÷k))×(T0-Ts)+Ts (2)
模拟退火的主要实现方式为:对于当前迭代产生的种群中的个体,依次计算它们的适应度函数值并进行比较;具体流程为,记最小的适应度函数值为Z_best,对于新的个体,其适应度函数值为Z_new,根据公式(3)计算适应度函数变化量Δ,当Δ<0时,令Z_best=Z_new,接受该个体,并将其加入到种群中;当Δ>0时,以概率p接受该个体,p的计算方式如公式(4)所示;
Δ=Z_new-Z_best (3)
p=exp(Δ/Ti) (4)
9)各个进程执行优秀个体迁移操作;在主进程中设置一个优秀个体接收缓冲区,每隔一定的进化代数d,各个从进程就调用MPI的发送函数,向主进程的优秀个体接收缓冲区发送当前种群中的最优个体;主进程在接收到各个从进程发送的最优个体后,根据它们的适应度函数值进行排序,将适应度函数值最小的个体以广播的方式发送给各个从进程;从进程接收到主进程发送的最优个体后,用最优个体替换掉当前种群中的适应度函数值最大的个体;
10)判断混合并行遗传算法是否结束;判断当前进化代数i,当i等于3)中设置的最大进化代数时,算法结束,由主进程输出求解得到的最优个体,即最优的进程号序列,否则转到4)继续执行。
实施例:
步骤A、编译流体机械并行仿真程序时链接进程通信插桩库,在程序运行期间收集并记录MPI进程间的通信信息,包括进程间传输消息的大小和通信的频次,得到一个日志文件。
步骤B、从步骤A得到的日志文件中整理各个进程间的通信信息,建立一个进程通信模式矩阵G∈Rn×n,其中的元素g(i,j)表示进程i和进程j的通信亲和度,是进程间通信总量和通信频率的组合。本实施例中为了方便计算通信开销,将进程间的通信亲和度定义为公式(5),其中volumei,j为进程i和进程j间的通信总量,pi,j为进程i和进程j的通信次数。
步骤C、对用户申请到的计算资源建立一个计算单元通信距离矩阵H∈Rn×n,其中的元素h(π(i),π(j))表示进程i和进程j所在计算单元之间的通信距离,通信距离由Pingpong测试得到的通信带宽和延迟数据整合得到。
步骤D、将步骤B得到的进程通信模式矩阵G和步骤C得到的计算单元通信距离矩阵H整理到一个文件中,使用混合并行遗传算法根据该文件求解最优的进程映射策略。
步骤D1、编码。本实施例中对混合并行遗传算法中的个体采用实数编码,定义一个长度为36的实数编码序列TP,36为本实施例中流体机械并行仿真程序的进程数目和计算单元的数目。如序列(0,35,8,9,4,21,25,31,…)表示将流体机械并行仿真程序中的进程0、35、8、9、4、21、25、31分别映射到编号为0、1、2、3、4、5、6、7的计算单元上。
步骤D2、初始化。用户在算法运行前,在配置文件中设置遗传算法的配置参数,本实施例中设置的种群规模为1000、最大进化代数为5000、交叉概率为0.9、变异概率为0.05,模拟退火算法的初始温度为1000,终止温度为0.0001。算法初始时主进程读入配置文件,并将其中的配置参数通过MPI依次发送给其它从进程。从进程在接收到配置参数后,独立地在本进程内产生个体数量为1000的初始种群,种群中的个体随机产生,其形式为D1提到长度为36的实数编码序列TP。
步骤D3、在从进程中生成多个线程。如图2所示,各从进程调用OpenMP编译指导语句生成多个线程,这些线程并行执行选择、交叉、变异、模拟退火操作并计算适应度函数值,在主线程中保留当前种群中适应度函数值最小的个体。
步骤D4、各个进程执行迁移操作。为了保持种群的多样性,本实施例在混合遗传算法运行中,在主进程中设置一个优秀个体接收缓冲区,每隔10代进行一次种群间优秀个体的迁移,各个从进程调用MPI的发送函数,向主进程的优秀个体接收缓冲区发送当前种群中的最优个体。主进程在接收到各个从进程发送的最优个体后,根据它们的适应度函数值进行排序,将适应度函数值最小的个体以广播的方式发送给各个从进程。从进程接收到主进程发送的最优个体后,用最优个体替换掉当前种群中的适应度函数值最大的个体。在算法技术时,主进程中始终保留着进化过程中最好的35个个体。
步骤D5、判断混合并行遗传算法是否结束。判断当前进化次数i,当i等于最大进化代数5000时,算法结束,由主进程输出求解得到的最优个体,即最优的进程号序列,否则转到D3继续执行。
步骤E、根据步骤D中得到的最优进程映射策略,将36个MPI进程静态绑定到36个计算单元上,重新运行流体机械并行仿真程序。实验结果表明,该基于进程映射的流体机械并行仿真程序的通信优化方法,通过综合考虑流体机械并行仿真程序的进程间通信模式和超级计算机不同计算单元间的通信代价,建立了一种通信开销模型,同时充分利用超级计算机丰富的计算资源,使用混合并行遗传算法在非常短的时间内求得了使得通信开销最小的进程映射策略,将这种进程映射策略运用到流体机械并行仿真程序上后,程序的通信开销和执行时间减少20%以上,达到了对程序进行通信优化的目标。
Claims (3)
1.基于遗传算法的流体机械并行仿真程序进程映射方法,其特征在于,包括以下步骤:
步骤1,在流体机械并行仿真程序中,不同进程之间使用消息传递接口MPI进行通信;收集流体机械并行仿真程序各个MPI进程间的通信亲和度信息,并记录到日志文件中;
步骤2,从步骤1得到的日志文件中整理各个MPI进程间的通信亲和度,建立一个进程通信模式矩阵G∈Rn×n,n表示流体机械并行仿真程序中MPI进程个数,其中的元素gi,gj,i∈n,j∈n表示进程i和进程j的通信亲和度;
步骤3,通过Pingpong测试对用户申请到的计算单元间的通信带宽和通信延迟数据进行收集,对收集到的数据进行正规化整合,得到不同计算单元间的通信距离;Pingpong是测试任意两个计算单元之间进行发送Ping并接收消息Pong来回所需时间的程序;
步骤4,定义流体机械并行仿真程序的通信开销模型Z;如公式( 1 ) 所示,G为步骤2提到的进程通信模式矩阵,H为步骤3提到的计算单元通信距离矩阵,π为MPI进程和计算单元间的一对一映射,g(i,j)为进程i和进程j的通信亲和度,h(π(i),π(j))表示进程i和进程j所在计算单元之间的通信距离,通过计算得到流体机械并行仿真程序在进程映射π下的通信总开销Z;
步骤5,将步骤2得到的进程通信模式矩阵G和步骤3得到的计算单元通信距离矩阵H整理到一个文件中,使用混合并行遗传算法根据该文件中的数据求解最优的进程映射策略;将流体机械并行仿真程序的进程映射方案定义为个体,利用迭代的方式对种群中的个体进行选择、交叉、变异、模拟退火操作,生成使得通信开销Z最小的进程映射方案;
步骤6,根据步骤5中得到的进程映射策略,静态绑定MPI进程到指定计算节点,重新运行流体机械并行仿真程序;
步骤5具体包括以下步骤:
1)编码;对混合并行遗传算法中的个体采用实数编码,定义一个长度为n的实数编码序列TP,对应于流体机械并行仿真程序的MPI进程数目;序列TP中,进程号所在的位置表示该进程所对应的计算单元;TP(k)=pi表示将流体机械并行仿真程序中的进程pi,i∈n,映射到计算单元k上,其中k为计算单元的编号,pi表示进程编号,k∈[0,n-1],pi∈[0,n-1];在混合并行遗传算法中,一个个体表示一种进程编号序列,对应一种进程映射方案;实数编码表示流体机械模拟程序中进程号和计算单元的映射关系;
2)建立适应度函数;选择步骤4提到的公式(1)作为适应度函数;适应度函数越小的个体表示其对应的进程映射策略通信开销越小,在混合并行遗传算法运行结束时,适应度函数最小的个体就是要求的最优个体,对应使得通信开销最小的进程映射方案;
3)初始化;在混合并行遗传算法中将0号进程称为主进程,其他进程称为从进程;用户在算法运行前,在配置文件中设置遗传算法的配置参数,包括种群规模、最大进化代数、交叉概率、选择概率、变异概率和模拟退火算法的初始温度T0和终止温度Ts;算法初始时主进程读入配置文件,并将其中的配置参数通过MPI依次发送给其它从进程;从进程在接收到配置参数后,独立地在本进程内产生初始种群;
4)在从进程中生成多个线程;各从进程调用OpenMP编译指导语句生成多个线程,这些线程并行执行5)~9),在主线程中保留当前种群中适应度函数最小的个体;OpenMP是一个针对共享内存架构的多线程编程标准,是基于显示编译指导语句的多线程程序编程接口;
5)选择操作;采用精英保留和轮盘赌选择两种方法进行选择操作;精英选择是指在算法执行过程中,每一次迭代时,当前种群中的最优个体不参与遗传及模拟退火操作,而是用它来替换本次迭代结束后种群中适应度最大的个体;轮盘赌选择能保证当前种群中适应度函数值小的个体有更大的概率被遗传到下一代;
6)交叉操作;在种群中随机选择两个个体S1和S2进行交叉操作:随机选择一个交叉点r,r∈(0,n-1),n为个体的长度,对应于流体机械并行仿真程序的MPI进程个数;以此交叉点r将S1和S2分别划分为两部分:前一部分长度为r,后一部分长度为n-r;将S1的后部分基因与S2的后部分基因进行交换,然后重新调整,保证两个个体中的基因没有重复出现,得到两个新的个体S1’和S2’,将它们放到种群中;
7)变异操作;在种群中随机选择一个个体S,在S的序列中随机选择两个位置的基因,将它们的位置进行交换,得到一个新的个体S’,将它放到种群中;
8)模拟退火操作;根据3)中的初始温度T0和终止温度Ts,在每次迭代的最后一步,根据公式(2)计算当前的温度Ti,其中k表示总的迭代步数,i表示当前迭代代数;
Ti=0.6×(1+cos(i×π÷k))×(T0-Ts)+Ts (2)
模拟退火的主要实现方式为:对于当前迭代产生的种群中的个体,依次计算它们的适应度函数值并进行比较;具体流程为,记最小的适应度函数值为Z_best,对于新的个体,其适应度函数值为Z_new,根据公式(3)计算适应度函数变化量Δ,当Δ<0时,令Z_best=Z_new,接受该个体,并将其加入到种群中;当Δ>0时,以概率p接受该个体,p的计算方式如公式(4)所示;
Δ=Z_new-Z_best (3)
p=exp(Δ/Ti) (4)
9)各个进程执行优秀个体迁移操作;在主进程中设置一个优秀个体接收缓冲区,每隔一定的进化代数d,各个从进程就调用MPI的发送函数,向主进程的优秀个体接收缓冲区发送当前种群中的最优个体;主进程在接收到各个从进程发送的最优个体后,根据它们的适应度函数值进行排序,将适应度函数值最小的个体以广播的方式发送给各个从进程;从进程接收到主进程发送的最优个体后,用最优个体替换掉当前种群中的适应度函数值最大的个体;
10)判断混合并行遗传算法是否结束;判断当前进化代数i,当i等于3)中设置的最大进化代数时,算法结束,由主进程输出求解得到的最优个体,即最优的进程号序列,否则转到4)继续执行。
2.根据权利要求1所述的基于遗传算法的流体机械并行仿真程序进程映射方法,其特征在于,步骤3中,建立一个计算单元通信距离矩阵H∈Rn×n,n表示计算单元的个数,与流体机械并行仿真程序中的MPI进程个数相同,其中的元素hp,hq,p∈n,q∈n为计算单元p和计算单元q的通信距离。
3.根据权利要求1所述的基于遗传算法的流体机械并行仿真程序进程映射方法,其特征在于,步骤1中,对MPI进程间传输消息的大小和通信的频次进行正规化整合,得到MPI进程间通信亲和度;通过在流体机械并行仿真程序编译时链接进程通信插桩库,将程序中MPI函数的调用过程引导到进程通信插桩库中,从而利用进程通信插桩库中的相应函数捕获程序运行过程中MPI进程的通信亲和度,并记录到日志文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811063464.1A CN109241633B (zh) | 2018-09-12 | 2018-09-12 | 基于遗传算法的流体机械并行仿真程序进程映射方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811063464.1A CN109241633B (zh) | 2018-09-12 | 2018-09-12 | 基于遗传算法的流体机械并行仿真程序进程映射方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109241633A CN109241633A (zh) | 2019-01-18 |
CN109241633B true CN109241633B (zh) | 2021-03-23 |
Family
ID=65058260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811063464.1A Active CN109241633B (zh) | 2018-09-12 | 2018-09-12 | 基于遗传算法的流体机械并行仿真程序进程映射方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241633B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111221741B (zh) * | 2020-01-17 | 2023-10-10 | 北京工业大学 | 一种基于遗传算法和日志分析的异常单元测试自动生成的方法 |
CN111814415A (zh) * | 2020-07-09 | 2020-10-23 | 长沙海格北斗信息技术有限公司 | 用于芯片验证的高效回归测试方法 |
CN112132287B (zh) * | 2020-09-04 | 2022-05-17 | 苏州浪潮智能科技有限公司 | 一种分布式的量子计算仿真方法和装置 |
CN112286211A (zh) * | 2020-12-28 | 2021-01-29 | 上海交大智邦科技有限公司 | 一种不规则布局车间的环境建模及agv路径规划方法 |
CN116521180B (zh) * | 2023-06-28 | 2024-03-08 | 荣耀终端有限公司 | 一种编译优化方法、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646282A (zh) * | 2013-12-17 | 2014-03-19 | 中国科学院计算机网络信息中心 | 基于混合优化算法的并行处理方法 |
CN104615869A (zh) * | 2015-01-22 | 2015-05-13 | 广西大学 | 一种基于相似度排挤的多种群模拟退火混合遗传算法 |
-
2018
- 2018-09-12 CN CN201811063464.1A patent/CN109241633B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646282A (zh) * | 2013-12-17 | 2014-03-19 | 中国科学院计算机网络信息中心 | 基于混合优化算法的并行处理方法 |
CN104615869A (zh) * | 2015-01-22 | 2015-05-13 | 广西大学 | 一种基于相似度排挤的多种群模拟退火混合遗传算法 |
Non-Patent Citations (4)
Title |
---|
《Rank reordering for MPI communication optimization》;B. Brandfass等;《Computers & Fluids》;20120131;第80卷;摘要,第373-375页 * |
《基于MPI的进程拓扑感知映射研究》;李东洋 等;《微电子学与计算机》;20130531;第30卷(第5期);第68页 * |
《基于申威众核处理器的混合并行遗传算法》;赵瑞祥 等;《计算机应用》;20170930;第37卷(第9期);摘要,第2519-2521页 * |
《连续系统模型的分布并行仿真方法研究》;范威威 等;《计算机仿真》;20140228;第31卷(第2期);第344-348页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109241633A (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241633B (zh) | 基于遗传算法的流体机械并行仿真程序进程映射方法 | |
Pang et al. | An EDA-GA hybrid algorithm for multi-objective task scheduling in cloud computing | |
US9785472B2 (en) | Computing cluster performance simulation using a genetic algorithm solution | |
CN113411369A (zh) | 一种云服务资源协同优化调度方法、系统、介质及设备 | |
Xu et al. | A multiple priority queueing genetic algorithm for task scheduling on heterogeneous computing systems | |
CN109447264B (zh) | 云计算环境下基于vham-r模型的虚拟机放置遗传优化方法 | |
Cao et al. | New functions added to ALEVIN for evaluating virtual network embedding | |
CN111813500B (zh) | 一种多目标云工作流调度方法及装置 | |
CN111082971B (zh) | 一种面向云负载测试的共享式资源分配方法 | |
CN110008023B (zh) | 基于遗传算法的云计算系统预算约束随机任务调度方法 | |
Mi et al. | Embedding virtual infrastructure based on genetic algorithm | |
Lu et al. | A genetic algorithm-based job scheduling model for big data analytics | |
CN111461335A (zh) | 基于mpi多进程的含噪声单量子逻辑门实现方法及装置 | |
Wang et al. | A Hybrid Genetic Algorithm with Integer Coding for Task Offloading in Edge-Cloud Cooperative Computing. | |
CN111160560B (zh) | 预估模拟量子计算所需资源的方法、系统 | |
Ge et al. | Cloud computing task scheduling strategy based on improved differential evolution algorithm | |
Mansouri | Network and data location aware approach for simultaneous job scheduling and data replication in large-scale data grid environments | |
CN114386349A (zh) | 系统级数字电路的布线方法及装置、设备、存储介质 | |
Liu et al. | Janus: A unified distributed training framework for sparse mixture-of-experts models | |
CN113014649B (zh) | 一种基于深度学习的云物联负载均衡方法、装置及设备 | |
CN107257307B (zh) | 基于Spark的并行化遗传算法求解多终端协同接入网络方法 | |
CN114492052A (zh) | 一种全局流级别网络仿真方法、系统及装置 | |
CN104778088A (zh) | 一种基于减少进程间通信开销的并行i/o优化方法与系统 | |
CN117311975A (zh) | 大模型并行训练方法、系统及可读存储介质 | |
CN107168795B (zh) | 基于cpu-gpu异构复合式并行计算框架的密码子偏差系数模型方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |