Omnet ++: распараллеливание однократного моделирования

Я пытаюсь распараллелить свою модель (я хочу распараллелить один запуск конфигурации, а не запускать несколько конфигураций параллельно). Я использую 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, мне нужно разделить где-нибудь еще?

Из-за простоты парадигмы чувствую себя идиотом, но самостоятельно решить эту проблему не могу.


person Oxy Re    schedule 28.10.2015    source источник


Ответы (1)


Просто чтобы дать обратную связь. Кажется, что напрямую это невозможно сделать, а не весь INET, как он, можно вкратце распараллелить, потому что он использует глобальные переменные в некоторых местах. в этом конкретном случае одной из проблем является назначение MAC-адресов (используется глобальная переменная), поэтому интерфейс eth нельзя распараллелить.

для получения более подробной информации обратитесь к этому документу, объясняющему, почему это невозможно:

Для справки / возможного решения обратитесь к веб-странице авторов из аахенского университета, где вы можете загрузить полную копию omnet ++ и INET, которая может быть распараллелена:

person Oxy Re    schedule 25.11.2015