CN104866374B - 基于多任务的离散事件并行仿真及时间同步方法 - Google Patents
基于多任务的离散事件并行仿真及时间同步方法 Download PDFInfo
- Publication number
- CN104866374B CN104866374B CN201510266223.7A CN201510266223A CN104866374B CN 104866374 B CN104866374 B CN 104866374B CN 201510266223 A CN201510266223 A CN 201510266223A CN 104866374 B CN104866374 B CN 104866374B
- Authority
- CN
- China
- Prior art keywords
- time
- event
- manager
- task
- 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.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种基于多任务的离散事件并行仿真及时间同步方法,设立多个事件管理器,每个组对应着一个事件管理器,采用唯一的时间管理器对多个事件管理器中的多个实体进行同步,每个事件管理器都向时间管理器发出时间同步的请求,时间管理器遍历事件管理器找出执行时刻最小,优先级最高的作为全局推进标准,并主动将当前仿真时间推进至该时刻,并通知相应事件管理器准备执行事件,执行完毕后,该事件管理器再次向时间管理器发出事件同步的请求。本申请具有多个并行线程运行,避免了单线程仿真无法充分利用硬件资源,提高仿真运行效率,且使得时间管理与同步的开销为函数调用级开销,避免了跨进程通信的开销,提高了仿真时间管理效率。
Description
技术领域
本申请涉及计算仿真领域,具体涉及基于多任务的离散事件并行仿真及时间同步方法。
背景技术
为保证事件的因果关系,离散事件仿真中必须按照时间对事件进行排序和按顺序执行。在单线索的离散事件仿真中,只需要维护一个事件队列,并提供事件的执行时间戳,即可实现按时间排序的事件队列,仿真引擎只需要按照顺序调取并执行事件即可实现仿真推进。
分布式交互仿真是指多台计算机通过物理网络互连,协同完成一次仿真任务。本质上属于离散事件仿真通过网络互联的联合仿真,因此需要在单个离散事件仿真的时间管理的基础上,对多个离散事件仿真进行时间的管理和同步。
分布交互式仿真的典型方案包括DIS和HLA两种标准。DIS仅支持1:1的实时仿真,采用了一种基于全局时钟信息的同步方法,即构成DIS仿真的各节点均按照统一的周期同步收发信息,从而实现一种隐含的自发时间同步。HLA支持各种时间推进比例的仿真,因此采用的是逻辑时间同步的方法。首先将时间以一种可量化的数值进行表示,例如采用单精度浮点型的数据类型,并且可任意指定时间单位,例如秒、分钟等;同时定义了时间的起点和最大值,一般为0和正无穷,仿真中的任何一个时刻的时间都大于时间起点且小于时间最大值,因此还定义了时间比较的方法;其次定义了一套基于请求和批准的时间推进方法,在有中心的HLA仿真系统结构中,组成系统的各节点在需要推进时间时向中心发出请求并等待批准,中心掌握各节点的时间状态和请求,并通过批准某节点请求的方式允许其推进时间从而实现整体仿真时间的推进,由中心保证整体的事件因果关系。为加快系统整体推进的速度,HLA定义了时间前瞻量的概念,使得中心在判断和批准某节点时间推进请求时获得更大的时间裕度。
上述的两种标准是传统的分布式仿真技术,其问题有两点:
其一:DIS和HLA都属于单仿真事件队列管理,无论仿真规模多大,为了维护事件的时序只启用一个事件管理器来处理所有的仿真事件。映射到软件实现上,一个事件管理器对应一个运行线程。而目前的计算机CPU早已进入多CPU多核时代,单线程只能有效利用多CPU多核的一个内核,导致多CPU多核计算机的处理能力不能被充分挖掘利用,一方面造成了硬件资源浪费,另一方面也大大增加了仿真运行时间的开销,随着仿真规模变大,问题也愈发明显。
第二:DIS和HLA的频繁时间同步和交互占用了大量的网络带宽资源,而网络带宽资源又是分布式仿真系统的瓶颈。
现代计算机采用的SMP或NUMA体系结构、多核CPU技术的蓬勃发展、支持多线程多进程的操作系统极大提高了单机(单操作系统下)的并行处理能力。但是在原有的仿真计算模式下,仅仅只有一个事件管理器,意味着所有仿真对象提交的事件只能在一个队列中,只能串行处理。当参与仿真的对象越多、仿真持续时间越长,那么仿真对象向唯一的事件管理器提交的事件就越多,这就好比有1000位旅客排队检票,候车室有10个检票口资源,但是只开一个检票口一样,资源无法得到充分利用。
应用于分析论证的仿真系统多采用集中式离散事件仿真而不是分布式仿真,且往往采用多样本蒙特卡洛仿真方法,要求尽可能快地运行仿真、产生数据,以便在尽可能短的时间内完成大样本量的仿真计算,因此必须尽可能提高仿真系统的运行效率。
如何充分利用现代计算机的处理能力,缩短仿真运行时间,成为提高离散事件仿真运行效率的关键,如何在保证时间有序的情况下,让多个事件队列并行化运行是本发明要解决的核心技术问题。
发明内容
本发明的目的在于提出一种基于多任务的离散事件并行仿真及时间同步方法,设立多个事件管理器,并且采用唯一的时间管理器对多个事件管理器中的多个实体进行同步,通过事件队列的线程化管理,使得既能够将仿真计算分解为多个并行线程运行,避免了单线程仿真无法充分利用硬件资源的缺点,极大提高仿真运行效率,又能够使得时间管理与同步的开销为函数调用级开销,避免了跨进程通信的开销,在频繁的推进和同步处理中,极大提高了仿真时间管理效率。
为达此目的,本发明采用以下技术方案:
一种基于多任务的离散事件并行仿真及时间同步方法,其特征在于:包括一个时间管理器和多个事件管理器,参与仿真的实体被划分为多个组,每个组对应着一个事件管理器,一个事件管理器对应一个事件队列,即一个事件管理器负责管理多个实体递交的所有事件,在仿真开始时,仿真引擎为每个事件管理器创建独立的工作线程,通过多线程的并行运行来实现仿真的并行运行;
所述时间管理器在仿真引擎运行过程中是全局唯一的负责管理多个事件管理器提交的时间同步请求,所述时间来源于待执行事件的执行时刻,使多个事件管理器之间保持时间同步;
仿真开始后,每个事件管理器都向所述时间管理器发出时间同步的请求,当所有的事件管理器都处于时间同步请求状态时,所有事件管理器都没有事件正在执行,时间管理器遍历所有的事件管理器的当前推进时间和优先级,综合考虑所有事件管理器提交的事件的执行时刻和优先级进行裁决,找出执行时刻最小,优先级最高的作为全局推进标准,并主动将当前仿真时间推进至该时刻,同时通知所有满足执行条件的事件管理器准备执行事件,符合条件事件管理器接收到时间管理器的通知信号后,开始执行当前事件,执行完毕后,该事件管理器再次向时间管理器发出事件同步的请求。
优选地,符合时间约束规则的事件管理器提交的事件允许被执行,多个符合条件的事件同时执行就达到了并行运行的目的;事件管理器请求执行的事件为全局仿真时间的推进提供参考值,伴随着事件的执行,仿真时间不断的推进,直到仿真结束;时间管理器全局唯一,事件管理器存在多个;通过多个事件管理器的并发事件执行,达到提高仿真运行的目的。
优选地,事件管理器向时间管理器发送时间同步请求时,已将自己当前的时间和优先级设为事件队列中第一个事件的时间和优先级;时间管理器批准其请求,表示事件队列中的第一个事件将被弹出并执行;当事件执行完毕后,事件管理器再次向时间管理器发送时间同步请求,直到事件管理器的事件队列中没有事件或当前时间已到达仿真时间。
优选地,在仿真运行过程中,仿真对象调用事件管理器提供的事件提交接口,向其对应的事件管理器提交事件,事件管理器将该事件加入事件队列中,并根据事件的执行时刻和优先级进行排序。
优选地,时间管理器还提供下列接口供事件管理器和其他模块调用:请求时间同步;请求异步执行;状态控制:开始、暂停、继续、终止;仿真时间因子调整、仿真时间获取。
优选地,在仿真过程中,实体不断的向事件管理器提交带有时戳的事件,事件管理器验证事件的有效性,即执行时刻不能大于仿真结束时间,不能小于当前仿真时间,无效的事件将会被抛弃,不入事件队列。
优选地,所述时间管理器综合考虑所有事件管理器提交的事件的执行时刻和优先级进行裁决为:1、时间与时间管理器的当前仿真时间相等且优先级相等的,立刻执行;2、时间与时间管理器的当前仿真时间相等,优先级低的,等待;3、时间大于时间管理器的当前仿真时间的,等待。
优选地,实体的分组可由系统根据当前计算机的CPU个数和每个CPU的核心数自动完成,或手动调整;
自动分组时采用的方法为:为了减少线程上下文切换带来的系统开销,以CPU个数和CPU的核心数为根据,线程数量n=CPU数*核心数,如果n=1,将自动调整为2,确定分组数量m=n-1,将所有实体均匀分配到m个分组中。
优选地,实体模型在运行过程中根据自身的需要,确定在未来某个时候应执行模型的某个函数以及执行时所需的参数,将这些信息作为事件,调用事件队列的相应添加事件的函数将事件加入队列,并按照时间、优先级及事件的提交顺序进行排序。
附图说明
图1 是根据本发明的时间管理器与事件管理器的逻辑结构图;
图2是根据本发明的具体实施例的时间管理器与事件管理器之间的交互关系;
图3是根据本发明的具体实施例的事件管理器与实体及时间管理器之间的交互关系;
图4是根据本发明的又一个具体实施例的时间推进过程时序图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
首先介绍与本发明有关的术语:
1.实体
实体是计算机对现实对象的映射,如:飞机、车辆等。在仿真实现上,通过实体来刻画现实对象的特征、行为。
事件
事件用来刻画仿真装备或者仿真实体的动作或行为,对应在软件代码中,就是仿真过程中要执行的函数。这函数的定义和实现都在具体的模型内部。
示例性的,在软件设计上,用一个类来描述“事件”,其结构主要包含以下几部分:
(1)事件对应的程序函数(即事件对应的程序代码片段);
(2)执行时刻:事件真正执行的时间,仿真开始的时刻为0,仿真事件在仿真开始或仿真进行时提交到事件管理器中。当仿真时间推进到该时刻时,引擎会调度该事件对应的函数运行,从而达到事件执行的目的;
(3)优先级:当多个事件执行的时刻都是一致时,优先级决定了这些事件的执行顺序,优先级的取值范围是0-255,0是最先执行,默认设置为127;
(4)执行者:用来标识执行事件的模型实例;
(5)状态标志:代表该事件是否已取消。在特定的条件下,需要将已提交的事件取消执行。如:当一个实体被击毁后,就需要取消事件队列中该实体提交的所有事件。
即“事件”至少包含:执行时刻,优选级,执行者和状态标志。
事件管理器
事件管理器维护由一个或多个实体提交的所有事件的事件队列,向实体提供事件提交接口,当接收到实体提交的事件时,事件管理器综合考虑事件的执行时间、优先级等因素,对事件队列中的所有事件进行重新排序。
事件管理器在仿真运行时表现为“管理仿真对象提交的仿真事件”的对象,事件管理器拥有一个用于存放事件的队列容器。
仿真开始时,根据计算机CPU资源,一个或多个事件管理器被创建并调度其运行起来。事件管理器启动后,开始不断的调度事件队列,直到仿真时间结束或事件队列中无任何等待事件。
事件管理器对仿真对象提供事件提交接口,仿真对象可通过该接口不断的向事件管理器提交新的事件,新提交的事件被事件管理器放入事件队列中,供事件管理器调度。
事件管理器可被视为“仿真事件管理员”。它拥有一个“容器”,称为“事件队列”,负责容纳仿真对象提交的所有“事件”。事件管理器同时负责事件的入队列、事件的执行调度及事件的出队列等多项工作。
一方面事件管理器要负责新事件提交时的队列重新排序;另一方面还要负责待执行事件的出队列操作及调度该事件的执行;最后还要在事件执行完毕后,提取队列的第一个事件,向时间管理器请求时间推进,执行事件,同时记录当前同步时间和优先级。在本申请中,时间推进也可以被称为时间同步。
.时间管理器
时间管理器是仿真引擎中的一个功能对象,在仿真引擎运行时创建。负责管理仿真进行过程中的“时间”概念。为所有事件管理器执行事件提供“时间标准”。不符合规定(时间小于当前仿真时间)的事件,时间管理器不批准其执行,最终事件管理器将抛弃该事件。
当所有事件管理器都没有正在执行的仿真事件时,时间管理器批准所有事件管理器发送新的事件执行请求,时间管理器遍历比较所有事件管理器的当前待执行事件的时间,决定当前仿真时间的值(取最小执行时刻),作为新的全局仿真时间,通过上述过程的不断循环,仿真时间不断的前进,直到到达仿真结束时间。
时间管理器负责管理仿真过程的时间变化,保证事件的因果关系,维护全局时间的统一性和唯一性。
在离散仿真系统里,时间是离散的、不连续的。这些不连续的时间片段(时刻)由仿真事件的执行来推动,例如:随着仿真事件的执行,仿真时间表现为:0秒,3秒,4.5秒,50秒…。
在仿真过程中,存在一个或多个事件管理器,他们不断的向时间管理器请求时间推进,时间管理器遍历所有的事件管理器的当前推进时间和优先级,找出执行时刻最小,优先级最高的作为全局推进标准,并主动将当前仿真时间推进至该时刻,同时通知符合条件的事件管理器执行事件,其他事件管理器继续等待,当符合条件的事件执行完毕后,时间管理器重复上述过程,从而不断的更新自己维护的仿真时间。
时间管理器的时间线,制约着事件管理器的事件执行,在整个仿真过程中起着至关重要的作用。
在一个实施例中,在离散仿真系统中,时间管理器可以用软件的形式实现。
参见图1,示出了根据本发明的基于多任务的离散事件并行仿真及时间同步方法中主要的逻辑结构,即时间管理器与事件管理器的逻辑结构图。
本发明的基于多任务的离散事件并行仿真及时间同步方法包括一个时间管理器和多个事件管理器,其中参与仿真的实体被划分为多个组,每个组对应着一个事件管理器,一个事件管理器对应一个事件队列,即一个事件管理器负责管理多个实体递交的所有事件,在仿真开始时,仿真引擎为每个事件管理器创建独立的工作线程,通过多线程的并行运行来实现仿真的并行运行。
所述时间管理器在仿真引擎运行过程中是全局唯一的,如图1所示。负责管理多个事件管理器提交的时间同步请求,(时间来源于待执行事件的执行时刻),使多个事件管理器之间保持时间同步。
仿真开始后,每个事件管理器都向时间管理器发出时间同步的请求。当所有的事件管理器都处于时间同步请求状态时(表示所有事件管理器都没有事件正在执行),时间管理器遍历所有的事件管理器的当前推进时间和优先级,综合考虑所有事件管理器提交的事件的执行时刻和优先级进行裁决,找出执行时刻最小,优先级最高的作为全局推进标准,并主动将当前仿真时间推进至该时刻,同时通知所有满足执行条件的事件管理器准备执行事件。符合条件事件管理器接收到时间管理器的通知信号后,开始执行当前事件,执行完毕后,该事件管理器再次向时间管理器发出事件同步的请求。
总的来说,符合时间约束规则的事件管理器提交的事件允许被执行,多个符合条件的事件同时执行就达到了并行运行的目的;事件管理器请求执行的事件为全局仿真时间的推进提供参考值,伴随着事件的执行,仿真时间不断的推进,直到仿真结束;时间管理器全局唯一,事件管理器可存在多个;通过多个事件管理器的并发事件执行,达到提高仿真运行的目的。
事件管理器向时间管理器发送时间同步请求时,已将自己当前的时间和优先级设为事件队列中第一个事件的时间和优先级。如果时间管理器批准其请求,就意味着事件队列中的第一个事件将被弹出并执行。当事件执行完毕后,事件管理器再次向时间管理器发送时间同步请求,直到事件管理器的事件队列中没有事件或当前时间已到达仿真时间。
在仿真运行过程中,仿真对象调用事件管理器提供的事件提交接口,向其对应的事件管理器提交事件,事件管理器将该事件加入事件队列中,并根据事件的执行时刻和优先级进行排序。
进一步优选的,在仿真过程中,实体不断的向事件管理器提交带有时戳的事件,事件管理器验证事件的有效性,即执行时刻不能大于仿真结束时间,不能小于当前仿真时间,无效的事件将会被抛弃,不入事件队列。
进一步优选的,其中,时间管理器综合考虑所有事件管理器提交的事件的执行时刻和优先级进行裁决为:1、时间与时间管理器的当前仿真时间相等且优先级相等的,立刻执行;2、时间与时间管理器的当前仿真时间相等,优先级低的,等待;3、时间大于时间管理器的当前仿真时间的,等待。即,时间管理器的当前仿真时间与事件的执行时刻一致时,立即执行该事件;如果时间管理器的当前仿真时间与事件的执行时刻一致的存在多个事件,则先执行优先级高的事件,然后执行优先级低的事件;待上述事件都执行完后,推进时间管理器的当前仿真时间,去执行后续的事件。
进一步的,为了完成对模型事件的控制、调度及全局时间的统一管理,时间管理器还提供下列接口供事件管理器和其他模块调用:
请求时间同步;
请求异步执行;
状态控制:开始、暂停、继续、终止;
仿真时间因子调整、仿真时间获取等。
参见图1中,时间管理器同时管理着多个事件管理器,每个事件管理器拥有自己独立的事件队列,在独立的线程中运行,每个事件管理器包含1到N个实体模型,实体模型将自己产生的事件提交到其隶属的事件队列中。
事件管理器负责管理其事件队列,向时间管理器请求时间推进(待执行事件的时间),如获批准,将执行事件对应的程序函数。时间管理器将当前仿真时间更新为正在执行的事件的时间,随着仿真事件的不断执行,从而推动着仿真时间的不断前进。
如果多个事件管理器提交的事件时间和优先级相同,时间管理器允许他们同时运行,从而达到了多事件并发执行的效果,仿真运行效率得到提高。
参见图2,示出了一个示例性的时间管理器与事件管理器之间的交互关系。仿真开始后,事件管理器向时间管理器提交事件执行请求,如果执行条件具备(时间、优先级等),时间管理器会发出允许执行信号给请求的事件管理器,事件管理器立刻执行该事件对应的函数,完成模型的处理逻辑。
离散事件仿真并行化为:将参与仿真的实体根据规模和CPU性能分为多个组,为每个组创建一个独立的事件管理器,每个事件管理器维护着一个独立的事件队列,隶属该组的所有实体产生的事件都提交到该队列,事件管理器负责对该队列的事件进行插入、排序、执行、移除等处理,每个事件管理器都由一个独立的线程来运行。这样,在一次仿真运行过程中,通过多事件管理器的并发运行,实现了离散事件仿真的并行运行。
参见图3,示出了事件管理器与实体及时间管理器之间的交互关系的一个具体的实施例。
每个实体按照自身的需求自由地向其隶属的事件管理器提交新事件,事件管理器综合考虑事件的执行时间、优先级等属性将其存储到事件队列的合适位置上。在仿真过程中,事件管理器按序从事件队列中提取事件向时间管理器请求执行该事件,同时发出请求的事件管理器处理等待状态。时间管理器综合考虑所有请求的事件,根据时间最小、优先级最高的原则批准符合条件的事件执行,请求的事件管理器在获得“批准执行”的通知后,开始执行事件对应的函数,时间管理器维护的仿真时间同时更新为当前事件对应的时间。随着事件的不断执行,仿真时间也在不断的前进,直到仿真结束。
时间管理及同步为:全局时间管理器负责维护所有事件队列中的事件执行请求和全局仿真时间。时间不可以倒流,请求执行的事件最小时间即为当前全局仿真时间,全局仿真时间是事件管理器裁决事件能否执行的重要标准之一,小于当前仿真时间(即当前的全局仿真时间)的仿真事件是非法事件,需要抛弃。对于大于或等于当前仿真时间的多个事件执行请求,时间管理器综合考虑事件的时间和优先级,时间小的、优先级高的优先获得运行权,时间管理器向对应的事件管理器发送“批准执行”通知,如果多个事件同时获得批准,则该多个事件同时获得执行权,开始并行执行,从而使仿真运行达到了并行化效果。
参与仿真的实体数量在仿真想定制作阶段时决定。实体的分组可由系统根据当前计算机的CPU个数和每个CPU的核心数自动完成,也可手动调整。自动分组时采用的方法是:为了减少线程上下文切换带来的系统开销,以CPU个数和CPU的核心数为根据,线程数量n=CPU数*核心数,如果n=1,将自动调整为2,确定分组数量m=n-1(保留一个数据IO线程,用于仿真过程数据的读写处理),将所有实体均匀分配到m个分组中。
实体模型在运行过程中根据自身的需要,确定在未来某个时候(相对时间)应执行模型(自身或其他模型)的某个函数以及执行时所需的参数,将这些信息作为事件,调用事件队列的相应添加事件的函数将事件加入队列,并按照时间、优先级及事件的提交顺序进行排序。
事件队列在提取事件进行处理时,如果事件所对应的时间大于当前仿真时间,则必须推进到事件时间才能处理该事件,推进过程必须得到时间管理器的批准,批准后即可认为仿真时间进行了推进,待事件处理完成后即完成了推进。即事件队列推进仿真时间。
事件队列调用时间管理所提供的请求推进时间函数,并提供需要推进到的仿真时间,时间管理服务通过该函数接收并记录该请求。即时间推进请求。
时间管理根据所有事件队列当前时间和时间推进请求的情况,选择符合条件的时间推进请求予以批准,以此来维护所有事件队列的全局时间一致性。即时间管理对多个事件队列的时间同步。
在时间推进中选择符合条件的是指:该时间推进请求所要求推进的时间小于等于所有事件队列的当前时间和所有请求的时间。
参见图4,示出了时间推进过程时序图,多个事件在同一事件请求事件推进。但该仅仅为一个示例,多个事件管理器也会在不同请求事件的推进。
以下示出了另一个具体的实施例:
实施例1:
1、将参与仿真的大量实体组成一个连续单一的内存映像并划分为多个组;
2、为每个分组建立一个事件队列,并按照时间戳、优先级顺序排列;
3、设置一个全局唯一的时间管理器,用于协调各事件队列的时间;
4、各事件队列按照时间顺序处理事件并推进时间;
5、当事件队列中下一事件的时间戳大于当前时间或优先级时,向时间管理器请求推进时间;
6、当事件队列处于同步状态(全部处于请求推进状态)时,时间管理器扫描各个事件队列当前要求推进的最小时间和最高优先级,满足时间和优先级条件的事件管理器获得批准,并将当前的仿真时间和优先级推进到批准的时间和优先级;
7、获得批准的事件队列进行事件处理;
8、在事件处理的过程中需要访问实体数据时直接访问内存;
9、当运行至预设的结束时间或结束事件时整个仿真停止运行。
以某想定案例为例,说明采用单线程运行与采用多线程运行的性能差异。
运行环境配置:
处理器:Intel i7(3770) 四核(带超线程技术)
内存:DDR2 8G
操作系统:Windows 7 SP1 32Bit
想定总时间:7200秒
想定步长:3秒
实体数量:100000
实体算法:随机机动
生成过程数据大小:9.6GB
性能测试结果如表1所述:
表性能测试结果
综上,本发明中的并行仿真利用计算机的多CPU、多核硬件资源(类似于多个可用检票口),同时开设多个事件管理器(检票口),将大量的仿真对象(旅客)分散到多个事件管理器中,让他们尽可能的同时运行,并行处理,从而提高硬件的利用效率、缩短仿真时间,提高仿真效率。并且设定了全局唯一的时间管理器,使得时间管理与同步的开销为函数调用级开销,避免了跨进程通信的开销,在频繁的推进和同步处理中,极大提高了仿真时间管理效率。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定保护范围。
Claims (8)
1.一种基于多任务的离散事件并行仿真及时间同步方法,其特征在于:包括一个时间管理器和多个事件管理器,参与仿真的实体被划分为多个组,每个组对应着一个事件管理器,一个事件管理器对应一个事件队列,即一个事件管理器负责管理多个实体递交的所有事件,在仿真开始时,仿真引擎为每个事件管理器创建独立的工作线程,通过多线程的并行运行来实现仿真的并行运行;
所述时间管理器在仿真引擎运行过程中是全局唯一的负责管理多个事件管理器提交的时间同步请求,所述时间来源于待执行事件的执行时刻,使多个事件管理器之间保持时间同步;
仿真开始后,每个事件管理器都向所述时间管理器发出时间同步的请求,当所有的事件管理器都处于时间同步请求状态时,所有事件管理器都没有事件正在执行,随后时间管理器遍历所有的事件管理器的当前推进时间和优先级,综合考虑所有事件管理器提交的事件的执行时刻和优先级进行裁决,找出执行时刻最小,优先级最高的作为全局推进标准,并主动将当前仿真时间推进至该时刻,同时通知所有满足执行条件的事件管理器准备执行事件,符合条件事件管理器接收到时间管理器的通知信号后,开始执行当前事件,执行完毕后,该事件管理器再次向时间管理器发出事件同步的请求。
2.根据权利要求1所述的方法,其特征在于:
事件管理器向时间管理器发送时间同步请求时,已将自己当前的时间和优先级设为事件队列中第一个事件的时间和优先级;
时间管理器批准其请求,表示事件队列中的第一个事件将被弹出并执行;
当事件执行完毕后,事件管理器再次向时间管理器发送时间同步请求,直到事件管理器的事件队列中没有事件或当前时间已到达仿真时间。
3.根据权利要求1所述的方法,其特征在于:
在仿真运行过程中,仿真对象调用事件管理器提供的事件提交接口,向其对应的事件管理器提交事件,事件管理器将该事件加入事件队列中,并根据事件的执行时刻和优先级进行排序。
4.根据权利要求3所述的方法,其特征在于:
时间管理器还提供下列接口供事件管理器和其他模块调用:
请求时间同步;
请求异步执行;
状态控制:开始、暂停、继续、终止;
仿真时间因子调整、仿真时间获取。
5.根据权利要求1所述的方法,其特征在于:
在仿真过程中,实体不断向事件管理器提交带有时戳的事件,事件管理器验证事件的有效性,即执行时刻不能大于仿真结束时间,不能小于当前仿真时间,无效的事件将会被抛弃,不入事件队列。
6.根据权利要求1所述的方法,其特征在于:
所述时间管理器综合考虑所有事件管理器提交的事件的执行时刻和优先级进行裁决为:1、时间与时间管理器的当前仿真时间相等且优先级相等的,立刻执行;2、时间与时间管理器的当前仿真时间相等,优先级低的,等待;3、时间大于时间管理器的当前仿真时间的,等待。
7.根据权利要求1所述的方法,其特征在于:
实体的分组可由系统根据当前计算机的CPU个数和每个CPU的核心数自动完成,或手动调整;
自动分组时采用的方法为:为了减少线程上下文切换带来的系统开销,以CPU个数和CPU的核心数为根据,线程数量n=CPU数*核心数,如果n=1,将自动调整为2,确定分组数量m=n-1,将所有实体均匀分配到m个分组中。
8.根据权利要求1所述的方法,其特征在于:
实体在运行过程中根据自身的需要,确定在未来某个时候应执行模型的某个函数以及执行时所需的参数,将这些信息作为事件,调用事件队列的相应添加事件的函数将事件加入队列,并按照时间、优先级及事件的提交顺序进行排序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510266223.7A CN104866374B (zh) | 2015-05-22 | 2015-05-22 | 基于多任务的离散事件并行仿真及时间同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510266223.7A CN104866374B (zh) | 2015-05-22 | 2015-05-22 | 基于多任务的离散事件并行仿真及时间同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104866374A CN104866374A (zh) | 2015-08-26 |
CN104866374B true CN104866374B (zh) | 2018-07-06 |
Family
ID=53912223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510266223.7A Active CN104866374B (zh) | 2015-05-22 | 2015-05-22 | 基于多任务的离散事件并行仿真及时间同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104866374B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111082858A (zh) * | 2019-12-16 | 2020-04-28 | 烽火通信科技股份有限公司 | 一种基于uvm的高复用性开销仿真系统及方法 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183536B (zh) * | 2015-09-14 | 2018-11-13 | 中国人民解放军国防科学技术大学 | 基于gpu的乐观时间管理方法 |
CN105740528B (zh) * | 2016-01-27 | 2019-05-17 | 东南大学 | 一种自适应同步方式的电力通信联合仿真平台及其同步方法 |
CN107193639B (zh) * | 2017-06-05 | 2020-11-24 | 北京航空航天大学 | 一种支持联合作战的多核并行仿真引擎系统 |
CN107729155B (zh) * | 2017-11-10 | 2020-05-05 | 中国人民解放军国防科技大学 | 并行离散事件仿真负载平衡方法、装置、介质和计算机设备 |
CN107967150B (zh) * | 2017-12-19 | 2021-10-15 | 郑州云海信息技术有限公司 | 一种线程执行顺序确定方法、装置、设备及存储介质 |
US11397610B2 (en) * | 2018-12-28 | 2022-07-26 | Beijing Voyager Technology Co., Ltd. | Architecture for simulation clock-based simulation of distributed systems |
CN110276152B (zh) * | 2019-06-27 | 2023-01-06 | 北京华如科技股份有限公司 | 一种并行离散时间仿真的带时间余度非严格时间管理方法 |
CN110276153B (zh) * | 2019-06-27 | 2023-01-06 | 北京华如科技股份有限公司 | 并行离散时间仿真的非一致时间余度非严格时间管理方法 |
CN110290011A (zh) * | 2019-07-03 | 2019-09-27 | 中山大学 | 边缘计算中基于Lyapunov控制优化的动态服务放置方法 |
CN111147284B (zh) * | 2019-12-06 | 2021-09-21 | 江西洪都航空工业集团有限责任公司 | 一种以数据为中心的分布式实时仿真系统数据交互策略 |
CN111177893B (zh) * | 2019-12-11 | 2023-05-02 | 中电普信(北京)科技发展有限公司 | 基于多线程的并行离散仿真事件驱动方法及装置 |
CN111324046B (zh) * | 2020-02-28 | 2022-10-25 | 中国电力科学研究院有限公司 | 一种用于对分布式仿真系统进行协同运算的方法及系统 |
CN111400895B (zh) * | 2020-03-12 | 2023-03-17 | 上海机电工程研究所 | 多层次多粒度跨域联合仿真事件调度方法和系统 |
CN111597035B (zh) * | 2020-04-15 | 2024-03-19 | 北京仿真中心 | 基于多线程的仿真引擎时间推进方法及系统 |
CN111651866B (zh) * | 2020-05-12 | 2023-03-17 | 北京华如科技股份有限公司 | 一种基于动态负载迁移及时间同步的仿真执行方法及系统 |
CN111651864B (zh) * | 2020-05-12 | 2023-03-17 | 北京华如科技股份有限公司 | 一种事件集中发射式多异构时间队列优化仿真执行方法及系统 |
CN111651865B (zh) * | 2020-05-12 | 2023-03-17 | 北京华如科技股份有限公司 | 一种并行离散事件的事件集中发射式仿真执行方法及系统 |
CN112463326A (zh) * | 2020-11-25 | 2021-03-09 | 中国人民解放军海军航空大学 | 连续离散混合系统仿真推进方法及装置、设备及介质 |
CN113312769B (zh) * | 2021-05-27 | 2023-09-08 | 南京大学 | 一种系统动力学与离散事件仿真混合仿真建模方法及系统 |
CN113419850B (zh) * | 2021-06-11 | 2022-07-19 | 中国人民解放军军事科学院国防科技创新研究院 | 一种实体的并行仿真方法、装置、电子设备及存储介质 |
CN113190359B (zh) * | 2021-07-01 | 2022-02-22 | 苏州贝克微电子股份有限公司 | 一种仿真请求处理方法、装置、电子设备及可读存储介质 |
CN114610294B (zh) * | 2022-05-09 | 2022-08-09 | 湖南星河云程信息科技有限公司 | 仿真实验效能指标并发计算控制方法、装置和计算机设备 |
CN115037631B (zh) * | 2022-05-13 | 2023-08-22 | 北京中科晶上科技股份有限公司 | 基于集群的网络仿真方法、装置和网络仿真系统 |
CN115186518B (zh) * | 2022-09-09 | 2022-12-16 | 中国电子科技集团公司第十五研究所 | 一种仿真并行推进方法、服务器以及存储介质 |
CN115827170B (zh) * | 2023-02-16 | 2023-07-14 | 之江实验室 | 基于离散事件的计算机体系结构的并行仿真方法及装置 |
CN116562054B (zh) * | 2023-07-06 | 2023-10-13 | 西安羚控电子科技有限公司 | 一种多实体协同实时仿真系统的构建方法及装置 |
CN117234697B (zh) * | 2023-11-16 | 2024-02-06 | 中国人民解放军国防科技大学 | 一种保守时间同步并行事件调度计算架构和方法 |
CN117909036A (zh) * | 2023-12-06 | 2024-04-19 | 中国科学院软件研究所 | 一种面向复杂信息系统的高效离散事件仿真引擎构建方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788919A (zh) * | 2010-01-29 | 2010-07-28 | 中国科学技术大学苏州研究院 | 片上多核处理器时钟精确并行仿真系统及仿真方法 |
CN103268251A (zh) * | 2013-05-02 | 2013-08-28 | 中国人民解放军国防科学技术大学 | 一种基于时戳截流的并行离散事件仿真时间同步方法 |
CN104615815A (zh) * | 2015-01-27 | 2015-05-13 | 北京仿真中心 | 一种并行模型的消息传输方法及系统 |
CN104615492A (zh) * | 2015-03-01 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 一种多核并行离散事件仿真的内存管理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256502B (zh) * | 2007-02-27 | 2011-02-09 | 国际商业机器公司 | 模拟多处理器系统的系统和方法 |
-
2015
- 2015-05-22 CN CN201510266223.7A patent/CN104866374B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788919A (zh) * | 2010-01-29 | 2010-07-28 | 中国科学技术大学苏州研究院 | 片上多核处理器时钟精确并行仿真系统及仿真方法 |
CN103268251A (zh) * | 2013-05-02 | 2013-08-28 | 中国人民解放军国防科学技术大学 | 一种基于时戳截流的并行离散事件仿真时间同步方法 |
CN104615815A (zh) * | 2015-01-27 | 2015-05-13 | 北京仿真中心 | 一种并行模型的消息传输方法及系统 |
CN104615492A (zh) * | 2015-03-01 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 一种多核并行离散事件仿真的内存管理方法 |
Non-Patent Citations (2)
Title |
---|
分布式集群并行仿真平台中时间同步技术研究;王学慧;《计算机仿真》;20061130;第119-123页 * |
并行离散事件仿真系统时钟管理及推进机制研究;王娴等;《信息技术》;20121029;第11-14、18页 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111082858A (zh) * | 2019-12-16 | 2020-04-28 | 烽火通信科技股份有限公司 | 一种基于uvm的高复用性开销仿真系统及方法 |
CN111082858B (zh) * | 2019-12-16 | 2021-03-02 | 烽火通信科技股份有限公司 | 一种基于uvm的高复用性开销仿真系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104866374A (zh) | 2015-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104866374B (zh) | 基于多任务的离散事件并行仿真及时间同步方法 | |
Schulte et al. | Elastic Business Process Management: State of the art and open challenges for BPM in the cloud | |
Dobre et al. | Monarc simulation framework | |
CN110018817A (zh) | 数据的分布式运行方法及装置、存储介质及处理器 | |
CN107168779A (zh) | 一种任务管理方法及系统 | |
CN104112049B (zh) | 基于P2P构架的MapReduce任务跨数据中心调度系统及方法 | |
CN104102533B (zh) | 一种基于带宽感知的Hadoop调度方法和系统 | |
CN109240825A (zh) | 弹性任务调度方法、装置、设备及计算机可读存储介质 | |
CN107370796A (zh) | 一种基于Hyper TF的智能学习系统 | |
CN107220107B (zh) | 一种多时钟多任务并行实时仿真系统及方法 | |
CN106201681B (zh) | Hadoop平台下基于预释放资源列表的任务调度方法 | |
CN100531070C (zh) | 网络资源调度仿真系统 | |
CN115495221A (zh) | 一种数据处理系统及方法 | |
CN114138488A (zh) | 一种基于弹性高性能计算的云原生实现方法及系统 | |
CN107943592A (zh) | 一种面向gpu集群环境的避免gpu资源争用的方法 | |
Korenkov et al. | Simulation concept of NICA-MPD-SPD Tier0-Tier1 computing facilities | |
Sheharyar et al. | A framework for creating a distributed rendering environment on the compute clusters | |
CN115049356B (zh) | 一种基于对象所有权动态分配与时效限制的协同操作并发冲突控制方法 | |
Wang et al. | A hard real-time scheduler for Spark on YARN | |
WO2021220616A1 (ja) | 情報処理装置及び情報処理方法、コンピュータプログラム、並びに分散学習システム | |
Liu | A Programming Model for the Cloud Platform | |
AU2015101031A4 (en) | System and a method for modelling the performance of information systems | |
Lin et al. | A multi-centric model of resource and capability management in cloud simulation | |
CN106155801B (zh) | 一种设备迁移的方法及资源管理中心 | |
Li et al. | Cress: Dynamic scheduling for resource constrained jobs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |