2
votes

I'm trying to parallelize my model (I want to parallelize a single config run, not run multiple configs in parallel). I'm using Omnet++ 4.2.2, but probably the version doesn't matter.

I've read the Parallel Distributed Simulation chapter of the Omnet++ manual and the principle seems very straightforward: simply assign different modules/submodules to different partitions. Following the provided cqn example

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

If I try to simulate relatively simple models everything works fine I can partition the model at wish. However, when I start to run simulation that use Standardhost module, or modules that are interconnected using ethernet links that doesn't work anymore.

If i take for example the Inet provided example WiredNetWithDHCP (inet/examples/dhcp/eth), as experiment, lets say I want to run hosts in a different partition than the switch I therefore assign the switch to a partition and everything else to another:

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

The different partitions are separated by links, there is delay, and therefore it should be possible to partition this way. When I run the model, using the graphic interface, I can see that the model is correctly partitioned however the connections are somehow wrong and i get the following error message:

during network initialization: the input/output datarates differ

clearly datarates don't differ (and running the model sequentially works perfectly), by checking the error message this exception is triggered also by link not connected. This is indeed what happen. It seems that the gates are not correctly linked.

Clearly I'm missing something in the Link connection mechanism, should I partition somewhere else?

Due to the simplicity of the paradigm I feel like being an idiot but I'm not able to solve this issue by myself

1

1 Answers

0
votes

Just to give a feedback, It seems that directly it cannot be done, not the full INET as it is can be parallelized in short because it uses global variables in some places. in this particular case, mac addresses assignment are one of the issues (uses a global variable), hence eth interface cannot be parallelized.

for more details refer to this paper explaining why this is not possible:

For reference/possible solution refer to authors webpage from aachen university, where you can download a complete copy of omnet++ and INET that can be parallelized: