CN103268251B - 一种基于时戳截流的并行离散事件仿真时间同步方法 - Google Patents
一种基于时戳截流的并行离散事件仿真时间同步方法 Download PDFInfo
- Publication number
- CN103268251B CN103268251B CN201310158502.2A CN201310158502A CN103268251B CN 103268251 B CN103268251 B CN 103268251B CN 201310158502 A CN201310158502 A CN 201310158502A CN 103268251 B CN103268251 B CN 103268251B
- Authority
- CN
- China
- Prior art keywords
- message
- time stamp
- dam
- logical
- time
- 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)
Abstract
本发明公开了一种基于时戳截流的并行离散事件仿真时间同步方法,该方法包括如下步骤:多个逻辑进程并行推进,每个逻辑进程均在仿真时间推进到当前时戳截流坝时进入阻塞,在所有逻辑进程均进入阻塞后,仲裁进程判断本次截流是否结束,如果是执行步骤A,如果否执行步骤B;步骤A,更新该当前时戳截流坝,设置新的全局虚拟时间,为所有逻辑进程解除阻塞;步骤B,所有逻辑进程解除阻塞继续推进,保持当前时戳截流坝不变。本发明在不过分抑制仿真乐观性的前提下有效防止因个别逻辑进程行进速度过快及消息延迟所带来的回退雪崩和狗咬尾巴现象,将错误计算限制在时戳截流坝间距内。
Description
技术领域
本发明涉及并行离散仿真领域,特别是涉及一种基于时戳截流的并行仿真时间同步方法。
背景技术
随着科学技术特别是计算机技术的发展日益加快,各种大规模的复杂系统应运而生,在对各类大型系统特别是对一些实时性要求高的系统进行仿真时,传统的串行仿真已不能很好地满足需求,并行仿真靠着其高性能高速度的优点,正逐渐被越来越多的仿真项目青睐。
并行仿真将仿真任务分成很多逻辑进程,分配至不同的核中加以计算,可是由于各个核的独立运行,时间同步问题便随之而来。传统的时间同步算法分为保守同步策略和乐观同步策略。保守同步策略是当有一个逻辑进程可能从其他逻辑进程处接收到拥有更小时戳的事件时,则确保这个逻辑进程不处理事件。乐观同步策略与保守同步策略不同,它允许逻辑进程按照任何顺序执行事件,如果发生因果关系错误,则通过回退的方式重新执行。虽然乐观同步策略允许各个逻辑进程不受限地自由推进,可是在传统的时间弯曲算法中,各个逻辑进程的仿真时间差异是没有任何限制的,当遇到掉队事件或消息后通过回退和发送反消息达到同步的效果,这可能会导致非常低的计算和通信资源利用率。
针对上述时间弯曲算法的不足,人们对时间弯曲算法进行了大量的改进。时间弯曲算法的主要改进思想便是减少各个逻辑进程的仿真时间差异。主要有基于阻塞和基于人工回退两种方法,基于阻塞是通过有意识地进行逻辑进程的阻塞来限制系统的乐观程度,从而使各个逻辑进程的时间推进趋于一致。基于人工回退的思想是,在真实回退发生前,率先将那些进度过快的逻辑进程进行回退,以免错误计算愈演愈烈。
由于基于主动回退的算法无谓地回退了某些正确的计算执行,虽然降低了大规模回退的风险,但是在一定程度上也浪费了很多正确计算,所以,目前大多数对时间弯曲算法的改进都是建立在基于阻塞思想上的,其中比较著名的有移动时间窗算法、本地回退算法、“狼来了”算法以及周期时间桶算法。
移动时间窗的算法设置了一个逻辑进程可以超过其他逻辑进程的仿真时间上限,该算法的不足是需要频繁计算全局虚拟时间。
本地回退算法只发送那些时戳小于全局虚拟时间的事件,将回退限制在本地,该算法的不足是可能会造成永久阻塞使全局虚拟时间无法推进。
周期时间桶算法通过计算一个称为“事件限”的量来决定时间窗的大小,将保守算法中的前瞻量通过事件限的计算得出,避免了反消息的发送,该算法的不足是仿真推进速度缓慢,在某些情况下一个周期内只运行了很少事件。
“狼来了”算法在任何一个逻辑进程发生回退时,便广播消息阻塞其他所有逻辑进程的执行,该算法有效地防止了“狗咬尾巴”的发生,缺点是只要有一处发生错误计算,整个仿真都必须停止,严重影响仿真效率。
发明内容
本发明提出一种基于时戳截流的并行离散事件仿真时间同步方法,解决了通过时戳截流按批次放行事件,以将回退限制在局部时间段内,且不过分地阻碍仿真的乐观性的技术问题。
本发明公开了一种基于时戳截流的并行离散事件仿真时间同步方法,该方法包括如下步骤:
多个逻辑进程并行推进,每个逻辑进程均在仿真时间推进到当前时戳截流坝时进入阻塞,在所有逻辑进程均进入阻塞后,仲裁进程判断本次截流是否结束,如果是执行步骤A,如果否执行步骤B;
步骤A,更新该当前时戳截流坝,设置新的全局虚拟时间,为所有逻辑进程解除阻塞;
步骤B,所有逻辑进程解除阻塞继续推进,保持当前时戳截流坝不变。
每个逻辑进程在进入阻塞时均发送阻塞报告给该仲裁进程,该阻塞报告中包括该逻辑进程的本地坝后最小时戳;
该步骤A进一步包括:将所有阻塞报告的本地坝后最小时戳中的最小值作为全局坝后最小时戳,该仲裁进程将发送一修改时戳截流坝消息至所有逻辑进程,该修改时戳截流坝消息包括该全局坝后最小时戳;
该步骤B进一步包括:该仲裁进程发送一继续推进消息至所有逻辑进程。
该仲裁进程通过判断所有逻辑进程的总消息发送数目与总消息接收数目是否一致来判断本次截流是否结束。
每个逻辑进程均具有消息接收进程和消息处理进程,该消息接收进程在接收到该修改时戳截流坝消息时,启动该消息处理线程,将该全局坝后最小时戳作为该新的全局虚拟时间,将全局坝后最小时戳加时戳截流坝间距值作为更新后的当前时戳截流坝,在接收到该继续推进消息时,启动该消息处理线程,在接收到来自其他逻辑进程的消息时,更新当前逻辑进程的消息接收数目,并将该消息压入未来消息队列。
该消息处理线程读取该逻辑进程的未来消息队列中的第一个消息的时戳,如果该第一个消息时戳小于当前时戳截流坝,处理该第一个消息,如需发送消息至其他逻辑进程,更新当前逻辑进程的消息发送数目,如果该第一个消息的时戳大于等于该当前时戳截流坝,向该仲裁进程发送该阻塞报告,并阻塞该消息处理线程。
该处理该第一个消息的步骤进一步包括:
如果该第一个消息是事件,判断该事件的时戳是否小于本地虚拟时间,如果是,修改本地虚拟时间为该事件的时戳,将已处理事件队列中时戳大于该事件的时戳的事件重新压入未来消息队列,将已发送消息队列中发送时戳大于该事件的时戳的消息转换为反消息并发出,更新当前逻辑进程的消息发送数目,并处理该事件,如果否,修改本地虚拟时间为该事件的时戳,并处理该事件;
如果该第一个消息是反消息,判断该反消息的时戳是否小于本地虚拟时间,如果否,将该反消息压入未处理反消息列表,如果是,在已处理事件队列中找出与该反消息的时戳对应的事件并删除,修改本地虚拟时间为该反消息的时戳,将已处理事件队列中时戳大于该反消息的时戳的事件重新压入未来消息队列,将已发送消息队列中发送时戳大于该反消息的时戳的消息转换为反消息并发出,更新当前逻辑进程的消息发送数目。
该消息接收进程在接收到来自其他逻辑进程的消息时还包括如下步骤,判断未处理反消息列表中是否存在与该消息对应的反消息,如果无,将该消息压入未来消息队列,如果有,删除该消息并删除该未处理反消息列表中与该消息对应的反消息。
所述方法还包括:设置一共享内存,以统计各个逻辑进程的消息发送数目与各个逻辑进程的消息接收数目。
该方法采用PHOLD测试模型实现。
该时戳截流坝为各个逻辑进程推进过程中的时间上限值,该时戳截流坝间距值为从一次阻塞结束到下一个时戳截流坝之间的仿真时间跨度,该本地坝后最小时戳为逻辑进程在时戳截流坝后按时戳从小到大排序的未来消息队列中的第一个消息的时戳,全局坝后最小时戳为所有逻辑进程的本地坝后最小时戳中的最小值。
本发明通过时戳截流坝的建立,采用逻辑进程和仲裁进程双类进程的方式,通过时戳截流坝将所有逻辑进程的未来消息队列按时戳分段,每当逻辑进程的本地虚拟时间推进至时戳截流坝时,便阻塞消息处理,确保所有逻辑进程在时戳截流坝之前的所有反消息和回退全部处理完全后再进入下一段时间推进,将反消息限定在某一局部之间,确保了前一批事件不会造成后一批次的任何回退,在不过分抑制仿真乐观性的前提下有效防止因个别逻辑进程行进速度过快及消息延迟所带来的回退雪崩和狗咬尾巴现象,将错误计算限制在时戳截流坝间距内。
附图说明
图1所示为本发明的一种基于时戳截流的并行离散事件仿真时间同步方法的流程图;
图2所示为本发明的系统结构示意图;
图3所示为本发明的仲裁进程的工作流程示意图。
图4、7所示为本发明的消息接收线程的工作流程示意图。
图5所示为本发明的消息处理线程的工作流程示意图。
图6所示为该步骤503的处理该第一个消息的详细步骤流程图。
图8所示为本发明的时间同步方法的逻辑进程推进示意图。
图9所示为本发明在四核环境下与时间弯曲算法的本地虚拟时间推进比较图。
图10所示为本发明在八核环境下与时间弯曲算法的本地虚拟时间推进比较图。
具体实施方式
在仿真过程中,多个逻辑进程并行推进,本发明的时间同步方法对逻辑进程的推进过程进行了分段,利用时戳截流坝作为每段的时间终点,只有在所有逻辑进程均针对同一段处理完毕后才对所有逻辑进程予以放行,使得各个逻辑进程进入下一段并继续向前推进,循环直至仿真结束。如此可将各逻辑进程的反消息和回退限制在某个局部的时间段,保证了当前时间段所执行的事件不会造成后续时间段的任何回退。从而在不过分抑制仿真乐观性的前提下,有效防止因个别逻辑进程行进速度过快及消息延迟所带来的回退雪崩和狗咬尾巴现象,将错误计算限制在时戳截流坝间距内。
如图1所示为本发明提供的一种基于时戳截流的并行离散事件仿真时间同步方法的流程图,包括如下步骤:
多个逻辑进程并行推进,每个逻辑进程均在仿真时间推进到当前时戳截流坝时进入阻塞,在所有逻辑进程均进入阻塞后,仲裁进程判断本次截流是否结束,如果是执行步骤A,如果否执行步骤B;
步骤A,更新该当前时戳截流坝,设置新的全局虚拟时间,为所有逻辑进程解除阻塞;
步骤B,所有逻辑进程解除阻塞继续推进,保持当前时戳截流坝不变。
循环执行,直至仿真结束。
以上为本发明的核心技术方案,以下结合实施例具体说明本发明的实现过程。
本发明的每个逻辑进程均具有消息接收线程和消息处理线程,该消息处理线程是逻辑进程中用于处理消息的线程。该消息接收线程是逻辑进程中用于接收消息的线程。每个逻辑进程均配备有未来消息队列、已处理事件队列、已发送消息队列、未处理反消息列表,以配合逻辑进程的推进。未来消息队列是待处理的消息所组成的队列。另外,本发明还设置有一共享内存用以统计各个逻辑进程的消息发送数目与各个逻辑进程的消息接收数目。本发明还专门设立该仲裁进程,用于判断此次截流是否结束,并用于更新时戳截流坝。
本发明还将利用到以下概念:
1)时戳截流坝:对各个逻辑进程的仿真时间的推进设置的上限值。在仿真进行时,逻辑进程只处理时戳小于该上限值的消息,若没有时戳小于其的消息有待处理,则立即进入阻塞,等待其他逻辑进程共同进入阻塞后重新开始时间推进。
2)时戳截流坝间距值:表示从一次阻塞结束到下一个上限值(时戳截流坝)之间的仿真时间跨度。
3)本地坝后最小时戳:逻辑进程在时戳截流坝后按时戳从小到大排序的,未来消息队列中的第一个消息的时戳。
4)全局坝后最小时戳:所有逻辑进程的本地坝后最小时戳的最小值。
请参阅图2所示为本发明的系统结构示意图。
在对各逻辑进程的消息接收线程和消息处理线程、该仲裁进程、该共享内存进行初始化后,初始化一时戳截流坝间距值并为所有逻辑进程建立初始截流坝时戳,此时启动仿真。
各个逻辑进程开始推进,该推进包括:不同逻辑进程之间存在调度或交互,逻辑进程中的消息接收线程将不断接收来自其他逻辑进程的消息,同时消息处理线程处理消息并改变当前逻辑进程的仿真时间,同时不断在共享内存内更新该逻辑进程的消息收发数目。进入阻塞后,该仲裁进程也将通过提取该共享内存中的数据,判断所有逻辑进程的总消息发送数目与总消息接收数目是否一致,来判断本次截流是否结束。
图1所示步骤中,当一逻辑进程进入到阻塞时,会发送阻塞报告给该仲裁进程,该阻塞报告中包括该逻辑进程的本地坝后最小时戳。
该步骤A进一步包括:将所有阻塞报告的本地坝后最小时戳中的最小值作为全局坝后最小时戳,该仲裁进程将发送一修改时戳截流坝消息至所有逻辑进程,该修改时戳截流坝消息包括该全局坝后最小时戳;
该步骤B进一步包括:该仲裁进程发送一继续推进消息至所有逻辑进程。
具体来说,图3所示为本发明的仲裁进程的工作流程示意图。
步骤301,检测是否有阻塞报告到达,如果是,执行步骤302,否则执行步骤301;
步骤302,接收到的报告数加1,进入步骤303;
步骤303,判断接收到的报告数是否等于逻辑进程总数,如果是,执行步骤304,如果否,执行步骤301;
步骤304,将接收到的报告数清零;
步骤305,统计共享内存中所有逻辑进程的总消息接收数目与所有逻辑进程的总消息发送数目;
步骤306,判断总消息接收数目与总消息发送数目是否一致,如果是执行步骤307,如果否,执行步骤309;
步骤307,将接收到的所有阻塞报告的本地坝后最小时戳中的最小值作为全局坝后最小时戳;
步骤308,发送修改时戳截流坝消息至所有逻辑进程,该修改时戳截流坝消息包括该全局坝后最小时戳,执行步骤301;
该修改时戳截流坝消息用于指示所有逻辑进程重启消息处理线程并更新时戳截流坝;
步骤309,发送继续推进消息至所有逻辑进程,执行步骤301;
该继续推进消息用于指示保持当前的时戳截流坝不变,指示所有逻辑进程重启消息处理线程。
如图4所示为本发明的消息接收线程的工作流程示意图。
步骤401,检测是否有消息到达,如果是,执行步骤402,如果否,执行步骤401;
步骤402,判断该消息是否由仲裁进程回复,如果是,执行步骤403,如果否,执行步骤408;
如果否,意味着该消息由其他逻辑进程发来;
步骤403,判断该消息是否为修改时戳截流坝消息,如果是,执行步骤404,如果否,执行步骤407;
如果该消息为该仲裁进程所发出,但又不是修改时戳截流坝消息,则该消息为该继续推进消息;
步骤404,将消息处理线程的处理标志记为真;
步骤405,将该修改时戳截流坝消息中的全局坝后最小时戳作为新的全局虚拟时间;
步骤406,将当前时戳截流坝更新为该全局坝后最小时戳加时戳截流坝间距值,执行步骤401;
步骤407,将消息处理线程处理标志记为真,执行步骤401;
步骤408,在共享内存中将当前逻辑进程的消息接收数目加1;
步骤409,将该消息压入该逻辑进程的未来消息队列,执行步骤401。
其中,收到该继续推进消息意味着虽然所有逻辑进程都发送了阻塞报告,但是,总收发消息数目不一致,还有未处理完毕的任务。如果不处理完毕,可能对本次阻塞到下一时戳截流坝之间的逻辑进程的推进产生影响,特别是造成回退等影响,故而,此时需要所有逻辑进程继续推进直至该当前时戳截流坝之前的所有任务都处理完毕。
如图5所示为本发明的消息处理线程的工作流程示意图。
步骤501,读取消息处理线程工作标志,如果为真,执行步骤502,如果为假,执行步骤501;
步骤502,读取当前逻辑进程的未来消息队列中的第一个消息的时戳,若其小于当前的时戳截流坝,执行步骤503,否则执行步骤504;
步骤503,取出该第一个消息加以处理,若有消息发送给其他逻辑进程,则在共享内存中将当前逻辑进程的消息发送数目加1,执行步骤501;
步骤504,将本地坝后最小时戳写入阻塞报告,向仲裁进程发送该阻塞报告,将消息处理线程工作标志记为假,等待消息接收线程接收仲裁进程的回复,执行步骤501。
配合图4、5、8可知,各个逻辑进程的未来消息队列中的事件依次执行,不同逻辑进程之间可能进行相互的调度,各个逻辑进程仅能执行当前的时戳截流坝之前的事件,当前的时戳截流坝之后的事件不能执行。一旦所有逻辑进程进入阻塞,且仲裁进程判定所有逻辑进程均不存在未处理完毕的任务,则放行所有逻辑进程,此时设置新的时戳截流坝,新的全局虚拟时间,各个逻辑进程又仅能执行新的时戳截流坝之前的事件。如此分别推进又分段放行的同步方式,能够保证各个逻辑进程基本同步,且尽量避免错误的出现。
更进一步的,如图6所示为该步骤503的处理该第一个消息的详细步骤流程图。
步骤601,读取该第一个消息的消息标记,若消息标记为反消息执行步骤602,若消息标记为事件执行步骤608;
步骤602,判断该反消息的时戳是否小于本地虚拟时间,如果是,执行步骤603,如果否,执行步骤607;
步骤603,在当前逻辑进程的已处理事件队列中找出与该反消息对应的事件并删除;
步骤604,修改本地虚拟时间为该反消息的时戳;
步骤605,将已处理事件队列中时戳大于该反消息的时戳的事件重新压入未来消息队列;
步骤606,将已发送消息队列中发送时戳大于该反消息的时戳的消息转换为反消息后发出,更新共享内存中当前逻辑进程的消息发送数目,执行步骤601;
步骤607,将该反消息压入未处理反消息列表,执行步骤601;
步骤608,检查事件时戳,若小于本地虚拟时间,执行步骤609,否则执行步骤613;
步骤609,修改本地虚拟时间为该事件的时戳;
步骤610,将已处理事件队列中时戳大于该事件的时戳的事件重新压入未来消息队列;
步骤611,将已发送消息队列中发送时戳大于该事件的时戳的消息转换为反消息后发出,更新共享内存中当前逻辑进程的消息发送数目;
步骤612,处理该事件,执行步骤601;
步骤613,修改本地虚拟时间为该事件的时戳;
步骤614,处理该事件,执行步骤601。
更进一步的,如图7所示为在图6的基础上,对图4的细节完善,即为消息接收线程的工作流程示意图。
与图4的差别在于,在步骤408之后,进一步执行如下步骤:
步骤4081,判断在未处理反消息列表中是否存在与该消息对应的反消息,如果是,执行步骤4082,如果否,执行步骤409;
步骤4082,不将该消息压入未来消息队列,删除该消息,并删除未处理反消息列表中该消息所对应的反消息;
步骤409,将该消息压入未来消息队列。
图6、7所述方法,使得逻辑进程一旦接收到小于当前本地虚拟时间的消息,则将在时序上排在该消息之后的所有已执行的消息重新执行一遍,以保证顺序执行的正确性。
本发明通过时戳截流坝的建立,采用逻辑进程和仲裁进程双类进程的方式,通过时戳截流坝将所有逻辑进程的未来消息队列按时戳分段,每当逻辑进程的本地虚拟时间推进至时戳截流坝时,便阻塞消息处理,确保所有逻辑进程在时戳截流坝之前的所有反消息和回退全部处理完全后再进入下一段时间推进,将反消息限定在某一局部之间,确保了前一批事件不会造成后一批次的任何回退,在不过分抑制仿真乐观性的前提下有效防止因个别逻辑进程行进速度过快及消息延迟所带来的回退雪崩和狗咬尾巴现象,将错误计算限制在时戳截流坝间距内。
在一具体实施例中,本发明采用PHOLD测试模型实现。PHOLD模型假设仿真由N个计算节点组成,每个节点上有1个逻辑进程,每个逻辑进程的初始未来消息队列包含1个事件,则整个仿真的初始事件个数为N。
仿真运行时,每个事件在处理过程中都会调度一个新的事件,新事件的时戳为本地虚拟时间+前瞻量+ΔT,其中本地虚拟时间是该逻辑进程所在节点的本地仿真时钟,前瞻量是该逻辑进程的前瞻量,ΔT为服从某种分布(如指数分布)的时间值,用户通过设定ΔT的取值分布可以控制逻辑进程调度新事件的时间跨度。每个调度事件的接收者可以是任意逻辑进程,且每个逻辑进程获得该事件的概率均等,因此仿真运行的任何时刻事件个数都不变。
如图9和图10所示,在本实施例中,分别取N为4和8两种情况,时戳截流坝间距值取为2秒,将系统运行10秒后,记录下了两种算法下逻辑进程1的本地虚拟时间与真实时间的对应关系。由图可知,在时间弯曲算法的运行中由于频繁发生回退,大量的资源和计算被浪费,仿真时间推进缓慢。而本发明的基于时戳截流的并行离散事件仿真时间同步方法在不影响乐观性的同时有效地限制了回退空间,仿真效率大大高于时间弯曲算法(TW算法)。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和修改,均视为本发明的保护范围。
Claims (10)
1.一种基于时戳截流的并行离散事件仿真时间同步方法,其特征在于,该方法包括如下步骤:
多个逻辑进程并行推进,每个逻辑进程均在仿真时间推进到当前时戳截流坝时进入阻塞,在所有逻辑进程均进入阻塞后,仲裁进程判断本次截流是否结束;
若仲裁进程判断本次截流结束,则更新该当前时戳截流坝,设置新的全局虚拟时间,为所有逻辑进程解除阻塞;
若仲裁进程判断本次截流未结束,则所有逻辑进程解除阻塞继续推进,保持当前时戳截流坝不变;
其中,每个逻辑进程均具有消息接收线程和消息处理线程;
其中,所述时戳截流坝是指,对各个逻辑进程的仿真时间的推进设置的上限值;
其中,在仿真进行时,逻辑进程只处理时戳小于该上限值的消息,若没有时戳小于该上限值的消息有待处理,则立即进入阻塞,等待其他逻辑进程共同进入阻塞后重新开始时间推进。
2.如权利要求1所述的方法,其特征在于,每个逻辑进程在进入阻塞时均发送阻塞报告给该仲裁进程,该阻塞报告中包括该逻辑进程的本地坝后最小时戳;
所述的更新该当前时戳截流坝,设置新的全局虚拟时间,为所有逻辑进程解除阻塞进一步包括:
将所有阻塞报告的本地坝后最小时戳中的最小值作为全局坝后最小时戳,该仲裁进程将发送一修改时戳截流坝消息至所有逻辑进程,该修改时戳截流坝消息包括该全局坝后最小时戳;
所述的所有逻辑进程解除阻塞继续推进,保持当前时戳截流坝不变进一步包括:
该仲裁进程发送一继续推进消息至所有逻辑进程。
3.如权利要求1所述的方法,其特征在于,该仲裁进程通过判断所有逻辑进程的总消息发送数目与总消息接收数目是否一致来判断本次截流是否结束。
4.如权利要求2所述的方法,其特征在于,消息接收线程在接收到该修改时戳截流坝消息时,启动该消息处理线程,将该全局坝后最小时戳作为该新的全局虚拟时间,将全局坝后最小时戳加时戳截流坝间距值作为更新后的当前时戳截流坝,在接收到该继续推进消息时,启动该消息处理线程,在接收到来自其他逻辑进程的消息时,更新当前逻辑进程的消息接收数目,并将该消息压入未来消息队列。
5.如权利要求4所述的方法,其特征在于,该消息处理线程读取该逻辑进程的未来消息队列中的第一个消息的时戳,如果该第一个消息时戳小于当前时戳截流坝,处理该第一个消息,如需发送消息至其他逻辑进程,更新当前逻辑进程的消息发送数目,如果该第一个消息的时戳大于等于该当前时戳截流坝,向该仲裁进程发送该阻塞报告,并阻塞该消息处理线程。
6.如权利要求5所述的方法,其特征在于,该处理该第一个消息的步骤进一步包括:
如果该第一个消息是事件,判断该事件的时戳是否小于本地虚拟时间,如果是,修改本地虚拟时间为该事件的时戳,将已处理事件队列中时戳大于该事件的时戳的事件重新压入未来消息队列,将已发送消息队列中发送时戳大于该事件的时戳的消息转换为反消息并发出,更新当前逻辑进程的消息发送数目,并处理该事件,如果否,修改本地虚拟时间为该事件的时戳,并处理该事件;
如果该第一个消息是反消息,判断该反消息的时戳是否小于本地虚拟时间,如果否,将该反消息压入未处理反消息列表,如果是,在已处理事件队列中找出与该反消息的时戳对应的事件并删除,修改本地虚拟时间为该反消息的时戳,将已处理事件队列中时戳大于该反消息的时戳的事件重新压入未来消息队列,将已发送消息队列中发送时戳大于该反消息的时戳的消息转换为反消息并发出,更新当前逻辑进程的消息发送数目。
7.如权利要求4或6所述的方法,其特征在于,该消息接收线程在接收到来自其他逻辑进程的消息时还包括如下步骤,判断未处理反消息列表中是否存在与该消息对应的反消息,如果无,将该消息压入未来消息队列,如果有,删除该消息并删除该未处理反消息列表中与该消息对应的反消息。
8.如权利要求1所述的方法,其特征在于,设置一共享内存,以统计各个逻辑进程的消息发送数目与各个逻辑进程的消息接收数目。
9.如权利要求1所述的方法,其特征在于,该方法采用PHOLD测试模型实现。
10.如权利要求4所述的方法,其特征在于,该时戳截流坝间距值为从一次阻塞结束到下一个时戳截流坝之间的仿真时间跨度,该本地坝后最小时戳为逻辑进程在时戳截流坝后按时戳从小到大排序的未来消息队列中的第一个消息的时戳,全局坝后最小时戳为所有逻辑进程的本地坝后最小时戳中的最小值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310158502.2A CN103268251B (zh) | 2013-05-02 | 2013-05-02 | 一种基于时戳截流的并行离散事件仿真时间同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310158502.2A CN103268251B (zh) | 2013-05-02 | 2013-05-02 | 一种基于时戳截流的并行离散事件仿真时间同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103268251A CN103268251A (zh) | 2013-08-28 |
CN103268251B true CN103268251B (zh) | 2016-12-28 |
Family
ID=49011884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310158502.2A Active CN103268251B (zh) | 2013-05-02 | 2013-05-02 | 一种基于时戳截流的并行离散事件仿真时间同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103268251B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5920842B2 (ja) * | 2013-11-28 | 2016-05-18 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | シミュレーション装置、シミュレーション方法、およびプログラム |
CN103763377B (zh) * | 2014-01-24 | 2017-03-01 | 北京仿真中心 | 一种分布式仿真时间推进和消息传输的同步方法 |
CN103929769B (zh) * | 2014-05-04 | 2017-02-15 | 中国科学院微电子研究所 | 一种应用于无线通信系统仿真的调度方法及系统 |
CN104615478A (zh) * | 2014-12-31 | 2015-05-13 | 电子科技大学 | 一种用于分布式仿真的仿真推进顺序错误识别及修正方法 |
CN104615492B (zh) * | 2015-03-01 | 2017-12-19 | 中国人民解放军国防科学技术大学 | 一种多核并行离散事件仿真的内存管理方法 |
CN104866374B (zh) * | 2015-05-22 | 2018-07-06 | 北京华如科技股份有限公司 | 基于多任务的离散事件并行仿真及时间同步方法 |
CN105183536B (zh) * | 2015-09-14 | 2018-11-13 | 中国人民解放军国防科学技术大学 | 基于gpu的乐观时间管理方法 |
CN109284518A (zh) * | 2018-04-24 | 2019-01-29 | 西北工业大学 | 一种乐观时间管理方法及装置 |
CN111641470B (zh) * | 2020-05-08 | 2022-08-02 | 哈尔滨工程大学 | 一种分布式仿真的时间一致性同步方法 |
CN111651864B (zh) * | 2020-05-12 | 2023-03-17 | 北京华如科技股份有限公司 | 一种事件集中发射式多异构时间队列优化仿真执行方法及系统 |
CN111858026B (zh) * | 2020-06-10 | 2021-08-31 | 中国人民解放军海军航空大学航空作战勤务学院 | 高效的大规模多粒度仿真模型并行调度方法 |
CN112989627B (zh) * | 2021-04-16 | 2021-08-13 | 成都赢瑞科技有限公司 | 基于虚拟时间的多学科联合仿真系统和方法 |
CN113282367B (zh) * | 2021-04-30 | 2023-12-26 | 中科院计算所西部高等技术研究院 | 用于提高网络模拟器性能的时间同步方法 |
CN115037631B (zh) * | 2022-05-13 | 2023-08-22 | 北京中科晶上科技股份有限公司 | 基于集群的网络仿真方法、装置和网络仿真系统 |
CN115630937B (zh) * | 2022-12-21 | 2023-05-30 | 北京京东振世信息技术有限公司 | 物流网络仿真的时间同步方法、装置和存储介质 |
CN116882334B (zh) * | 2023-09-07 | 2023-12-15 | 深圳鲲云信息科技有限公司 | 判断仿真结束的方法及计算设备 |
-
2013
- 2013-05-02 CN CN201310158502.2A patent/CN103268251B/zh active Active
Non-Patent Citations (5)
Title |
---|
MTW: AN EMPIRICAL PERFORMANCE STUDY;Lisa M. Sokol等;《Proceedings of the 1991 Winter Simulation Conference》;19911231;第557页第1章,第558页,第2.1章 * |
PDES时间推进中乐观算法的研究与实现;苗卿等;《电脑知识与技术》;20090228;第5卷(第5期);第1185-1187页 * |
Time Wrap中反消息和回退机制的研究;王雪慧等;《计算机科学》;20090401;第36卷(第4B期);全文 * |
基于多核集群的并行离散事件仿真性能优化技术研究;陈莉丽;《中国博士学位论文全文数据库》;20110901;全文 * |
并行与分布式仿真系统中的时间管理技术研究;王雪慧;《中国博士学位论文全文数据库》;20070501;I138-53 * |
Also Published As
Publication number | Publication date |
---|---|
CN103268251A (zh) | 2013-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103268251B (zh) | 一种基于时戳截流的并行离散事件仿真时间同步方法 | |
Nolte et al. | Probabilistic worst-case response-time analysis for the controller area network | |
CN107451012B (zh) | 一种数据备份方法及流计算系统 | |
CN110231995B (zh) | 一种基于Actor模型的任务调度方法、装置及存储介质 | |
US20090178059A1 (en) | Method and system for providing consistency in processing data streams | |
CN103370691A (zh) | 管理缓冲器溢出状况 | |
CN103516580A (zh) | 一种基于消息队列实现消息接收与转发的方法及系统 | |
CN101132270B (zh) | 多节点协调的时间一致性管理方法 | |
CN104615478A (zh) | 一种用于分布式仿真的仿真推进顺序错误识别及修正方法 | |
CN105138650A (zh) | 一种基于孤立点挖掘的Hadoop数据清洗方法及系统 | |
CN112347143A (zh) | 多数据流处理方法、装置、终端及存储介质 | |
CN101950260B (zh) | 一种处理器程序调度方法及装置 | |
Garg et al. | Scalable algorithms for global snapshots in distributed systems | |
CN104615492A (zh) | 一种多核并行离散事件仿真的内存管理方法 | |
CN109672733B (zh) | 基于dag的区块链的账本同步方法及设备 | |
CN101980166B (zh) | 一种用于机群系统并行模拟的时间序列控制方法 | |
CN101854259B (zh) | 一种数据包的计数方法及系统 | |
CN105005505B (zh) | 空中多目标轨迹预测的并行处理方法 | |
CN103746878A (zh) | 一种测定SpaceWire数据包的传输时间的仿真系统 | |
CN106775984B (zh) | 一种管理线程池的方法和装置 | |
CN103077080A (zh) | 基于高性能平台的并行程序性能数据采集方法及装置 | |
CN103095595A (zh) | 一种基于单向并行多链表的网络数据管理方法及系统 | |
CN114625805B (zh) | 一种回测配置方法、装置、设备及介质 | |
CN107491359A (zh) | 一种分布式海量实时数据流灾难恢复系统及方法 | |
CN101662382A (zh) | 一种抑制网管系统中振荡告警上报的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |