运行并行仿真(使用命令行)

时间:2015-06-01 10:20:13

标签: omnet++

如何使用不同的配置运行模拟?我使用的是omnet ++版本4.6

我的omnetpp.ini文件如下所示:

[General]

[Config Dcn2]

network = Dcn2

# leaf switch
#**.down_port = 2
**.up_port = 16 #12   # 4

# spine switch
**.port =  28 # 20 #2048

# crossconnect
**.cross_down_port = 28 # 20 #2048
**.cross_up_port = 28 # 20 #2048

# to set destination of packet
**.number_leaf_switch = 28 # 20 #2048

# link speed
#**.switch_switch_link_speed = 40 Mbps


**.interArrivalTime = ${exponential(.0001),exponential(0.0002),exponential(0.0003)}   

**.batch_length = 10
**.buffer_length = 10

sim-time-limit = 1000s

我想使用interArrivalTime的不同值运行代码。但我既不能运行不同的配置(一个接一个),也不能在不同的内核上并行运行单独的运行。

我在运行配置中尝试使用cmdev选项,但不同的运行与第一个运行不同。当我尝试提到多个进程的数量时,也只有第一次运行被模拟。我真的找不出原因。

1 个答案:

答案 0 :(得分:4)

配置Examinataion

在您的情况下,您可以执行配置检查。 OMNeT ++为此提供了不同的选择。它们在OMNeT ++手册的Parameter Studies部分进行了解释。

因此,您可以尝试以下选项之一来检查配置,从而配置文件:

  • ./run –a - 将显示omnet.ini
  • 中的所有配置
  • ./run -x <config_name> - 将提供有关特定配置的更多信息
  • ./run -x <config_name> -g - 查看配置的所有组合

首先,您必须导航到示例文件夹,然后执行上述命令之一。

我执行了./run -x Dcn2 -g并获得了以下结果

OMNeT++ Discrete Event Simulation  (C) 1992-2014 Andras Varga, OpenSim Ltd.
Version: 4.6, build: 141202-f785492, edition: Academic Public License -- NOT FOR COMMERCIAL USE
See the license for distribution terms and warranty disclaimer
Setting up Tkenv...

Config: Dcn2
Number of runs: 3
Run 0: $0=exponential(.0001), $repetition=0
Run 1: $0=exponential(0.0002), $repetition=0
Run 2: $0=exponential(0.0003), $repetition=0

End.

这确实证实了您尝试修改的模拟参数有3种不同的运行。但是,默认情况下,您为interArrivalTime参数使用的变量名称已分配给$0,因为您尚未指定它。

如果您在配置中更改以下行:

**.interArrivalTime = ${exponential(.0001),exponential(0.0002),exponential(0.0003)}

**.interArrivalTime = ${interArrivalTime = exponential(0.0001),exponential(0.0002),exponential(0.0003)}

您将获得./run -x Dcn2 -g

的更具描述性的输出

运行配置的不同运行:

下一步是为您的配置运行不同的运行。您可以通过导航到示例目录并执行:

来实现
./run -c <config-name> -r <run-number> -u Cmdenv

请注意,<config-name>对您来说是Dcn2,而-r指定您要执行的上述运行。

换句话说,您可以打开三个终端窗口并导航到示例目录并执行:

  1. ./run -c Dcn2 -r 0 -u Cmdenv - for interArrivalTime = exponential(0.0001)
  2. ./run -c Dcn2 -r 1 -u Cmdenv - for interArrivalTime = exponential(0.0002)
  3. ./run -c Dcn2 -r 2 -u Cmdenv - for interArrivalTime = exponential(0.0003)
  4. 区分不同的运行结果

    为了能够区分给定配置的不同运行的输出结果文件,您可以修改输出文件的默认名称。

    &#34;操作方法&#34;在OMNeT ++手册的 12.2.3结果文件名部分中给出。

    output-vector-file = "${resultdir}/${configname}-${runnumber}.vec"
    output-scalar-file = "${resultdir}/${configname}-${runnumber}.sca"
    

    默认情况下,您可以看到输出文件将由${runnumber}变量区分。您可以通过将interArrivalTime添加到输出文件名来进一步改进它。

    示例:

    output-scalar-file = "${resultdir}/${configname}-${runnumber}-IAtime=${interArrivalTime}.sca/vec"
    

    我没有测试最终方法。所以你可能会在路径上遇到一些错误。