Omnet++:并行化单个 运行 模拟

Omnet++: Parallelize Single Run Simulation

我正在尝试并行化我的模型(我想并行化单个配置 运行,而不是并行化 运行 多个配置)。 我正在使用 Omnet++ 4.2.2,但可能版本并不重要。

我已阅读 Omnet++ 手册的并行分布式仿真章节 原理似乎很简单: 只需将不同的 modules/submodules 分配给不同的分区即可。 按照提供的 cqn 示例

*.tandemQueue[0]**.partition-id = 0
*.tandemQueue[1]**.partition-id = 1
*.tandemQueue[2]**.partition-id = 2

如果我尝试模拟相对简单的模型,一切正常,我可以随意划分模型。 但是,当我开始 运行 模拟使用 Standardhost 模块或使用以太网互连的模块时 links 不再起作用。

如果我以 Inet 提供的示例 WiredNetWithDHCP (inet/examples/dhcp/eth) 为例,作为实验,假设我想 运行 主机位于与交换机不同的分区中 因此,我将开关分配给一个分区,将其他一切分配给另一个分区:

**.switch**.partition-id = 1
**.partition-id = 0

不同分区间隔links,有延迟,所以应该可以这样分区。 当我 运行 模型时,使用图形界面,我可以看到模型已正确分区,但连接出现某种错误,我收到以下错误消息:

during network initialization: the input/output datarates differ

显然数据速率没有差异(并且 运行 使模型按顺序完美运行),通过检查错误消息,此异常也由 link 未连接触发。确实是这样。门似乎没有正确 linked。

显然我在 Link 连接机制中遗漏了一些东西,我应该在其他地方分区吗?

由于范例的简单性,我觉得自己是个白痴,但我无法自己解决这个问题

只是为了提供反馈, 似乎不能直接完成,简而言之,不能将完整的 INET 并行化,因为它在某些地方使用了全局变量。 在这种特殊情况下,mac 地址分配是问题之一(使用全局变量),因此无法并行化 eth 接口。

有关详细信息,请参阅本文解释为什么这是不可能的:

对于reference/possible解决方案参考亚琛大学的作者网页,在那里你可以下载可以并行化的omnet++和INET的完整副本: