一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法

专利2023-07-31  88



1.本发明涉及核材料辐照损伤模拟技术领域和并行计算技术领域,尤其涉及一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法。


背景技术:

2.核反应堆内的装置材料长期受到高能粒子辐射,使其内部结构发生改变,影响材料性能,进而影响核电站的使用寿命。为此需要研究材料在高温、高压、高辐射环境下的演化行为,但核材料辐照损伤的实验具有难度大、周期长等难点,因此通常采用计算模拟与实验相结合的方式进行研究。其中对材料微观结构的计算模拟中,常用的模拟方法是由不同时间和空间尺度的一系列方法构成的多尺度方法。
3.动力学蒙特卡洛(kinetic monte carlo,kmc)方法是一种广泛应用的微观尺度材料演化的随机方法。kmc方法依据过渡态理论构建一个近似的模型,该模型将演化过程看作由一系列组态之间的跃迁过程,可以准确的刻画出原子体系演化轨迹,是研究材料演化过程的强力工具,受算力的限制,材料多尺度计算模拟在时空规模尺度上距离工程要求还有很远距离。原子动力学蒙特卡洛方法(atom kinetic monte carlo,akmc)是一种将原子作为计算对象,无需对具体的缺陷类型进行表示的模拟方法。akmc方法根据是否使用点阵映射方法建模可分为基于格点的动力学蒙特卡洛(on-lattice kmc)和非格点动力学蒙特卡洛(off-lattice kmc)两种方法。前者将模拟过程中的原子固定在晶格点上,以达到简化建模的目的;后者原子可以自由移动,无需固定在晶格点上,因此支持更为复杂缺陷的模拟,具有更广的适应性。
4.动力学蒙特卡洛方法需要知晓在当前组态下所有可能发生的反应事件,从而才能正确完成对跃迁速率的计算。对于on-lattice kmc而言,由于原子固定在晶格点上,原子位置相对固定,通常使用实验数据得到的跃迁事件作为替代。然而,off-lattice kmc模拟具有更大的灵活性,体系内原子可以自由移动,导致体系复杂,无法直接使用实验结果估算,必须在体系内动态的找到所有可能的跃迁事件。一个完整的跃迁事件不仅要包含初态和末态,还需要鞍点的位置与能量,然而鞍点的搜索是一个复杂的计算过程,单次鞍点搜索往往需要完成多次体系全局力的计算。但目前尚未出现一种快速、有效的搜寻方法,这一点也导致off-lattice kmc难以对大规模体系进行模拟。超级计算机通常都是混合异构架构,可以提供强大的并行计算能力和巨大的数据吞吐量,在处理大规模数值计算问题方面表现优异。利用异构处理器可以加速鞍点搜索过程,这使得实现off-lattice kmc模拟成为可能。因此面向混合架构计算机,提出非格点动力学蒙卡方法具的并行模拟方法有普遍意义。
5.因此需要提供一种面向混合架构超级计算机实现的非格点动力学蒙特卡洛并行模拟方法,有助于解决蒙卡模拟计算量大,难以进行大规模模拟的难题。


技术实现要素:

6.本发明公开一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,可以有效
提高非格点动力学蒙特卡洛模拟规模和计算效率。
7.为了实现上述目的,本发明采用了如下技术方案:
8.一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,包括以下具体步骤:
9.s1:划分计算任务:将所有进程划分为一个负责选取反应事件的主进程以及若干个负责搜索反应事件的工作进程;
10.s2:初始化主进程:主进程初始化体系原子信息,并将原子信息发送给各个工作进程;
11.s3:初始化工作进程:工作进程从主进程同步体系原子信息,并初始化反应事件初始状态;
12.s4:搜索反应事件:工作进程从初始状态执行事件搜索算法,搜寻反应事件,并将搜索的反应事件发送给主进程;
13.s5:接收反应事件:接收工作进程发送的反应事件,并将其存储在反应事件表中,重复上述过程直至达到单个批次需要接受的事件数,并发送本批次计算结束信号;
14.s6:选取反应事件:随机选取反应事件,并广播发送被选中事件工作进程的编号,并由该工作进程负责下一个时间步模拟数据的同步,从而完成一个时间步的模拟,重复上述过程,直至达到预定的时间步,并发送模拟结束信号;
15.s7:更新模拟体系:当接收到本批次计算结束信号时,被选中事件对应的工作进程向其他工作进程同步事件执行后的体系原子信息,直至接收到模拟结束信号,则结束进程。
16.在一个优选的方案中,所述s1中,为每个mpi进程确定一个唯一的mpi进程编号pid,pid为整数,其中pid编号范围为0到n-1,将通信域内进程划分为一个主进程和若干个工作进程,若当前进程pid为0,该进程被标记为主进程并跳转至s2步骤,否则该进程被标记为工作进程并跳转至s3步骤。
17.在一个优选的方案中,所述s2中,具体包括以下步骤:
18.(1)创建模拟体系,创建数组存储模拟体系原子信息,数组每一位存储一个原子信息;
19.(2)创建动态数组,数组用于存储工作进程计算的反应事件;
20.(3)发送体系原子信息到其他工作进程。
21.在一个优选的方案中,所述s3中,具体包括以下步骤:
22.(1)创建通信数据结构;
23.(2)与主进程同步原子坐标信息,创建数组存储信息;
24.(3)初始化末态数组保存末态状态,初始化为0;
25.(4)构建存储异步请求发送句柄数组以保存异步请求句柄。
26.在一个优选的方案中,所述s4中,具体包括以下步骤:
27.(1)复制数组,作为本次反应事件搜索的初始值;
28.(2)计算鞍点状态以及末态,该过程需要频繁全局计算体系力,是整个事件搜索过程的热点,然而对于混合架构可将力的计算交由运算能力强的加速设备计算,从而极大缩短计算时间;
29.(3)计算初始状态体系能量以及鞍点能量;
30.(4)构建跃迁事件;
31.(5)构建通信数据结构,与pid为0的主进程通信,发送给主进程,将请求句柄存入动态数组;
32.(6)将末态存入动态数组;
33.(7)查看数据接收队列,若未接收到主进程发送的停止信号,继续上述操作,否则阻塞等待所有请求发送完毕,跳转至s7步骤。
34.在一个优选的方案中,所述s6中,具体包括以下步骤:
35.(1)设定当前批次接收事件数目为0;
36.(2)接受工作进程发送的反应事件,更新当前批次接收事件数目;
37.(3)统计本轮接收的所有反应事件中可行的事件数目、错误的事件数目、重复的事件数目;
38.(4)计算置信度;
39.(5)发送终止信号到其他进程,使工作进程停止搜索反应事件并同步接收所有剩余事件;
40.(6)随机选取反应事件,构建通信数据结构,广播被选中的反应事件。
41.由上可知,本发明提供的基于混合架构的非格点动力学蒙特卡洛并行模拟方法将反应事件搜索与反应事件选择两种任务分离,所需计算量大的反应事件搜索过程通过任务并行的方式划分给工作进程组执行,一个工作进程组由多个mpi进程组成,使得每个mpi进程负责多次事件搜索任务,另外反应事件的选择由一个mpi进程单独负责,适用于混合异构架构超级计算机,从而具有以下优点:
42.(1)占用内存少,主进程不保存原子信息,只维护事件表。
43.(2)通信效率高,反应事件采用异步通信,反应通信与事件搜索重叠。
附图说明
44.图1为本发明提出的一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法的任务划分图。
45.图2为本发明提出的一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法的流程图。
46.图3为本发明提出的一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法的伪代码图。
具体实施方式
47.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
48.参照图1-3,一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,包括以下具体步骤:
49.s1:划分计算任务:将所有进程划分为一个负责选取反应事件的主进程以及若干个负责搜索反应事件的工作进程;
50.s2:初始化主进程:主进程初始化体系原子信息,并将原子信息发送给各个工作进程;
51.s3:初始化工作进程:工作进程从主进程同步体系原子信息,并初始化反应事件初始状态;
52.s4:搜索反应事件:工作进程从初始状态执行事件搜索算法,搜寻反应事件,并将搜索的反应事件发送给主进程;
53.s5:接收反应事件:接收工作进程发送的反应事件,并将其存储在反应事件表中,重复上述过程直至达到单个批次需要接受的事件数,并发送本批次计算结束信号;
54.s6:选取反应事件:随机选取反应事件,并广播发送被选中事件工作进程的编号,并由该工作进程负责下一个时间步模拟数据的同步,从而完成一个时间步的模拟,重复上述过程,直至达到预定的时间步,并发送模拟结束信号;
55.s7:更新模拟体系:当接收到本批次计算结束信号时,被选中事件对应的工作进程向其他工作进程同步事件执行后的体系原子信息,直至接收到模拟结束信号,则结束进程。
56.在一个优选的实施方式中,s1中,为每个mpi进程确定一个唯一的mpi进程编号pid,pid为整数,其中pid编号范围为0到n-1。
57.在一个优选的实施方式中,s1中,将通信域内进程划分为一个主进程和若干个工作进程,若当前进程pid为0,该进程被标记为主进程并跳转至s2步骤,否则该进程被标记为工作进程并跳转至s3步骤。
58.在一个优选的实施方式中,s2中,具体包括以下步骤:
59.(1)创建模拟体系,创建数组存储模拟体系原子信息,数组每一位存储一个原子信息;
60.(2)创建动态数组,数组用于存储工作进程计算的反应事件;
61.(3)发送体系原子信息到其他工作进程。
62.在一个优选的实施方式中,s3中,具体包括以下步骤:
63.(1)创建通信数据结构;
64.(2)与主进程同步原子坐标信息,创建数组存储信息;
65.(3)初始化末态数组保存末态状态,初始化为0;
66.(4)构建存储异步请求发送句柄数组以保存异步请求句柄。
67.在一个优选的实施方式中,s4中,具体包括以下步骤:
68.(1)复制数组,作为本次反应事件搜索的初始值;
69.(2)计算鞍点状态以及末态,该过程需要频繁全局计算体系力,是整个事件搜索过程的热点,然而对于混合架构可将力的计算交由运算能力强的加速设备计算,从而极大缩短计算时间;
70.(3)计算初始状态体系能量以及鞍点能量;
71.(4)构建跃迁事件;
72.(5)构建通信数据结构,与pid为0的主进程通信,发送给主进程,将请求句柄存入动态数组;
73.(6)将末态存入动态数组;
74.(7)查看数据接收队列,若未接收到主进程发送的停止信号,继续上述操作,否则阻塞等待所有请求发送完毕,跳转至s7步骤。
75.在一个优选的实施方式中,s6中,具体包括以下步骤:
76.(1)设定当前批次接收事件数目为0;
77.(2)接受工作进程发送的反应事件,更新当前批次接收事件数目;
78.(3)统计本轮接收的所有反应事件中可行的事件数目、错误的事件数目、重复的事件数目;
79.(4)计算置信度;
80.(5)发送终止信号到其他进程,使工作进程停止搜索反应事件并同步接收所有剩余事件;
81.(6)随机选取反应事件,构建通信数据结构,广播被选中的反应事件。
82.如附图1所示的中央处理器(cpu,central processing unit)-图形处理器(gpu,graphics processing unit)混合异构架构,由于事件搜索任务需要多次完成体系全局力的计算,要消耗大量的计算资源,为计算密集型任务,可交由提供强大计算能力的异构加速设备完成加速计算,例如gpu加速器;事件选择任务过程无需大规模计算,但要频繁接收计算完成的反应事件,大部分时间都在等待io操作完成,为io密集型任务,可交由计算能力弱的中央处理器搭配高速互联网络完成。附图1中为混合架构超级计算机常用的cpu与gpu互连架构,其中一个cpu用多个die组成,编号为0的die包含负责事件选择与工作进程的管理的主进程,其他die包含负责事件搜索任务的工作进程,并利用异构加速器加速计算,充分利用混合异构超级计算机的计算能力。
83.附图3中为主进程和工作进程执行任务的伪代码,其中主进程主要负责工作进程的管理与反应事件的选择,工作进程主要负责反应事件的搜索。
84.工作原理:以下以模拟区域原子总数为atom_nums,模拟的维度为d,mpi进程总数为n,每轮搜索batch_size次事件为例,对本发明做进一步说明,其中atom_nums为正整数,n为大于等于2的正整数,d为整数且1≤d≤3;
85.其中每个原子以结构体atom的方式存储,atom结构体包括atom_id,atom_type,atom_location[d],其中atom_id存储每个原子的编号,atom_type存储每个原子的类型,atom_location为长度为d的数组,存储每个原子的位置;
[0086]
其中每个反应事件以结构体event的方式存储,event结构体包括rank_id,seq_id,energy,event_type,其中rank_id存储发送方mpi进程编号,seq_id存储反应后体系数组内的编号,energy存储反应事件的跃迁能量,event_type存储反应事件类型。
[0087]
划分计算任务:
[0088]
(1)为每个mpi进程确定一个唯一的mpi进程编号pid,pid为整数,其中pid编号范围为0到n-1;
[0089]
(2)如附图2示例所示,将通信域内进程划分为一个主进程和若干个工作进程,若当前进程pid为0,该进程被标记为主进程,跳转至“初始化主进程”步骤,否则该进程被标记为工作进程,跳转至“初始化工作进程”步骤。
[0090]
初始化主进程:
[0091]
(1)创建模拟体系,创建数组atoms_array[atom_nums]存储模拟体系原子信息,数组大小为atom_nums,数组每一位以atom结构体形式存储一个原子信息;
[0092]
(2)创建动态数组event_vector,数组用于存储工作进程计算的反应事件,数组可动态存储若干个以event结构体形式存储的反应事件;
[0093]
(3)发送体系原子信息到其他工作进程。
[0094]
初始化工作进程:
[0095]
(1)创建通信数据结构comm_atoms;
[0096]
(2)与主进程同步原子坐标信息,创建数组atoms_array存储comm_atoms信息;
[0097]
(3)初始化末态数组end_state_vector保存末态状态,cur_seq_id初始化为0;
[0098]
(4)构建存储异步请求发送句柄数组request_handle_vector以保存异步请求句柄。
[0099]
搜索反应事件:
[0100]
(1)复制数组atoms_array,作为本次反应事件搜索的初始值atoms_array_start;
[0101]
(2)使用atoms_array_start作为初始状态,计算鞍点状态atoms_array_saddle以及末态atoms_array_end,该过程需要频繁全局计算体系力,是整个事件搜索过程的热点,然而对于混合架构可将力的计算交由运算能力强的加速设备计算,从而极大缩短计算时间;
[0102]
(3)计算初始状态体系能量energy_start以及鞍点能量energy_end;
[0103]
(4)构建跃迁事件event,其中event.rank_id=pid,event.seq_id=cur_seq_id,event.energy=energy_end

[0104]
energy_start。
[0105]
(5)构建通信数据结构comm_event,与pid为0的主进程通信,发送comm_event给主进程,将请求句柄存入request_handle_vector动态数组;
[0106]
(6)将末态atoms_array_end存入end_state_vector动态数组,并更新cur_seq_id,即cur_seq_id=cur_seq_id+1;
[0107]
(7)查看数据接收队列,若未接收到主进程发送的停止信号,继续上述操作,否则阻塞等待所有请求发送完毕,跳转至“更新模拟体系”步骤。
[0108]
选取反应事件:
[0109]
(1)设定当前批次接收事件数目cur_batch_num,即cur_batch_num=0;
[0110]
(2)接受工作进程发送的反应事件,更新当前批次接收事件数目,使得cur_batch_num=cur_batch_num+1,重复上述过程,直至cur_batch_num大于batch_size;
[0111]
(3)统计本轮接收的所有反应事件中可行的事件数目good_event_num,错误的事件数目bad_event_num,重复的事件数目same_event_num;
[0112]
(4)计算置信度same_event_rate=same_event_num/
[0113]
(same_event_num+good_event_num),若same_event_rate大于confidence_threold,继续,否则进行下一批次的计算跳转到“选取反应事件”步骤;
[0114]
(5)发送终止信号到其他进程,使工作进程停止搜索反应事件并同步接收所有剩余事件;
[0115]
(6)随机选取反应事件,设被选取的反应事件为select_event,构建通信数据结构commselect,广播被选中的反应事件。
[0116]
更新模拟体系:
[0117]
(1)接收主进程发送的commselect,获取该事件的rank_id以及seq_id,若rank_id为当前进程,并构建通信数据结构commatoms,同步发送end_state_vector[seq_id]到主进
程以外的其他进程,跳转至“搜索反应事件”步骤;
[0118]
(2)同步接收编号为rank_id的进程发送的commatoms数据结构,提取原子信息到atoms_array,作为下一轮初始状态;
[0119]
(3)清空request_handle_vector,end_state_vector数组,重置cur_seq_id为0,跳转至“搜索反应事件”步骤。
[0120]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

技术特征:
1.一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,其特征在于,包括以下具体步骤:s1:划分计算任务:将所有进程划分为一个负责选取反应事件的主进程以及若干个负责搜索反应事件的工作进程;s2:初始化主进程:主进程初始化体系原子信息,并将原子信息发送给各个工作进程;s3:初始化工作进程:工作进程从主进程同步体系原子信息,并初始化反应事件初始状态;s4:搜索反应事件:工作进程从初始状态执行事件搜索算法,搜寻反应事件,并将搜索的反应事件发送给主进程;s5:接收反应事件:接收工作进程发送的反应事件,并将其存储在反应事件表中,重复上述过程直至达到单个批次需要接受的事件数,并发送本批次计算结束信号;s6:选取反应事件:随机选取反应事件,并广播发送被选中事件工作进程的编号,并由该工作进程负责下一个时间步模拟数据的同步,从而完成一个时间步的模拟,重复上述过程,直至达到预定的时间步,并发送模拟结束信号;s7:更新模拟体系:当接收到本批次计算结束信号时,被选中事件对应的工作进程向其他工作进程同步事件执行后的体系原子信息,直至接收到模拟结束信号,则结束进程。2.根据权利要求1所述的一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,其特征在于,所述s1中,为每个mpi进程确定一个唯一的mpi进程编号pid,pid为整数,其中pid编号范围为0到n-1。3.根据权利要求2所述的一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,其特征在于,所述s1中,将通信域内进程划分为一个主进程和若干个工作进程,若当前进程pid为0,该进程被标记为主进程并跳转至s2步骤,否则该进程被标记为工作进程并跳转至s3步骤。4.根据权利要求1所述的一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,其特征在于,所述s2中,具体包括以下步骤:(1)创建模拟体系,创建数组存储模拟体系原子信息,数组每一位存储一个原子信息;(2)创建动态数组,数组用于存储工作进程计算的反应事件;(3)发送体系原子信息到其他工作进程。5.根据权利要求1所述的一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,其特征在于,所述s3中,具体包括以下步骤:(1)创建通信数据结构;(2)与主进程同步原子坐标信息,创建数组存储信息;(3)初始化末态数组保存末态状态,初始化为0;(4)构建存储异步请求发送句柄数组以保存异步请求句柄。6.根据权利要求1所述的一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,其特征在于,所述s4中,具体包括以下步骤:(1)复制数组,作为本次反应事件搜索的初始值;(2)计算鞍点状态以及末态,该过程需要频繁全局计算体系力,是整个事件搜索过程的热点,然而对于混合架构可将力的计算交由运算能力强的加速设备计算,从而极大缩短计
算时间;(3)计算初始状态体系能量以及鞍点能量;(4)构建跃迁事件;(5)构建通信数据结构,与pid为0的主进程通信,发送给主进程,将请求句柄存入动态数组;(6)将末态存入动态数组;(7)查看数据接收队列,若未接收到主进程发送的停止信号,继续上述操作,否则阻塞等待所有请求发送完毕,跳转至s7步骤。7.根据权利要求1所述的一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,其特征在于,所述s6中,具体包括以下步骤:(1)设定当前批次接收事件数目为0;(2)接受工作进程发送的反应事件,更新当前批次接收事件数目;(3)统计本轮接收的所有反应事件中可行的事件数目、错误的事件数目、重复的事件数目;(4)计算置信度;(5)发送终止信号到其他进程,使工作进程停止搜索反应事件并同步接收所有剩余事件;(6)随机选取反应事件,构建通信数据结构,广播被选中的反应事件。

技术总结
本发明公开了一种基于混合架构的非格点动力学蒙特卡洛并行模拟方法,包括以下步骤:S1:划分计算任务;S2:初始化主进程;S3:初始化工作进程;S4:搜索反应事件:工作进程从初始状态执行事件搜索算法,搜寻反应事件,并将搜索的反应事件发送给主进程;S5:接收反应事件;S6:选取反应事件:随机选取反应事件,并广播发送被选中事件工作进程的编号,并由该工作进程负责下一个时间步模拟数据的同步,从而完成一个时间步的模拟,重复上述过程,直至达到预定的时间步,并发送模拟结束信号;S7:更新模拟体系。本发明占用内存少,主进程不保存原子信息,只维护事件表;通信效率高,反应事件采用异步通信,反应通信与事件搜索重叠。反应通信与事件搜索重叠。反应通信与事件搜索重叠。


技术研发人员:胡长军 何远杰 储根深 陈丹丹 白鹤
受保护的技术使用者:北京科技大学
技术研发日:2022.07.13
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-4254.html

最新回复(0)