CN108363865A - 粒子输运区域分解并行计算的异步输运模拟方法和*** - Google Patents
粒子输运区域分解并行计算的异步输运模拟方法和*** Download PDFInfo
- Publication number
- CN108363865A CN108363865A CN201810135323.XA CN201810135323A CN108363865A CN 108363865 A CN108363865 A CN 108363865A CN 201810135323 A CN201810135323 A CN 201810135323A CN 108363865 A CN108363865 A CN 108363865A
- Authority
- CN
- China
- Prior art keywords
- particle
- subdivision
- node
- regional
- simulation
- 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.)
- Pending
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种粒子输运区域分解并行计算的异步输运模拟方法和***,该方法包括:主进程采用多剖分结点的剖分算法将组合几何的区域剖分得到多个子区域;主进程为各区域进程分配模拟的子区域和粒子源;区域进程从所述粒子源中获取粒子,模拟粒子输运;区域进程将运动到子区域边界的粒子发送给对应的另一区域进程,或者,接收其他区域进程发送来的粒子,并根据与其他区域进程之间发送或接收的粒子数量更新所述子区域的粒子迁移记录;当子区域中没有待模拟的粒子时,区域进程将所述子区域的粒子迁移记录发送至主进程;主进程接收各区域进程的粒子迁移记录并核对,判断是否结束模拟。该方法能够避免全局通信,减少整个算法的进程等待时间,保证较高的并行效率。
Description
技术领域
本申请涉及蒙特卡罗粒子输运模拟技术领域,尤其涉及一种用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟方法和***。
背景技术
在核反应堆设计、临界安全分析及屏蔽计算中,粒子(中子及光子)输运求解是数值模拟计算的核心。粒子输运理论是研究微观粒子(中子、光子等)在介质内运动(包括产生、迁移、发生核反应等)的过程和规律的理论。蒙特卡罗(Monte Carlo,简称MC)粒子输运方法也称随机模拟法或统计实验法,是在计算机上对粒子行为进行随机模拟的一种计算方法。蒙特卡罗方法是粒子输运理论中一种常用的数值模拟方法,首先,它建立真实介质(包括几何形状和介质核素组成)的仿真模型,然后模拟大量粒子在介质中的运动(包括粒子产生、迁移、与介质的原子核发生碰撞等物理过程)并进行适当的记录,最后对所有粒子产生的记录进行统计分析,获取数值结果。
由于蒙特卡罗方法采用解析的组合几何描述方式建立介质的几何形状而不进行离散,因此几何形状近似很小;采用连续能量点截面的能量处理方式,采用随机数确定粒子与介质核素反应类型等,物理模型机制完善,因此在核反应堆物理分析领域的应用越来越受到科研工作者的重视,被誉为反应堆数值模拟的终极方法。
蒙特卡罗方法需要模拟大量粒子(千万乃至亿量级),串行程序都是逐个模拟,粒子模拟过程占据的模拟时间很长。但实际上粒子彼此之间是相互独立的,具有天然的并行性,可通过并行计算来解决:设有N个进程,每个进程都复制整个介质模型,然后每个进程分配1/N个粒子进行模拟,最后把记录结果整合到一起进行统计分析获得结果,如此可节省大量的模拟时间。基于粒子并行的蒙特卡罗方法通常会获得很好的并行效率,是蒙特卡罗粒子输运模拟最传统的并行方法。
然而,随着数值模拟在不断深入和物理建模精细化的要求,核反应堆领域提出了全堆芯精细数值模拟,介质模型含有上千万个几何体,每个几何体内包含数百种核素,整个介质模型内存需求达到了数十G以上,远超过目前计算机的CPU核所配比的内存容量,一个进程分配的内存容量无法复制整个介质模型,导致无法采用粒子并行的蒙特卡罗方法实现计算。
因此需要发展蒙特卡罗粒子输运的区域分解并行计算方法,将整个介质模型进行区域剖分,分成多个子区域,分布存储在多个进程配比的内存空间上,多个进程实现并行计算。如此某个进程在模拟粒子在介质中的运动时就会出现粒子离开本地的子区域而进入其他子区域的情况,这就需要该进程把粒子发送给其他进程。蒙特卡罗粒子输运的区域分解并行计算必然引入模拟粒子过程中的传递粒子的通信,若是处理不好会大大降低并行效率。
目前,在热辐射输运的隐式蒙特卡罗(Implicit Monte Carlo,简称IMC)方法中,已经有针对区域分解并行计算的输运算法及成熟程序,如美国的KULL程序和Milagro程序。
KULL程序是美国LLNL实验室开发的辐射输运模拟程序,其IMC软件包可实现区域分解并行计算,粒子输运算法是在所有进程完成本地子区域的粒子模拟后,进行进程之间的传递粒子通信,是同步通信算法。
Milagro程序是美国LANL实验室开发的采用了异步通信算法的辐射输运模拟程序,其异步通信算法的结束条件是判断完成模拟的粒子个数是否等于模拟开始时指定的源粒子个数。这是因为在辐射输运模拟过程中,粒子不会产生次级粒子,所以粒子个数不会发生变化;而在粒子输运模拟中,无论是中子还是光子都会发生核反应而产生次级中子或次级光子,因此模拟的粒子个数要多于开始时指定的源粒子个数。因此该异步通信算法的结束条件不能用于粒子输运模拟。
发明内容
为解决现有技术中的上述问题,本申请的一个目的在于提出一种粒子输运区域分解并行计算的异步输运模拟方法和***,采用点对点通信实现多个进程之间的传递粒子的通信,重叠了模拟和通信时间,特别提出异步输运结束条件,避免了全局通信,减少了整个算法的进程等待时间,从而提高了并行效率。
为达到上述目的,本申请实施例提出的粒子输运区域分解并行计算的异步输运模拟方法,包括:主进程采用多剖分结点的剖分算法对组合几何的区域进行剖分,得到多个子区域;主进程为各区域进程分配模拟的子区域和粒子源;区域进程从所述粒子源中获取粒子,模拟粒子输运;区域进程将运动到子区域边界的粒子发送给对应的另一区域进程,或者,接收其他区域进程发送来的粒子,并根据与其他区域进程之间发送或接收的粒子数量更新所述子区域的粒子迁移记录;当子区域中没有待模拟的粒子时,区域进程将所述子区域的粒子迁移记录发送至主进程;主进程接收各区域进程的粒子迁移记录并核对,判断是否结束模拟。
为达到上述目的,本申请实施例提出的用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟***,包括:主进程,用于采用多剖分结点的剖分算法将组合几何的区域剖分得到多个子区域,为各区域进程分配模拟的子区域和粒子源,接收各区域进程的粒子迁移记录并核对,判断是否结束模拟;区域进程,用于从所述粒子源中获取粒子,模拟粒子输运,将运动到子区域边界的粒子发送给对应的另一区域进程,或者,接收其他区域进程发送来的粒子,并根据与其他区域进程之间发送或接收的粒子数量更新所述子区域的粒子迁移记录,以及,当子区域中没有待模拟的粒子时,区域进程将所述子区域的粒子迁移记录发送至主进程。
由以上本申请实施例提供的技术方案可见,通过点对点通信处理多个进程之间的粒子传递,两区域进程之间的通信不影响其他区域进程的模拟任务,重叠了模拟和通信时间,通过粒子迁移记录来限定异步输运模拟的结束条件,避免了全局通信,减少了整个算法的进程等待时间,保证了较高的并行效率。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提出的用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟方法的流程示意图;
图2是本申请一实施例几何树上剖分根结点及剖分结点示意图;
图3是本申请一实施例剖分结点剖分为两个区域示意图;
图4是本申请一实施例提出的异步输运模拟结束条件判断示意图;
图5是本申请一实施例的用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟***的结构示意图;
图6是本申请另一实施例的用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟方法的流程示意图。
具体实施方式
本申请实施例提供一种用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟方法和***。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1是本申请一实施例提出的用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟方法的流程示意图,如图1所示,该方法包括:
步骤101,主进程采用多剖分结点的剖分算法对组合几何的区域进行剖分,得到多个子区域;
步骤102,主进程为各区域进程分配模拟的子区域和粒子源;
步骤103,区域进程从所述粒子源中获取粒子,模拟粒子输运;
步骤104,区域进程将运动到子区域边界的粒子发送给对应的另一区域进程,或者,接收其他区域进程发送来的粒子,并根据与其他区域进程之间发送或接收的粒子数量更新所述子区域的粒子迁移记录;
步骤105,当子区域中没有待模拟的粒子时,区域进程将所述子区域的粒子迁移记录发送至主进程;
步骤106,主进程接收各区域进程的粒子迁移记录并核对,判断是否结束模拟。
所述的多剖分结点指的是在剖分根结点下,将子结点设置为剖分结点,在剖分结点中进行剖分。
其中,本地进程所记录的发送给其他进程的粒子总数和接收自其他进程的粒子总数,称为“粒子迁移记录”。不失一般性,假设任意两个进程之间都存在粒子通信,则“粒子迁移记录”的长度(指数组长度)就是2(P-1),其中P是执行区域分解并行模拟的区域进程个数。粒子迁移记录是异步输运算法结束判断的重要依据。
接收粒子库用于存储本地进程接收自其他进程发送来的粒子的粒子库。
为了避免接收粒子库的粒子累积过多,优选设置为接收粒子库的模拟优先级高于粒子源,即本地进程首先从接收粒子库中提取粒子跟踪模拟,当接收粒子库中没有粒子时,才从粒子源(即原始划分子区域中的粒子的集合)中提取粒子。在模拟过程中,区域进程记录粒子的飞行方向,行动轨迹以及各种变化,例如粒子被吸收,飞出子区域,根据一定条件舍弃粒子(粒子死亡)等。粒子源是模拟时设置的抽取粒子的初始分布,产生模拟粒子的源头。
为满足粒子输运计算的内存需求,在进行高分辨率模拟计算时,采用区域分解算法(多剖分结点的算法)。为实现区域分解,需要对组合几何的区域进行剖分,在剖分之前,首先需要选择一个剖分根结点。剖分根结点是指进行剖分的几何体对应组合几何树上的结点,剖分结点在剖分根结点的子结点中确定,对组合几何的区域进行剖分是在剖分结点的子结点中进行。剖分根结点和剖分结点一般都是由具有很多子结点及后代的结点担任,如图2所示。
利用多剖分结点的算法,通过将整个介质模型对组合几何的区域进行区域剖分,分成多个子区域。剖分根结点和剖分结点可以通过多剖分结点算法自动搜索或由用户指定。
具体地,主进程具体进行剖分时,首先选择剖分根结点,从选择的剖分根结点下的多个子结点中确定多个剖分结点,从确定的多个剖分结点的子结点中剖分出多个子区域,如图3所示。
作为本发明的一实施例,剖分根结点的选择依据是:以剖分根结点为根结点的子树的结点总数高于整颗树结点总数第一设定比例;且以剖分根结点的子结点为根结点的子树的结点总数低于整棵树结点总数第二定比例。第一设定比例可以为70%,第二定比例可以为20%,本发明不以此为限。
作为本发明的一实施例,从选择的剖分根结点下的多个子结点中确定多个剖分结点的依据是:以剖分结点为根结点的子树的结点总数高于以剖分根结点为根结点的子树的结点总数第三设定比例;且以剖分结点的子结点为根结点的子树的结点总数低于以剖分根结点为根结点的子树的结点总数第四定比例。第二设定比例可以为80%,第二定比例可以为30%,本发明不以此为限。
在搜索到合适的剖分结点后,可以通过包围盒方法对剖分结点的子结点进行均匀剖分,而剖分结点及其兄弟结点、父结点和祖先结点则每个进程都要复制一份。通过以上方法,对组合几何区域分解能够达到较好的负载平衡效果。
多个子区域分布存储在多个进程配比的内存空间上,即为多个区域进程分配要模拟的子区域,通过多个区域进程分别从对应子区域的粒子源中获取粒子进行模拟,实现并行计算。在各个区域进程进行粒子模拟的过程中,模拟粒子在介质中运动的情况,而粒子在各个较小的子区域所模拟的介质中运动,很可能会运动到子区域的边界,并产生运动到相邻的其他子区域的趋势。此时,区域进程将运动到自己所管控的子区域边界的粒子,根据粒子的位置和运动方向等因素判断该粒子将会运动到相邻的哪个子区域,也就确定了将这个粒子发送到哪个区域进程进行后续的模拟。同样,其他区域进程模拟的粒子也会产生这样的跨区域运动,于是本地进程也有可能接收到自其他进程发送来的粒子。当本地的粒子源与接收到的粒子全都被模拟结束,区域进程所分管的子区域中已经没有可以继续模拟的粒子了,此时,区域进程可以将粒子往来接收与发送的记录即粒子迁移记录发送给主进程,等待接收新的粒子进行模拟,或者等到主进程的结束指令即可正式结束模拟。主进程接收各区域进程的粒子迁移记录并核对,根据粒子迁移记录中记录的粒子的走向和数量,判断是否粒子的发送数量与接收数量是对应的,即验证是否所有粒子都“有始有终”,从而判断是否结束模拟。
在本申请中,区域进程是相对主进程而言,相对于一个子区域而言,与这个子区域对应的区域进程也可称为本地进程,在下文中不再对此进行解释。
本申请的实施例通过点对点通信处理多个进程之间的粒子传递,两区域进程之间的通信不影响其他区域进程的模拟任务,避免了全局通信,重叠了模拟和通信时间,保证了较高的并行效率。
根据本申请的一个实施例,所述主进程是指定的一个区域进程,所述粒子迁移记录中包括所述区域进程发送给其他区域进程的粒子数和所述区域进程接收自其它区域进程的粒子数,其中,所述主进程接收各区域进程的粒子迁移记录并核对,判断是否结束模拟,具体包括:主进程汇总各区域进程的粒子迁移记录,统计发送和接收的粒子总数;当发送的粒子总数与接收的粒子总数相等时,发送结束标识至各区域进程。
根据本申请的一个实施例,所述主进程根据各区域进程的粒子迁移记录,判断是否结束模拟,进一步包括:主进程将接收到的粒子迁移记录合并,生成发送矩阵和接收矩阵,其中,所述发送矩阵和接收矩阵中的矩阵元是两个区域进程之间的粒子发送数量或粒子接收数量;判断所述发送矩阵是否等于接收矩阵;若是,则结束模拟,否则继续模拟,并等待接收新的粒子迁移记录。
根据本申请的一个实施例,当区域进程向另一区域进程发送粒子时,所述方法还包括:将运动到对应的子区域边界的粒子存储至发送缓存区;当所述发送缓存区中待发送给另一区域进程的粒子达到预设数量时,将所述发送缓存区中的粒子发送给对应的另一区域进程。
根据本申请的一个实施例,所述将所述发送缓存区中的粒子发送给对应的另一区域进程,具体包括:向对应的另一区域进程发送准备信息,其中,准备信息中包括要发送的粒子个数;接收所述对应的另一区域进程返回的确认信号,与其建立点对点通信;将待发送的粒子的模拟信息发送到所述对应的另一区域进程。
根据本申请的一个实施例,当区域进程接收其它区域进程发送来的粒子时,所述方法还包括:检测是否接收到准备信息;若接收到,则根据准备信息中的粒子个数申请接收缓存空间;回复确认信号,与所述其他区域进程建立点对点通信;接收所述其他区域发送来的粒子的模拟信息,并保存在接收粒子库中。
根据本申请的一个实施例,将接收到的粒子的模拟信息保存在接收粒子库中之后,还包括:从所述接收粒子库中获取粒子进行输运模拟,其中,所述接收粒子库的模拟优先级高于所述粒子源的模拟优先级。
根据本申请的一个实施例,所述主进程是一个被预先指定的区域进程,例如,为了方便起见可以指定在分配区域进程后其中进程编号为0的区域进程作为主进程。主进程除了实现主进程的功能外,同样对本地分配的子区域粒子库进行粒子模拟,发送和接收粒子的过程也与普通的区域进程基本相同,仅在区域进程与主进程传送粒子迁移记录并等待结束的过程有较明显的区别,因为其本身就是主进程,在自身完成模拟后便无需再发送粒子迁移记录。
下面对本申请的具体实施例进行详细说明。
本地进程在模拟粒子时,当粒子运动到子区域边界时(即介质模型被划分的子区域的边界),将其存储在发送缓存区,等到发送缓存区满了(例如N个粒子),一起发送给对应进程:本地进程首先发送粒子个数给目标区域的进程,然后一直等待对方的回复信号,直到目标进程发送了准备好接收的信号过来,才把缓存区的粒子发送过去;由于本地进程在等待目标进程的回复信号期间,可能有其他进程(包括目标进程)发送粒子过来,所以在等待的同时本地进程要检查是否有粒子发送过来,若有,则接收粒子。发送完毕后,本地进程记录向这一目标区域进程发送的粒子个数,同时清空缓存区。
本地进程可周期性地检查是否有粒子需要接收,例如在每完成对M个粒子的模拟后,检查一下是否接收到其他进程发送来的信息(例如信息编号,粒子个数,粒子数据等)。若发现接收到某个进程发送的粒子个数(例如一个整数)时,本地进程就知道了对方进程有粒子要发送过来,马上申请接收缓存区,然后回复信号过去,与对方进程建立点对点通信,接收真正的粒子信息。成功接收完毕后,把接收到的粒子存储在接收粒子库中,同时粒子迁移记录累加接收的粒子个数。当有多个进程发送粒子过来时,可以按接收粒子信息的顺序依次处理。完成接收粒子后,进程从接收粒子库中抽取粒子进行模拟。
当本地进程发现接收粒子库和粒子源的粒子都模拟完了,就把所有发送缓存区内尚有的粒子都发送出去,即使个数不足N个,使自身处于空闲状态。由于区域进程自己还可以是主进程(Master进程),所以接下来需要分成以下两种情况处理:
1、该进程不是Master进程(主进程):把粒子迁移记录发送给Master进程,然后进入等待状态,在等待期间若接收到其他进程发送的粒子则进行模拟,模拟结束后还要把更新后的粒子迁移记录重新发送给Master进程,继续等待;若接收到结束标识,则退出,结束输运模拟;
2、该进程是Master进程:接收粒子迁移记录,核对粒子迁移记录,判断是否结束。具体地,Master进程核对接收、发送粒子数,发送和接收的粒子数量相等了就代表所有的进程的粒子均模拟结束,若结束则发送结束标识给其他区域进程,若不结束,则Master进程也进入等待状态,若接收到粒子则模拟,接收到新的粒子迁移记录则重新核对,直到核对正确发出结束标识为止。
具体核对算法例如是:Master进程把接收到的各个区域进程的粒子迁移记录合并成发送和接收两个矩阵:S矩阵和R矩阵,判断这两个矩阵是否相等(如图4所示)。其中,S矩阵的矩阵元si,j表示进程i发送给进程j的粒子总数,来自进程i发送的粒子迁移记录;R矩阵的矩阵元ri,j表示进程j接收自进程i的粒子总数,来自进程j发送的粒子迁移记录,显然S矩阵和R矩阵主对角线上的元素都是0。矩阵核对过程的时间复杂度是O(P2),P是区域分解并行进程个数。
由上述内容可知,本申请的实施例通过点对点通信处理多个进程之间的粒子传递,两区域进程之间的通信不影响其他区域进程的模拟任务,重叠了模拟和通信时间,通过粒子迁移记录来限定异步输运模拟的结束条件,避免了全局通信,减少了整个算法的进程等待时间,保证了较高的并行效率。
基于同一发明构思,本申请实施例还提供了一种用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟***,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟***解决问题的原理与用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟方法相似,因此用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟***的实施可以参见用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的***较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是本申请一实施例的用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟***的结构示意图。本实施例的***可以为实现相应功能的逻辑部件构成,也可以为运行有相应功能软件的电子设备。
如图5所示,该用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟***包括:主进程10和区域进程11。
具体地,主进程10,用于为各区域进程分配模拟的子区域和粒子源,接收各区域进程的粒子迁移记录并核对,判断是否结束模拟;
区域进程11,用于从所述粒子源中获取粒子,模拟粒子输运,将运动到子区域边界的粒子发送给对应的另一区域进程,或者,接收其他区域进程发送来的粒子,并根据与其他区域进程之间发送或接收的粒子数量更新所述子区域的粒子迁移记录,以及,当子区域中没有待模拟的粒子时,区域进程将所述子区域的粒子迁移记录发送至主进程。
利用多剖分结点的算法,通过将整个介质模型对组合几何的区域进行区域剖分,分成多个子区域。剖分根结点和剖分结点可以通过多剖分结点算法自动搜索或由用户指定。
具体地,主进程具体进行剖分时,首先选择剖分根结点,从选择的剖分根结点下的多个子结点中确定多个剖分结点,从确定的多个剖分结点的子结点中剖分出多个子区域,如图3所示。
作为本发明的一实施例,剖分根结点的选择依据是:以剖分根结点为根结点的子树的结点总数高于整颗树结点总数第一设定比例;且以剖分根结点的子结点为根结点的子树的结点总数低于整棵树结点总数第二定比例。第一设定比例可以为70%,第二定比例可以为20%,本发明不以此为限。
作为本发明的一实施例,从选择的剖分根结点下的多个子结点中确定多个剖分结点的依据是:以剖分结点为根结点的子树的结点总数高于以剖分根结点为根结点的子树的结点总数第三设定比例;且以剖分结点的子结点为根结点的子树的结点总数低于以剖分根结点为根结点的子树的结点总数第四定比例。第二设定比例可以为80%,第二定比例可以为30%,本发明不以此为限。
在搜索到合适的剖分结点后,可以通过包围盒方法对剖分结点的子结点进行均匀剖分,而剖分结点及其兄弟结点、父结点和祖先结点则每个进程都要复制一份。通过以上方法,对组合几何区域分解能够达到较好的负载平衡效果。
具体地,多个子区域分布存储在多个进程配比的内存空间上,即为多个区域进程分配要模拟的子区域,通过多个区域进程分别从对应子区域的粒子源中获取粒子进行模拟,实现并行计算。在各个区域进程进行粒子模拟的过程中,模拟的粒子在介质中运动的情况,而粒子在各个较小的子区域所模拟的介质中运动,很可能会运动到子区域的边界,并产生运动到相邻的其他子区域的趋势。此时,区域进程将运动到自己所管控的子区域边界的粒子,根据粒子的位置和运动方向等因素判断该粒子将会运动到相邻的哪个子区域,也就确定了将这个粒子发送到哪个区域进程进行后续的模拟。同样,其他区域进程模拟的粒子也会产生这样的跨区域运动,于是本地进程也有可能接收到自其他进程发送来的粒子。当本地的粒子源与接收到的粒子全都被模拟结束,区域进程所分管的子区域中已经没有可以继续模拟的粒子了,此时,区域进程可以将粒子往来接收与发送的记录即粒子迁移记录发送给主进程,等待接收新的粒子进行模拟,或者等到主进程的结束指令即可正式结束模拟。主进程接收各区域进程的粒子迁移记录并核对,根据粒子迁移记录中记录的粒子的走向和数量,判断是否粒子的发送数量与接收数量是对应的,即验证是否所有粒子都“有始有终”,从而判断是否结束模拟。
其中,所述主进程是一个指定的区域进程。例如,为了方便起见可以指定在分配区域进程后其中进程编号为0的区域进程作为主进程。主进程除了实现主进程的功能外,同样对本地分配的子区域粒子库进行粒子模拟,发送和接收粒子的过程也与普通的区域进程基本相同,仅在区域进程与主进程传送粒子迁移记录并等待结束的过程有较明显的区别,因为其本身就是主进程,在自身完成模拟后便无需再发送粒子迁移记录。
本***通过点对点通信处理多个进程之间的粒子传递,两区域进程之间的通信不影响其他区域进程的模拟任务,避免了全局通信,重叠了模拟和通信时间,保证了较高的并行效率。
在一个具体实施例中,所述粒子迁移记录中包括区域进程发送给其他区域进程的粒子数和区域进程接收自其它区域进程的粒子数,所述主进程具体用于汇总各区域进程的粒子迁移记录,统计发送和接收的粒子总数,以及,当发送的粒子总数与接收的粒子总数相等时,发送结束标识至各区域进程。
在一个具体实施例中,所述***还包括每个区域进程对应的发送缓存区和接收粒子库,所述发送缓存区用于保存运动到对应的子区域边界的粒子,所述接收粒子库用于保存接收自其它区域进程的粒子。
所述区域进程还用于从所述接收粒子库中获取粒子进行输运模拟,其中,所述接收粒子库的模拟优先级高于所述粒子源的模拟优先级。
本申请的实施例通过点对点通信处理多个进程之间的粒子传递,两区域进程之间的通信不影响其他区域进程的模拟任务,重叠了模拟和通信时间,通过粒子迁移记录来限定异步输运模拟的结束条件,避免了全局通信,减少了整个算法的进程等待时间,保证了较高的并行效率。
在本申请实施例的具体实现过程中,可将异步模拟的整个算法分成3个部分,发送粒子算法、接收粒子算法和等待结束算法,封装成3个函数:发送粒子函数、接收粒子函数和等待结束函数。
具体地,其中,发送粒子函数包括:存储粒子到发送缓存区,等到发送缓存区满了(例如准备发送给相邻区域进程C的缓存区已经存有N个粒子),一起发送给对应的区域进程:本地进程首先发送粒子个数给对方,然后一直等待对方的回复信号,直到目标进程发送了准备好接收的信号过来,才把缓存区的粒子发送过去(由于是模拟过程,所以实际发送的是粒子的模拟信息);由于本地进程在等待目标进程的回复信号期间,可能有其他区域进程(包括本地进程正在发送粒子的目标区域进程)发送粒子过来,所以本地进程要检查是否有粒子发送过来,若有,则接收粒子。发送完毕后,本地进程记录发送的粒子个数,同时清空缓存区。
接收粒子函数包括:根据接收到的一个整数(粒子个数),申请接收缓存区,然后回复信号过去,与对方进程建立点对点通信,接收真正的粒子信息。成功接收完毕后,把接收到的粒子存储在接收粒子库中,同时粒子迁移记录接收的粒子个数。当有多个进程发送粒子过来时,按接收信息顺序依次处理。
在区域中所有粒子模拟完成后启动等待结束函数,等待结束函数包括:把所有发送缓存区内尚有的粒子都发送出去,即使个数不足N个。若本进程不是Master进程,则把粒子迁移记录发送给Master进程,然后进入等待状态,在等待期间若接收到其他进程发送的粒子,则调用接收粒子函数接收粒子,然后返回粒子个数,退出;若接收到结束标识,则返回-1,退出;若本进程是Master进程,则接收粒子迁移记录,合并成两个矩阵,比较两个矩阵是否相等,若两个矩阵相等,则发送结束标识给其他进程,返回-1,退出;若两个矩阵不等,则保持等待状态;在等待期间若接收到其他进程发送的粒子,则调用接收粒子函数接收粒子,接收粒子函数返回接收到的粒子个数,退出。
在常规的蒙特卡罗粒子输运算法中,增加上述三个函数的调用,就可以实现适用于蒙特卡罗粒子输运区域分解并行计算的异步输运模拟算法。如图6所示,具体实施方式如下,与前述实施例重复之处,不在赘述:
步骤1,Master进程为各区域进程分配模拟的子区域和粒子源,开始模拟粒子。
步骤2,区域进程从本地获取一个粒子。若获取成功,执行步骤3,若失败,说明已经模拟完本地粒子,执行步骤9。
步骤3,模拟粒子。
步骤4,判断粒子是否到达子区域边界。若是,则执行步骤5,若粒子没有到达子区域边界就完成模拟,则执行步骤6。
步骤5,调用发送粒子函数,把该粒子发送给其他进程。
步骤6,完成对该粒子的模拟。
步骤7,每完成M个粒子的模拟,检查是否有粒子发送过来,若有则进入步骤8;若没有,则直接进入步骤2;
步骤8,调用接收粒子函数,保存接收到的粒子。然后进入步骤2,继续模拟粒子。
步骤9,调用等待结束函数,根据返回值判断是否结束。
步骤10,返回值是否大于0。若返回值大于0,则进入步骤2;若返回值小于0,则结束模拟。
本实施例通过点对点通信处理多个进程之间的粒子传递,两区域进程之间的通信不影响其他区域进程的模拟任务,重叠了模拟和通信时间,通过粒子迁移记录来限定异步输运模拟的结束条件,避免了全局通信,减少了整个算法的进程等待时间,保证了较高的并行效率。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (19)
1.一种粒子输运区域分解并行计算的异步输运模拟方法,其特征在于,包括:
主进程采用多剖分结点的剖分算法对组合几何的区域进行剖分,得到多个子区域;
主进程为各区域进程分配模拟的子区域和粒子源;
区域进程从所述粒子源中获取粒子,模拟粒子输运;
区域进程将运动到子区域边界的粒子发送给对应的另一区域进程,或者,接收其他区域进程发送来的粒子,并根据与其他区域进程之间发送或接收的粒子数量更新所述子区域的粒子迁移记录;
当子区域中没有待模拟的粒子时,区域进程将所述子区域的粒子迁移记录发送至主进程;
主进程接收各区域进程的粒子迁移记录并核对,判断是否结束模拟。
2.根据权利要求1所述的方法,其特征在于,所述多剖分结点为从剖分根结点下的多个子结点中选择的多个剖分结点;主进程采用多剖分结点的剖分算法对组合几何的区域进行剖分,得到多个子区域,包括:
选择剖分根结点;
从选择的剖分根结点下的多个子结点中确定多个剖分结点;
通过包围盒方法从确定的多个剖分结点的子结点中进行剖分,生成多个子区域。
3.根据权利要求2所述的方法,其特征在于,剖分根结点的选择依据是:以剖分根结点为根结点的子树的结点总数高于整颗树结点总数第一设定比例;
且以剖分根结点的子结点为根结点的子树的结点总数低于整棵树结点总数第二定比例。
4.根据权利要求3所述的方法,其特征在于,从选择的剖分根结点下的多个子结点中确定多个剖分结点的依据是:以剖分结点为根结点的子树的结点总数高于以剖分根结点为根结点的子树的结点总数第三设定比例;
且以剖分结点的子结点为根结点的子树的结点总数低于以剖分根结点为根结点的子树的结点总数第四定比例。
5.根据权利要求1所述的方法,其特征在于,所述主进程是指定的一个区域进程,所述粒子迁移记录中包括所述区域进程发送给其他区域进程的粒子数和所述区域进程接收自其它区域进程的粒子数,其中,所述主进程接收各区域进程的粒子迁移记录并核对,判断是否结束模拟,具体包括:
主进程汇总各区域进程的粒子迁移记录,统计发送和接收的粒子总数;
当发送的粒子总数与接收的粒子总数相等时,发送结束标识至各区域进程。
6.根据权利要求5所述的方法,其特征在于,所述主进程根据各区域进程的粒子迁移记录,判断是否结束模拟,进一步包括:
主进程将接收到的粒子迁移记录合并,生成发送矩阵和接收矩阵,其中,所述发送矩阵和接收矩阵中的矩阵元是两个区域进程之间的粒子发送数量或粒子接收数量;
判断所述发送矩阵是否等于接收矩阵;
若是,则结束模拟,否则继续模拟,并等待接收新的粒子迁移记录。
7.根据权利要求1所述的方法,其特征在于,当区域进程向另一区域进程发送粒子时,所述方法还包括:
将运动到对应的子区域边界的粒子存储至发送缓存区;
当所述发送缓存区中待发送给另一区域进程的粒子达到预设数量时,将所述发送缓存区中的粒子发送给对应的另一区域进程。
8.根据权利要求7所述的方法,其特征在于,所述将所述发送缓存区中的粒子发送给对应的另一区域进程,具体包括:
向对应的另一区域进程发送准备信息,其中,准备信息中包括要发送的粒子个数;
接收所述对应的另一区域进程返回的确认信号,与其建立点对点通信;
将待发送的粒子的模拟信息发送到所述对应的另一区域进程。
9.根据权利要求1所述的方法,其特征在于,当区域进程接收其它区域进程发送来的粒子时,所述方法还包括:
检测是否接收到准备信息;
若接收到,则根据准备信息中的粒子个数申请接收缓存空间;
回复确认信号,与所述其他区域进程建立点对点通信;
接收所述其他区域发送来的粒子的模拟信息,并保存在接收粒子库中。
10.根据权利要求9所述的方法,其特征在于,将接收到的粒子的模拟信息保存在接收粒子库中之后,还包括:
从所述接收粒子库中获取粒子进行输运模拟,其中,所述接收粒子库的模拟优先级高于所述粒子源的模拟优先级。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述主进程是一个被预先指定的区域进程。
12.一种基于多剖分结点的粒子输运区域分解并行计算的异步输运模拟***,其特征在于,包括:
主进程,用于采用多剖分结点的剖分算法将组合几何的区域剖分得到多个子区域,为各区域进程分配模拟的子区域和粒子源,接收各区域进程的粒子迁移记录并核对,判断是否结束模拟;
区域进程,用于从所述粒子源中获取粒子,模拟粒子输运,将运动到子区域边界的粒子发送给对应的另一区域进程,或者,接收其他区域进程发送来的粒子,并根据与其他区域进程之间发送或接收的粒子数量更新所述子区域的粒子迁移记录,以及,当子区域中没有待模拟的粒子时,区域进程将所述子区域的粒子迁移记录发送至主进程。
13.根据权利要求12所述的***,其特征在于,所述多剖分结点为从剖分根结点下的多个子结点中选择的多个剖分结点;所述主进程具体用于:选择剖分根结点,从选择的剖分根结点下的多个子结点中确定多个剖分结点,通过包围盒方法从确定的多个剖分结点的子结点中剖分出多个子区域。
14.根据权利要求13所述的***,其特征在于,剖分根结点的选择依据是:以剖分根结点为根结点的子树的结点总数高于整颗树结点总数第一设定比例;
且以剖分根结点的子结点为根结点的子树的结点总数低于整棵树结点总数第二定比例。
15.根据权利要求14所述的***,其特征在于,从选择的剖分根结点下的多个子结点中确定多个剖分结点的依据是:以剖分结点为根结点的子树的结点总数高于以剖分根结点为根结点的子树的结点总数第三设定比例;
且以剖分结点的子结点为根结点的子树的结点总数低于以剖分根结点为根结点的子树的结点总数第四定比例。
16.根据权利要求12所述的***,其特征在于,剖分根结点和剖分结点通过多剖分结点算法自动搜索或由用户指定;所述粒子迁移记录中包括区域进程发送给其他区域进程的粒子数和区域进程接收自其它区域进程的粒子数,所述主进程具体用于汇总各区域进程的粒子迁移记录,统计发送和接收的粒子总数,以及,当发送的粒子总数与接收的粒子总数相等时,发送结束标识至各区域进程。
17.根据权利要求12所述的***,其特征在于,还包括每个区域进程对应的发送缓存区和接收粒子库,所述发送缓存区用于保存运动到对应的子区域边界的粒子,所述接收粒子库用于保存接收自其它区域进程的粒子。
18.根据权利要求17所述的***,其特征在于,所述区域进程还用于从所述接收粒子库中获取粒子进行输运模拟,其中,所述接收粒子库的模拟优先级高于所述粒子源的模拟优先级。
19.根据权利要求12-18中任一项所述的***,其特征在于,所述主进程是一个指定的区域进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810135323.XA CN108363865A (zh) | 2018-02-09 | 2018-02-09 | 粒子输运区域分解并行计算的异步输运模拟方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810135323.XA CN108363865A (zh) | 2018-02-09 | 2018-02-09 | 粒子输运区域分解并行计算的异步输运模拟方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108363865A true CN108363865A (zh) | 2018-08-03 |
Family
ID=63005609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810135323.XA Pending CN108363865A (zh) | 2018-02-09 | 2018-02-09 | 粒子输运区域分解并行计算的异步输运模拟方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108363865A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130998A (zh) * | 2020-09-23 | 2020-12-25 | 中国核动力研究设计院 | 适用于多环路压水堆的核反应堆***分析程序的优化方法 |
CN116049036A (zh) * | 2022-10-31 | 2023-05-02 | 中国人民解放军国防科技大学 | 一种面向蒙特卡罗粒子输运的处理器缓存配置方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103955567A (zh) * | 2014-04-10 | 2014-07-30 | 中国科学院近代物理研究所 | 基于gpu的多粒子输运仿真方法 |
CN105138778A (zh) * | 2015-08-31 | 2015-12-09 | 上海联影医疗科技有限公司 | 粒子输运的模拟方法与*** |
CN106354946A (zh) * | 2016-08-30 | 2017-01-25 | 中国科学院合肥物质科学研究院 | 一种基于过渡区域的蒙特卡罗与确定论耦合粒子输运方法 |
CN106355017A (zh) * | 2016-08-30 | 2017-01-25 | 中国科学院合肥物质科学研究院 | 一种基于多群虚截面的连续能点蒙特卡罗粒子输运方法 |
CN107239352A (zh) * | 2017-05-31 | 2017-10-10 | 北京科技大学 | 一种动力学蒙特卡洛并行模拟的通信优化方法及其*** |
-
2018
- 2018-02-09 CN CN201810135323.XA patent/CN108363865A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103955567A (zh) * | 2014-04-10 | 2014-07-30 | 中国科学院近代物理研究所 | 基于gpu的多粒子输运仿真方法 |
CN105138778A (zh) * | 2015-08-31 | 2015-12-09 | 上海联影医疗科技有限公司 | 粒子输运的模拟方法与*** |
CN106354946A (zh) * | 2016-08-30 | 2017-01-25 | 中国科学院合肥物质科学研究院 | 一种基于过渡区域的蒙特卡罗与确定论耦合粒子输运方法 |
CN106355017A (zh) * | 2016-08-30 | 2017-01-25 | 中国科学院合肥物质科学研究院 | 一种基于多群虚截面的连续能点蒙特卡罗粒子输运方法 |
CN107239352A (zh) * | 2017-05-31 | 2017-10-10 | 北京科技大学 | 一种动力学蒙特卡洛并行模拟的通信优化方法及其*** |
Non-Patent Citations (1)
Title |
---|
李刚: "蒙特卡罗粒子输运的组合几何区域分解并行算法研究与应用", 《中国博士学位论文全文数据库 工程科技II辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130998A (zh) * | 2020-09-23 | 2020-12-25 | 中国核动力研究设计院 | 适用于多环路压水堆的核反应堆***分析程序的优化方法 |
CN112130998B (zh) * | 2020-09-23 | 2022-02-01 | 中国核动力研究设计院 | 适用于多环路压水堆的核反应堆***分析程序的优化方法 |
CN116049036A (zh) * | 2022-10-31 | 2023-05-02 | 中国人民解放军国防科技大学 | 一种面向蒙特卡罗粒子输运的处理器缓存配置方法 |
CN116049036B (zh) * | 2022-10-31 | 2023-07-21 | 中国人民解放军国防科技大学 | 一种面向蒙特卡罗粒子输运的处理器缓存配置方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102611938B1 (ko) | 신경망을 사용한 통합 회로 플로어 플랜 생성 | |
Marsan | Stochastic Petri nets: an elementary introduction | |
Li et al. | An improved tabu search algorithm for the stochastic vehicle routing problem with soft time windows | |
Calvet et al. | Solving the multidepot vehicle routing problem with limited depot capacity and stochastic demands | |
CN105159610B (zh) | 大规模数据处理***及方法 | |
CN106020941A (zh) | 选择资源分配策略和解决资源冲突 | |
CN108122032A (zh) | 一种神经网络模型训练方法、装置、芯片和*** | |
Barbalho et al. | A hybrid data mining GRASP with path-relinking | |
CN109918199A (zh) | 基于gpu的分布式图处理*** | |
Latorre-Biel et al. | Combining simheuristics with Petri nets for solving the stochastic vehicle routing problem with correlated demands | |
CN111859027A (zh) | 图计算方法及装置 | |
CN108363865A (zh) | 粒子输运区域分解并行计算的异步输运模拟方法和*** | |
Sun et al. | A light-robust-optimization model and an effective memetic algorithm for an open vehicle routing problem under uncertain travel times | |
Goudarzi et al. | Design of a universal logic block for fault-tolerant realization of any logic operation in trapped-ion quantum circuits | |
Jafari et al. | Network location problem with stochastic and uniformly distributed demands | |
de Souza et al. | Distributed MPC for urban traffic networks: A simulation‐based performance analysis | |
Du et al. | Robust deadlock avoidance control for AMSs with assembly operations embedded in flexible routes using Petri nets | |
Qi et al. | Intersection traffic deadlock formation and its probability: A petri net‐based modeling approach | |
Peacock et al. | A distributed approach to queueing network simulation | |
CN111935005A (zh) | 数据传输方法、装置、处理设备及介质 | |
Mitropoulou et al. | Evolution strategies-based metaheuristics in structural design optimization | |
CN107426012A (zh) | 一种基于超融合架构的故障恢复方法及其装置 | |
Seghir et al. | A new discrete imperialist competitive algorithm for QoS-aware service composition in cloud computing | |
CN106293936A (zh) | 一种物理主机虚拟内存的局部最优解的确定方法及装置 | |
CN112988403B (zh) | 具有保密功能的集成电路仿真多线程管理并行方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180803 |