diff options
author | Gabor Dozsa <gabor.dozsa@arm.com> | 2016-01-07 16:33:47 -0600 |
---|---|---|
committer | Gabor Dozsa <gabor.dozsa@arm.com> | 2016-01-07 16:33:47 -0600 |
commit | 64ca31976fe91eedd91b2d703c6e3e62328f8e1d (patch) | |
tree | aaadab6dfd5d45a7d8794d2033d8ec1b9f845b37 /configs | |
parent | 5dec4e07b89786aa67ce64aadeeb14c81b3977b3 (diff) | |
download | gem5-64ca31976fe91eedd91b2d703c6e3e62328f8e1d.tar.xz |
config: Updates for distributed gem5 simulations
Diffstat (limited to 'configs')
-rw-r--r-- | configs/common/FSConfig.py | 36 | ||||
-rw-r--r-- | configs/common/Options.py | 31 | ||||
-rw-r--r-- | configs/example/fs.py | 12 |
3 files changed, 79 insertions, 0 deletions
diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py index 0f63ec9e7..004d06d55 100644 --- a/configs/common/FSConfig.py +++ b/configs/common/FSConfig.py @@ -654,3 +654,39 @@ def makeDualRoot(full_system, testSystem, driveSystem, dumpfile): self.etherlink.dump = Parent.etherdump return self + + +def makeDistRoot(testSystem, + rank, + size, + server_name, + server_port, + sync_repeat, + sync_start, + linkspeed, + linkdelay, + dumpfile): + self = Root(full_system = True) + self.testsys = testSystem + + self.etherlink = DistEtherLink(speed = linkspeed, + delay = linkdelay, + dist_rank = rank, + dist_size = size, + server_name = server_name, + server_port = server_port, + sync_start = sync_start, + sync_repeat = sync_repeat) + + if hasattr(testSystem, 'realview'): + self.etherlink.int0 = Parent.testsys.realview.ethernet.interface + elif hasattr(testSystem, 'tsunami'): + self.etherlink.int0 = Parent.testsys.tsunami.ethernet.interface + else: + fatal("Don't know how to connect DistEtherLink to this system") + + if dumpfile: + self.etherdump = EtherDump(file=dumpfile) + self.etherlink.dump = Parent.etherdump + + return self diff --git a/configs/common/Options.py b/configs/common/Options.py index 45be8e2f8..d5671f311 100644 --- a/configs/common/Options.py +++ b/configs/common/Options.py @@ -297,10 +297,41 @@ def addFSOptions(parser): # Benchmark options parser.add_option("--dual", action="store_true", help="Simulate two systems attached with an ethernet link") + parser.add_option("--dist", action="store_true", + help="Parallel distributed gem5 simulation.") + parser.add_option("--is-switch", action="store_true", + help="Select the network switch simulator process for a"\ + "distributed gem5 run") + parser.add_option("--dist-rank", default=0, action="store", type="int", + help="Rank of this system within the dist gem5 run.") + parser.add_option("--dist-size", default=0, action="store", type="int", + help="Number of gem5 processes within the dist gem5 run.") + parser.add_option("--dist-server-name", + default="127.0.0.1", + action="store", type="string", + help="Name of the message server host\nDEFAULT: localhost") + parser.add_option("--dist-server-port", + default=2200, + action="store", type="int", + help="Message server listen port\nDEFAULT: 2200") + parser.add_option("--dist-sync-repeat", + default="0us", + action="store", type="string", + help="Repeat interval for synchronisation barriers among dist-gem5 processes\nDEFAULT: --ethernet-linkdelay") + parser.add_option("--dist-sync-start", + default="5200000000000t", + action="store", type="string", + help="Time to schedule the first dist synchronisation barrier\nDEFAULT:5200000000000t") parser.add_option("-b", "--benchmark", action="store", type="string", dest="benchmark", help="Specify the benchmark to run. Available benchmarks: %s"\ % DefinedBenchmarks) + parser.add_option("--ethernet-linkspeed", default="10Gbps", + action="store", type="string", + help="Link speed in bps\nDEFAULT: 10Gbps") + parser.add_option("--ethernet-linkdelay", default="10us", + action="store", type="string", + help="Link delay in seconds\nDEFAULT: 10us") # Metafile options parser.add_option("--etherdump", action="store", type="string", dest="etherdump", diff --git a/configs/example/fs.py b/configs/example/fs.py index dddb2ea3c..6ee969a6e 100644 --- a/configs/example/fs.py +++ b/configs/example/fs.py @@ -340,6 +340,18 @@ test_sys = build_test_system(np) if len(bm) == 2: drive_sys = build_drive_system(np) root = makeDualRoot(True, test_sys, drive_sys, options.etherdump) +elif len(bm) == 1 and options.dist: + # This system is part of a dist-gem5 simulation + root = makeDistRoot(test_sys, + options.dist_rank, + options.dist_size, + options.dist_server_name, + options.dist_server_port, + options.dist_sync_repeat, + options.dist_sync_start, + options.ethernet_linkspeed, + options.ethernet_linkdelay, + options.etherdump); elif len(bm) == 1: root = Root(full_system=True, system=test_sys) else: |