Я пытаюсь распараллелить свою модель (я хочу распараллелить один запуск конфигурации, а не запускать несколько конфигураций параллельно). Я использую Omnet ++ 4.2.2, но, вероятно, версия не имеет значения.
Я прочитал главу «Параллельное распределенное моделирование» в руководстве Omnet ++, и принцип кажется очень простым: просто назначьте разные модули / подмодули разным разделам. Следуя приведенному примеру cqn
*.tandemQueue[0]**.partition-id = 0
*.tandemQueue[1]**.partition-id = 1
*.tandemQueue[2]**.partition-id = 2
Если я попытаюсь смоделировать относительно простые модели, все будет работать нормально, я могу разделить модель по желанию. Однако, когда я начинаю запускать симуляцию, использующую модуль Standardhost или модули, которые связаны между собой с помощью каналов Ethernet, это больше не работает.
Если я возьму, например, предоставленный Inet пример WiredNetWithDHCP (inet / examples / dhcp / eth) в качестве эксперимента, скажем, я хочу запускать хосты в другом разделе, чем переключатель, поэтому я назначаю переключатель разделу, а все остальное - другому :
**.switch**.partition-id = 1
**.partition-id = 0
Разные разделы разделены ссылками, есть задержка, поэтому такое разделение должно быть возможно. Когда я запускаю модель с помощью графического интерфейса, я вижу, что модель правильно разбита на разделы, однако соединения почему-то неправильные, и я получаю следующее сообщение об ошибке:
during network initialization: the input/output datarates differ
очевидно, что данные не различаются (и последовательное выполнение модели работает отлично), при проверке сообщения об ошибке это исключение запускается также по не подключенной ссылке. Это действительно так. Кажется, что ворота неправильно связаны.
Ясно, что мне что-то не хватает в механизме подключения Link, мне нужно разделить где-нибудь еще?
Из-за простоты парадигмы чувствую себя идиотом, но самостоятельно решить эту проблему не могу.