- 引言:并行与分布式仿真 (PADS) 简介
- 历史视角
- 应用领域
- 时间定义
- 减少执行时间的方法
- 并行离散事件仿真
- 逻辑过程
- PDES 示例(机场)
- 同步问题
背景介绍
离散事件仿真基础
离散事件仿真:一个系统的计算机模型,系统状态的变化在仿真时间的离散点上发生。 基本概念:
系统状态(状态变量)
- 状态转换(事件)
- 仿真时间:一组完全有序的值集合,代表被模拟系统(物理系统)中的时间
- 仿真器维护一个仿真时间时钟
一个离散事件仿真计算可以视为一系列事件计算的序列
每个事件计算包含一个(仿真时间的)时间戳,指示该事件在物理系统中发生的时间。
每个事件计算可能:
(1) 修改状态变量,和/或
(2) 将新事件安排到模拟的未来中。
离散事件仿真计算 示例:机场的空中交通 事件:飞机到达、降落、离开
- 未处理的事件存储在未来事件列表中
- 按时间戳顺序处理事件
离散事件仿真计算
- 未处理的事件存储在未来事件列表中
- 事件按时间戳顺序处理
离散事件仿真系统
面向事件的世界观
示例:机场的空中交通
模拟飞机的到达和离开,到达队列 单一跑道用于进场飞机,忽略离场队列
- R = 每架降落飞机使用跑道的时间(常数)
- G = 离开前在地面所需的时间(常数)
状态:
- Now:当前仿真时间
- InTheAir:降落或等待降落的飞机数量
- OnTheGround:已降落的飞机数量
- RunwayFree:布尔值,如果跑道可用则为真
事件:
- Arrival:表示飞机到达机场空域
- Landed:表示飞机降落
- Departure:表示飞机离开
到达事件
新飞机到达机场。如果跑道是空的,它将开始降落。否则,飞机必须盘旋,等待降落。
- R = 每架降落飞机使用跑道的时间
- G = 离开前在地面所需的时间
- Now:当前仿真时间
- InTheAir:降落或等待降落的飞机数量
- OnTheGround:已降落的飞机数量
- RunwayFree:布尔值,如果跑道可用则为真
降落事件/离场事件
一架飞机已完成降落
一架现在在地面上的飞机出发前往新的目的地
应用:在线决策辅助
仿真工具用于在时间紧迫的情况下快速分析备选行动方案
- 从情况数据库初始化仿真
- 超过实时的执行速度来评估决策的效果
应用领域:空中交通控制,战场管理
仿真结果可能只需要几秒钟
并行与分布式仿真简介
什么是并行与分布式仿真 (PADS)?
并行(分布式)仿真指的是在包含多个处理器的计算系统上执行计算机仿真的技术
- 紧密耦合的多处理器系统
- 通过网络(例如,互联网)相连的工作站
- 具有无线链接的手持计算机
并行与分布式计算机
并行计算机(紧密耦合处理器)
- 共享内存多处理器
- 分布式内存多计算机
分布式计算机(松散耦合处理器)
- 网络工作站
并行和仿真模拟
并行仿真涉及在一组紧密耦合的处理器(例如,共享内存多处理器)上执行单一仿真程序
复制试验涉及在不同处理器上同时执行几个独立的仿真
分布式仿真涉及在一组松散耦合的处理器(例如,通过局域网或广域网相连的PC)上执行单一仿真程序。
独立与联合仿真系统
使用并行/分布式仿真的原因
使得可以执行耗时的仿真,否则无法进行(例如,互联网的仿真)
- 减少模型执行时间(与处理器数量成比例)
- 能够运行更大的模型(更多内存)
使仿真能够用作时间关键决策过程中的预测工具(例如,空中交通控制)
- 实时执行用于何如果验
- 仿真结果可能在几秒钟内需要
创建分布式虚拟环境,可能包括在远程地理位置的用户(例如,培训,娱乐)
- 实时执行能力
- 可扩展性能能够满足许多用户和仿真实体
容错性
- 在单个处理器上,处理器故障意味着整个仿真必须停止
示例:使能大型模型的仿真
ATM(分组)网络的单元级仿真
- 模拟网络运行一小时
- 1000个链接的网络
- 155 Mbits/秒链接@20%利用率
- 53字节数据包(单元)
- 每次单元传输(链接)一个仿真器事件
- 每秒500 K事件仿真器速度
单次仿真运行150小时!
- 更大,更复杂的网络?下一代互联网:百万节点
- 更高的链接带宽
历史视角
应用领域
- 军事应用 - 战争游戏仿真,训练环境,测试与评估(DIS/HLA)
- 娱乐
- 社交互动和商务合作
- 教育和培训
- 电信网络
- 数字逻辑电路和计算机系统
- 交通运输
主要应用领域
并行离散事件仿真(PDES)
- 使用离散事件仿真分析系统
- 快速模型执行(尽可能快)
- 产生与顺序执行相同的结果
- 典型应用
- 电信网络
- 计算机系统
- 交通系统
- 军事策略和战术
分布式虚拟环境(DVEs)
- 网络化的交互式,沉浸式环境
- 可扩展的,实时性能
- 创建看起来真实的虚拟世界
- 典型应用
- 培训
- 娱乐
- 社交互动
时间定义
- 物理时间指的是物理系统中的时间
- 仿真时间是仿真用来模拟物理时间的抽象概念。它是一组完全有序的值集合,其中每个值代表被模拟的物理系统中的一个瞬间 对于任意两个表示瞬间P1的仿真时间T1和表示P2的T2:
- 正确的时间瞬间顺序
- 如果T1 < T2,则P1发生在P2之前
- 9.0代表晚上9点,10.5代表晚上10点30分
- 正确的时间持续时间表示
- T2 - T1 = k (P2 - P1) 对于某个常数k
- 仿真时间中的1.0代表1小时的物理时间
- 墙钟时间指的是仿真程序执行期间的时间。仿真程序通常通过读取某个操作系统维护的硬件时钟来获取墙钟时间的当前值。
时间
- 物理时间:物理系统中的时间
- 2023年12月31日中午到2024年1月1日中午
- 仿真时间:仿真内部对物理时间的表示
- 在区间[0.0, 24.0]内的浮点值
- 墙钟时间:仿真执行期间的时间,通常来自硬件时钟的输出(例如,GPS)
- 2024年3月1日上午9:00到上午9:15
按进度执行与非按进度执行
执行模式
- 尽可能快地执行(非按进度):仿真时间的推进和墙钟时间的推进之间没有固定的关系
- 实时执行(按进度):仿真时间的每次推进都与墙钟时间的等量推进同步进行
- 按比例的实时执行(按进度):仿真时间的每次推进都与墙钟时间的S倍推进同步进行(例如,2倍墙钟时间) 、
这里,重点是尽可能快地执行;通过插入延迟可以按进度执行,以实时(或按比例的实时)运行
减少仿真执行时间的其他方法
(a) 使用并行编译器 (忽略了问题的结构,因此只利用了一小部分可用的并行性)
(b) 在不同处理器上执行单独的仿真运行 (每个处理器必须包含整个仿真程序所需的足够内存,仿真参数必须独立)
(c) 使用专用功能单元(可能是硬件)来实现特定的顺序仿真功能,例如,事件列表操作、更高效的数据结构、随机数生成。(速度提升有限)
(d) 维护一个全局事件列表,当处理器可用时,它可以处理列表中的下一个事件。(如果全局列表太小而处理器数量太大,这将成为瓶颈,并且必须处理因果错误)
(e) 使用仿真模型的分层分解,允许由几个子事件组成的事件能够并发处理。(所有处理器(p)只有在生成p个子事件时才会被利用)
并行离散事件仿真
- 仿真在顺序机器上消耗大量时间。
- 表示一个问题领域,通常包含大量的并行性,但在实践中令人惊讶地难以并行化。
- PDES通过将仿真应用分解为一组并发执行的过程,并通过在不同处理器上并发执行事件来利用仿真并行性。
- 因此,一个并行离散事件仿真程序可以被视为在不同处理器上执行的一组顺序离散事件仿真程序的集合,这些程序通过发送时间戳消息相互通信。
- “发送消息”与“调度事件”同义。
- 在异步系统的仿真中,事件不是由全局时钟同步的,而是在不规则的时间间隔发生。事件在模拟时间的不同点并发执行。这一要求引入了同步问题,这是PDES问题的核心。
- 如果我们延续顺序仿真执行范式,至关重要的是选择事件列表中时间戳最小的事件作为下一个执行,以防止模拟一个未来可以影响过去的系统。我们称这种性质的错误为因果错误。
- 问题 — 我们必须选择n个事件(假设并行计算机中有n个处理器)进行执行,并确保没有因果错误。
- PDES的基本困境
- 必须执行的计算的顺序是相对的。这通常相当复杂且高度依赖于具体问题。
- 如何决定n个事件是否可以并发执行?在不实际进行仿真的情况下,我们如何知道事件之间是否相互影响?
事件执行约束
在模拟系统被分割之后,事件的执行遵循两个顺序约束:
约束1:如果两个事件被安排在同一个过程中,具有较小时间戳的事件必须在具有较大时间戳的事件之前执行。
约束2:如果在一个过程中执行的事件导致在另一个过程中调度另一个事件,则前者必须在后者之前执行。
PDES机制的两类
- 保守方法:避免因果错误的发生。基本问题是确定何时安全地处理事件。
- 乐观方法:检测因果错误,并调用回滚机制进行恢复。
建模和仿真 - 逻辑过程
物理系统被视为由某些数量的物理过程组成,这些过程以某种方式相互作用。每个物理过程由一个逻辑过程(LP)建模,物理过程之间的相互作用通过在相应的逻辑过程之间交换时间戳消息来建模。
逻辑过程仿真的概念
仿真模型的空间分解 ⇒ 逻辑过程
- 一组LP被设计为同步或异步并行执行事件发生。
- 通信系统(CS)提供交换本地数据/同步本地活动的可能性。
- 每个LPi被分配了一个作为仿真模型的一部分的区域Ri。SEi在Ri上以事件驱动模式操作,执行本地(并生成远程)事件发生,推进本地时钟(本地虚拟时间,LVT)。
- 每个LPi(SEi)仅能访问静态划分的状态变量子集Si ⊂ S,与分配给其他LPs的状态变量不相交。
- 每个LPi处理两种事件: 内部事件仅对Si ⊂ S有因果影响 外部事件也影响Sj ⊂ S (i≠j),其他LPs的本地状态。
- 附加到SE的通信接口CIi负责将因事件引起的影响传播给远程LPs模拟,并将远程LPs产生的因果影响适当包含到本地仿真中。 两种方法:保守的,乐观的
- 主要机制是发送,接收和处理附带发送时刻发送者LVT副本的事件消息。
并行离散事件仿真示例
- 模拟一个机场网络
- 每个机场模拟器封装在一个逻辑过程中
- 逻辑过程可以为其他逻辑过程调度事件(发送消息) 更广泛地...
- 物理系统
- 互动的物理过程集合(机场)
- 仿真
- 逻辑过程(LPs)的集合
- 每个LP模拟一个物理过程
- 通过在LPs之间调度事件来模拟物理过程之间的相互作用
并行/分布式执行的方法
- LP范式似乎非常适合并行执行
- 将LPs映射到不同的处理器上
- 每个处理器上有多个LP也可以
- 通过消息传递进行通信
- 所有交互通过消息
- 无共享状态变量
“规则”
每个过程的黄金规则:“你必须按时间戳顺序处理传入消息”(本地因果性约束)
同步问题
本地因果性约束:每个逻辑过程中的事件必须按时间戳顺序处理。需要一个算法来确保每个LP按TSO(时间戳顺序)处理事件。
观察:遵循本地因果性约束足以确保并行仿真将产生与相应的顺序仿真完全相同的结果*
同步(时间管理)算法
- 保守同步:避免违反本地因果性约束(等待直到安全)
- 第一代:空消息(Chandy/Misra/Bryant)
- 第二代:下一个事件的时间戳
- 乐观同步:允许本地因果性违规发生,但在运行时检测到它们,并使用回滚机制进行恢复
- 时间扭曲(Time Warp,Jefferson)
- 限制乐观执行量的方法
- 前提是具有相同时间戳的事件在顺序执行中被处理的顺序相同
总结
- 将仿真执行分布到多台计算机上的原因包括
- 性能
- 地理分布
- 系统集成更容易(互操作性),重用
- 并行/分布式仿真技术在不同的研发社区中大体上是独立发展的
- 高性能计算
- 国防
- 互联网和游戏
- 并行离散事件仿真
- 可能运行在不同处理器上的顺序仿真器(LPs)的集合
- 逻辑过程仅通过交换消息进行通信
- 同步问题