一种基于动态负载迁移及时间同步的仿真执行方法及系统与流程

文档序号:22181246发布日期:2020-09-11 21:41阅读:95来源:国知局
一种基于动态负载迁移及时间同步的仿真执行方法及系统与流程

本发明涉及模拟仿真领域,具体的,涉及一种动态负载迁移及时间同步的仿真执行方法、系统及存储介质。



背景技术:

在仿真领域中,一个重要的工作就是对事件进行处理。传统的基于多任务的离散事件并行仿真及时间同步方法,如图1所示,其特征在于:包括一个时间管理器和多个事件管理器,参与仿真的实体被划分为多个组,每个组对应着一个事件管理器,一个事件管理器对应一个事件队列,即一个事件管理器负责管理多个实体递交的所有事件。仿真开始后,每个事件管理器都向时间管理器发出时间同步的请求,当所有的事件管理器都处于时间同步请求状态时,所有事件管理器都没有事件正在执行,随后时间管理器遍历所有的事件管理器的当前推进时间和优先级,综合考虑所有事件管理器提交的事件的执行时刻和优先级进行裁决,找出执行时刻最小,优先级最高的作为全局推进标准,并主动将当前仿真时间推进至该时刻,同时通知所有满足执行条件的事件管理器准备执行事件,符合条件的事件管理器接收到时间管理器的通知信号后,开始执行当前事件,执行完毕后,该事件管理器再次向时间管理器发出事件同步的请求。

应用于分析论证的仿真系统多采用集中式离散事件仿真,且往往采用多样本蒙特卡洛仿真方法,要求尽可能快地运行仿真、产生数据,以便在尽可能短的时间内完成大样本量的仿真计算,因此必须尽可能提高仿真系统的运行效率。现有技术的基于多任务的离散事件并行仿真及时间同步方法,通过事件队列的线程化管理,使能够将仿真计算分解为多个并行线程运行,提高了仿真事件执行效率。但多个线程并行运行时,由于各线程中的实体事件耗时不一,而全局时间需要同步,这就意味着所有线程中同一时刻的事件必须都执行完毕了时间才能往前推进,也就意味着时间推进的速度直接受制于多个线程中执行速度最慢的那个线程。如何保证各个线程的事件执行耗时处于旗鼓相当的水平,成为现有技术亟需解决的技术问题,以进一步优化并行执行效率。



技术实现要素:

本发明的目的在于提出一种基于动态负载迁移及时间同步的仿真执行方法及系统。

为达此目的,本发明采用以下技术方案:

一种基于动态负载迁移及时间同步的仿真执行方法,其特征在于:

时间管理器和事件队列建立步骤s110:设置时间管理器和多个事件管理器,每个事件管理器管理一个事件队列,其中时间管理器协调多个事件管理器,即事件队列的时间,多个事件管理器包括参与仿真的多个实体,各事件管理器按照时间顺序处理事件并向时间管理器请求推进时间并进行仿真处理;

事件处理耗时计算步骤s120:在仿真周期内的每个仿真步长内计算各个事件队列中每个事件的实际的处理耗时δti;

事件处理耗时方差计算步骤s130:一个仿真步长的多个并发线程执行结束后,即多个事件管理器的事件队列执行结束后,计算多个事件队列该仿真步长中的事件处理耗时的算数平均值,进一步求得该仿真步长内该仿真步长的事件处理耗时方差σ2

负载平衡判断步骤s140:将事件处理耗时方差σ2与阈值σ0比较,若方差σ2小于或等于某一特定阈值σ0,则各事件管理器的各事件队列在并发时执行事件的负载处于相对平衡的状态,可保持原状态继续执行仿真步骤;如方差σ2大于σ0,可认为各事件队列在并发时执行事件的负载处于非平衡的状态,则可进行负载均衡步骤s150;

负载均衡步骤s150,根据(δt-m)i的数值,调整各事件队列中的实体,从而均衡各事件队列的负载,然后继续执行仿真步骤。

优选的,将执行事件耗时最长的队列中的实体均衡到执行事件耗时最短的队列中,执行事件耗时次长的实体均衡到执行事件耗时次短的队列中,如此递推,从而均衡各事件队列的负载,然后继续执行仿真步骤。

可选的,在继续执行仿真步骤中,重复进行步骤s120至s150,直到至预设的结束时间或结束事件时整个仿真停止运行。

可选的,所述时间管理器和事件队列建立步骤s110具体为:将参与仿真的大量实体组成一个连续单一的内存映像并划分为多个组;为每个分组建立一个事件队列,并按照时间戳、优先级顺序排列,每个事件管理器管理一个事件队列;设置一个全局唯一的时间管理器,用于协调各事件队列的时间;各事件队列按照时间顺序处理事件并推进时间;当事件队列中下一事件的时间戳大于当前时间或优先级时,向时间管理器请求推进时间;当事件队列处于同步状态时,时间管理器扫描各个事件队列当前要求推进的最小时间和最高优先级,满足时间和优先级条件的所有事件管理器同时获得批准,并将当前的仿真时间和优先级推进到批准的时间和优先级。

可选的,所述事件处理耗时计算步骤s120具体为:获得批准的事件队列并发进行事件处理,在每个事件队列中处理事件之前记录当前天文时间,在事件处理的过程中需要访问实体数据时直接访问内存,事件处理结束后再记录当前天文时间,根据两个天文时间从而相减得到每个事件队列在当前仿真步长内事件处理的实际耗时δti。

可选的,所述事件处理耗时方差计算步骤s130具体为:一个仿真步长的多个并发线程,即多个事件管理器的事件队列执行结束后,可获得各并发线程在该仿真步长中的事件处理的实际耗时δti,将所有的δti进行求和运算,再除以并发的线程数n,得到每个线程,即每个事件管理器的事件处理耗时的算术平均值m,再依次计算δti与m的差值(δt-m)i,从而进一步求得该仿真步长内事件处理耗时方差σ2

可选的,负载均衡步骤s150具体为:找出(δt-m)i数值分别为正、负,且绝对值最接近的一组,将(δt-m)i值为正的队列中的部分实体动态划分到(δt-m)i值为负的队列中。

本发明进一步公开了一种基于动态负载迁移及时间同步的仿真执行系统,其特征在于,通过上述的基于动态负载迁移及时间同步的仿真执行方法建立并运行该仿真执行系统。

本发明进一步公开了一种存储介质,用于存储计算机可执行指令,其特征在于:所述计算机可执行指令在被处理器执行时上述的基于动态负载迁移及时间同步的仿真执行方法。

本发明提供了一种基于动态负载迁移的离散事件并行仿真及时间同步的仿真执行优化方法,通过对并发线程在每个仿真间隔实际耗时的采样,并进行算术平均值和方差的计算来判断采样值的离散程度,得出是否要对各线程的负载进行动态的再次分配以实现负载的相对平衡,从而实现并行仿真时实际耗时的进一步缩减,从而达到提高仿真效率的目的。

附图说明

图1是现有技术中的基于多任务的离散事件并行仿真及时间同步方法原理图;

图2是根据本发明的基于动态负载迁移及时间同步的仿真执行方法的流程图;

图3是根据本发明具体实施例的基于动态负载迁移及时间同步的仿真执行方法的示例。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

本发明在于通过深度分析传统的基于多任务的离散事件并行仿真及时间同步方法,找到一种进一步优化事件执行效率的方法。通过对每个仿真时间间隔里各事件队列执行实际耗时的分析,找出实际耗时较长的事件队列和实际耗时较短的事件队列,将实际耗时长的队列中的实体移到实际耗时短的队列中,通过这种对事件动态地进行再分配的方式,进一步减少并行运行的时间,从而达到进一步优化事件执行效率的目的。

具体的,参见图2,示出了基于动态负载迁移及时间同步的仿真执行方法的流程图,包括:

时间管理器和事件队列建立步骤s110:设置时间管理器和多个事件管理器,每个事件管理器管理一个事件队列,其中时间管理器协调多个事件管理器,即事件队列的时间,多个事件管理器包括参与仿真的多个实体,各事件管理器按照时间顺序处理事件并向时间管理器请求推进时间并进行仿真处理;

具体的,将参与仿真的大量实体组成一个连续单一的内存映像并划分为多个组;为每个分组建立一个事件队列,并按照时间戳、优先级顺序排列,每个事件管理器管理一个事件队列;设置一个全局唯一的时间管理器,用于协调各事件队列的时间;各事件队列按照时间顺序处理事件并推进时间;当事件队列中下一事件的时间戳大于当前时间或优先级时,向时间管理器请求推进时间;当事件队列处于同步状态(全部处于请求推进状态)时,时间管理器扫描各个事件队列当前要求推进的最小时间和最高优先级,满足时间和优先级条件的所有事件管理器同时获得批准,并将当前的仿真时间和优先级推进到批准的时间和优先级。

事件处理耗时计算步骤s120:在仿真周期内的每个仿真步长内计算各个事件队列中每个事件的实际的处理耗时δti;

具体的,获得批准的事件队列并发进行事件处理,在每个事件队列中处理事件之前记录当前天文时间(即现实世界中的时间),在事件处理的过程中需要访问实体数据时直接访问内存,事件处理结束后再记录当前天文时间,根据两个天文时间从而相减得到每个事件队列(线程)在当前仿真步长内事件处理的实际耗时δti。

事件处理耗时方差计算步骤s130:一个仿真步长的多个并发线程执行结束后,即多个事件管理器的事件队列执行结束后,计算多个事件队列该仿真步长中的事件处理耗时的算数平均值,进一步求得该仿真步长内该次事件处理的耗时方差σ2

具体的,一个仿真步长的多个并发线程,即多个事件管理器的事件队列执行结束后,可获得各并发线程在该仿真步长中的事件处理的实际耗时δti,将所有的δti进行求和运算,再除以并发的线程数n,得到每个线程,即每个事件管理器的事件处理耗时的算术平均值m,再依次计算δti与m的差值(δt-m)i,从而进一步求得该次仿真步长内事件处理耗时方差σ2

负载平衡判断步骤s140:将事件处理耗时方差σ2与阈值σ0比较,若方差σ2小于或等于某一特定阈值σ0,甚至为0(实际不太可能,只可能很小很小),则各事件管理器的各事件队列在并发时执行事件的负载处于相对平衡的状态,可保持原状态继续执行仿真步骤;如方差σ2大于σ0,可认为各事件队列在并发时执行事件的负载处于非平衡的状态,则可进行负载均衡步骤s150。

负载均衡步骤s150,根据(δt-m)i的数值,调整各事件队列中的实体,从而均衡各事件队列的负载,然后继续执行仿真步骤。

具体的,将执行事件耗时最长的队列中的实体均衡到执行事件耗时最短的队列中,执行事件耗时次长的实体均衡到执行事件耗时次短的队列中,如此递推,从而均衡各事件队列的负载,然后继续执行仿真步骤。

在一个可选的实施例中,负载均衡步骤s150具体为找出(δt-m)i数值分别为正、负,且绝对值最接近的一组,将(δt-m)i值为正的队列中的部分实体动态划分到(δt-m)i值为负的队列中。

更进一步的,在继续执行仿真步骤中,重复进行步骤s120至s150,直到至预设的结束时间或结束事件时整个仿真停止运行,即在仿真中持续进行仿真负载的动态监控以及迁移,从而动态的调整各仿真队列的负载,以提高仿真效率。

进一步的,参见图3,示出了根据本发明具体实施例的基于动态负载迁移及时间同步的仿真执行方法的示例。示出了每个事件管理器以及时间管理器的相应执行步骤及顺序。

本发明进一步公开了一种基于动态负载迁移及时间同步的仿真执行系统,其特征在于,通过上述的基于动态负载迁移及时间同步的仿真执行方法建立并运行该仿真执行系统。

本发明进一步公开了一种存储介质,用于存储计算机可执行指令,其特征在于:所述计算机可执行指令在被处理器执行时上述的基于动态负载迁移及时间同步的仿真执行方法。

综上,本发明提供了一种基于动态负载迁移的离散事件并行仿真及时间同步的仿真执行优化方法,通过对并发线程在每个仿真间隔实际耗时的采样,并进行算术平均值和方差的计算来判断采样值的离散程度,得出是否要对各线程的负载进行动态的再次分配以实现负载的相对平衡,从而实现并行仿真时实际耗时的进一步缩减,从而达到提高仿真效率的目的。

该方法是基于过去的仿真间隔里各事件队列的行为作出的对未来仿真间隔中事件调度优化的规划。由于在仿真系统运行过程中,仿真事件队列中实体事件的复杂度变化会呈现出一定的规律,即执行事件多、执行事件复杂的实体所在事件队列在下一个仿真时间间隔内产生的事件往往也呈多、复杂的趋势,因而这种基于既有状态下做出的下一步优化的措施往往是有效的,能够进一步发挥并行优化的优势,从而达到进一步优化仿真事件并行执行效率的目的。

显然,本领域技术人员应该明白,上述的本发明的各单元或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1