admin 管理员组

文章数量: 887021


2024年2月25日发(作者:docker的核心概念)

并行分布式仿真

第15章

一个事件的计算强度。P独立于模型的大小,依赖于仿真模型的种类和计算机的性能,P通常在20 000~500 000 ev/sec范围内。

• E(event density)是每个仿真秒发生的事件的数量(ev/simsec)。E仅依赖于模型,而不是模型在哪执行。E通过大小、详细的层次、以及仿真系统的类别决定(比如单元层次ATM模型产生比调用集中仿真更高的E值)。

• R(relative speed)测量每秒仿真时间前进多少(simsec/sec)。R强烈依赖于模型和模型执行的软/硬件环境。注意R = P/E。

• L(lookahead)是仿真秒测量(simsec)。当仿真通信网络使用连接延迟预测未来时,L通常在msimsec~μsimsec范围内。

• τ(latency)表现了并行仿真硬件的特点(sec)。τ是从一个LP发送消息至另一个LP的时间。τ可以使用简单基准程序决定。作者在Linux的集群上测量,通过一个100M以太网,使用MPI获得τ=22μs,与[OF00]是一致的测量。特殊的硬件,如Quadrics Interconnect [qua]可以达到τ=5μs或更好。

在大的仿真模型中,P、E和R通常相对固定(即在时间上显示很少的波动)。他们也很直观,易于测量。当仿真运行时,OMNeT++在GUI显示它们的值,如图15-1所示。Cmdenv也可以配置显示这些值。

图15-1 OMNeT++展示P、R和E的性能

在有了P、E、L和τ的近似值之后,就可以计算λ耦合因子,其值为LE和τP的比率。

λ = (LE) / (τP)

不考虑细节,如果产生的λ值在大于1的最小值附近,而且是在10~100范围内,那么当并行运行时,仿真可以很好地工作。如果λ < 1,则性能欠佳。

15.3 OMNeT++支持的并行分布仿真

15.3.1 概述

本章提出了OMNeT++并行仿真的结构。这种设计允许代码不做任何改变,仅使用一些简单配置,就能使仿真模型并行运行。实现依赖于占位符模块和代理网关的方法,在不同的LP上示例模型,占位符方法允许仿真技术不修改即可以PDES工作,如拓扑发现和定向消息发送。这个结构是模块化和可扩展的,因而可以作为一个框架,用于研究并行仿真。

OMNeT++设计强调模型从实验中分离。主要的原理是通常大量的仿真实验,在得到现实系统的结论之前,需要在单个模型上完成。实验通常是ad-hoc,改变速度比仿真模型快,因而在不扰乱仿真本身的情况下运行实验是自然的需求。不需要特殊的源代码-

213

-

OMNeT++与网络仿真

工具或拓扑描述,如分割或其他PDES配置完全在配置文件中描述。

OMNeT++支持静态拓扑的Null消息算法,使用连接延迟作为预测。Null消息发送的速度可以调整。同样支持的还有Ideal Simulation Protocol (ISP),其是由Bagrodia在2000年提出的。ISP是一个测量PDES算法有效性的(包括乐观的和保守的)有力的研究工具;更确切地说,它有助于通过特定模型和仿真环境的PDES算法,确定可达到的最高加速度。在OMNeT++中,ISP可以用于Null消息算法实现的基准。另外,模型执行可以不需要任何的同步,这对于教研目的(演示需要同步)或简单的测试是很有用的。

对于LP(逻辑处理)之间的通信,OMNeT++通常使用MPI,消息传递接口标准。另一个通信机制是基于命名管道、用于共享存储的多处理器,不需要安装MPI。另外,基于通信机制的文件系统也是可用的。它通过创建在共享目录中的文本文件通信,可以用于教研的目的(在PDES算法中,分析或演示消息)或调试PDES算法。基于共享内存通信机制的实现,是今后的计划,完全利用多处理的能力,不需要安装MPI的花销。

几乎每个模型都可以并行化运行,包含以下模型。

• 模块仅通过发送消息通信(没有直接的方法调用或成员访问),除非映射至相同的处理器;

• 没有全局变量;

• 在直接发送的时候有一些限制(不能发送至其他模块的子模块,除非映射至相同的处理器);

• 预测必须以连接延迟的形式表示;

• 目前只支持静态拓扑(我们研究工程的目的是消除这个限制)。

在OMNeT++中支持的PDES具有模块化和可扩展的结构。新的通信机制可以通过实现一个补充的API(特殊的C++类)来添加和注册实现,在这之后,新的通信机制可以在配置中选择使用。

新的PDES同步算法可以用类似的方法添加。PDES算法也由C++类表示,必须实现一个非常小的API与仿真内核整合。在各个LP上设置模型,以及关注通过LP的中继模型消息,不是该同步算法实现需要关心的(然而需要的话可以介入,因为这样可以提供必要的hook)。

Null消息算法的实现其本身也是模块化的,因而lookahead发现可以通过定义的API插入,当前使用连接延迟来实现lookahead发现,但是也可以实现更复杂的算法,并在配置中进行选择。

15.3.2 并行仿真案例

我们将使用并行仿真例子CQN来演示OMNeT++的PDES性能。模块包括N个一前一后的队列,每个队列都由一个开关,k个指数服务时间的单服务器队列(如图15-2所示)组成。队列最后一个循环至开关入口。每个开关按照均匀分布,随机选择目的队列中的一个作为第一个队列。队列和开关与非0传播延迟的连接相连接。关于CQN的OMNeT++模型将相继被封装至复合模块中。

为了并行运行模型,我们为每个队列分配不同的LP(如图15-3所示),在标记的连接上,通过延迟提供Lookahead。

-

214

-


本文标签: 模型 算法 消息 并行 实现