我试图并行化我的模型(我希望并行化单个配置运行,而不是并行运行多个配置)。 我使用的是Omnet ++ 4.2.2,但版本可能并不重要。
我已经阅读了Omnet ++手册的并行分布式仿真章节 原则似乎很简单: 只需将不同的模块/子模块分配给不同的分区。 按照提供的cqn示例
*.tandemQueue[0]**.partition-id = 0
*.tandemQueue[1]**.partition-id = 1
*.tandemQueue[2]**.partition-id = 2
如果我尝试模拟相对简单的模型,一切正常,我可以根据愿望对模型进行分区。 但是,当我开始运行使用Standardhost模块的模拟,或者使用以太网链接互连的模块时,这些模块不再起作用。
如果我以Inet提供的示例WiredNetWithDHCP(inet / examples / dhcp / eth)为例,假设我想在与交换机不同的分区中运行主机 因此,我将交换机分配给一个分区,将其他所有内容分配给另一个分区:
**.switch**.partition-id = 1
**.partition-id = 0
不同的分区由链接分隔,有延迟,因此应该可以这种方式进行分区。 当我运行模型时,使用图形界面,我可以看到模型被正确分区,但连接有点错误,我得到以下错误信息:
during network initialization: the input/output datarates differ
显然数据不同(并且运行模型顺序完美),通过检查错误消息,此异常也是由未连接的链接触发的。这确实发生了什么。似乎门没有正确连接。
显然我在Link连接机制中遗漏了一些东西,我应该在其他地方进行分区吗?
由于范式的简单,我觉得自己是个白痴,但我自己无法解决这个问题
答案 0 :(得分:0)
只是提供反馈, 它似乎直接无法完成,而不是完整的INET,因为它可以简单地并行化,因为它在某些地方使用全局变量。 在这种特殊情况下,mac地址分配是问题之一(使用全局变量),因此eth接口不能并行化。
有关详细信息,请参阅本文解释为何无法做到这一点:
有关参考/可能的解决方案,请参阅亚琛大学的作者网页,您可以在该网页下载可并行化的omnet ++和INET的完整副本: