config: Switch from the print statement to the print function.
Change-Id: I701fa58cfcfa2767ce9ad24da314a053889878d0 Reviewed-on: https://gem5-review.googlesource.com/8762 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com> Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
@@ -26,6 +26,8 @@
|
|||||||
#
|
#
|
||||||
# Authors: Ali Saidi
|
# Authors: Ali Saidi
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
from SysPaths import script, disk, binary
|
from SysPaths import script, disk, binary
|
||||||
from os import environ as env
|
from os import environ as env
|
||||||
from m5.defines import buildEnv
|
from m5.defines import buildEnv
|
||||||
@@ -63,8 +65,8 @@ class SysConfig:
|
|||||||
elif buildEnv['TARGET_ISA'] == 'sparc':
|
elif buildEnv['TARGET_ISA'] == 'sparc':
|
||||||
return env.get('LINUX_IMAGE', disk('disk.s10hw2'))
|
return env.get('LINUX_IMAGE', disk('disk.s10hw2'))
|
||||||
else:
|
else:
|
||||||
print "Don't know what default disk image to use for %s ISA" % \
|
print("Don't know what default disk image to use for %s ISA" %
|
||||||
buildEnv['TARGET_ISA']
|
buildEnv['TARGET_ISA'])
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
def rootdev(self):
|
def rootdev(self):
|
||||||
|
|||||||
@@ -41,13 +41,15 @@
|
|||||||
# Configure the M5 cache hierarchy config in one place
|
# Configure the M5 cache hierarchy config in one place
|
||||||
#
|
#
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import m5
|
import m5
|
||||||
from m5.objects import *
|
from m5.objects import *
|
||||||
from Caches import *
|
from Caches import *
|
||||||
|
|
||||||
def config_cache(options, system):
|
def config_cache(options, system):
|
||||||
if options.external_memory_system and (options.caches or options.l2cache):
|
if options.external_memory_system and (options.caches or options.l2cache):
|
||||||
print "External caches and internal caches are exclusive options.\n"
|
print("External caches and internal caches are exclusive options.\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if options.external_memory_system:
|
if options.external_memory_system:
|
||||||
@@ -57,7 +59,7 @@ def config_cache(options, system):
|
|||||||
try:
|
try:
|
||||||
from cores.arm.O3_ARM_v7a import *
|
from cores.arm.O3_ARM_v7a import *
|
||||||
except:
|
except:
|
||||||
print "O3_ARM_v7a_3 is unavailable. Did you compile the O3 model?"
|
print("O3_ARM_v7a_3 is unavailable. Did you compile the O3 model?")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
dcache_class, icache_class, l2_cache_class, walk_cache_class = \
|
dcache_class, icache_class, l2_cache_class, walk_cache_class = \
|
||||||
|
|||||||
@@ -35,6 +35,8 @@
|
|||||||
#
|
#
|
||||||
# Authors: Andreas Sandberg
|
# Authors: Andreas Sandberg
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
from m5 import fatal
|
from m5 import fatal
|
||||||
import m5.objects
|
import m5.objects
|
||||||
import inspect
|
import inspect
|
||||||
@@ -64,23 +66,23 @@ def get(name):
|
|||||||
cpu_class = _cpu_classes[name]
|
cpu_class = _cpu_classes[name]
|
||||||
return cpu_class
|
return cpu_class
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print "%s is not a valid CPU model." % (name,)
|
print("%s is not a valid CPU model." % (name,))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def print_cpu_list():
|
def print_cpu_list():
|
||||||
"""Print a list of available CPU classes including their aliases."""
|
"""Print a list of available CPU classes including their aliases."""
|
||||||
|
|
||||||
print "Available CPU classes:"
|
print("Available CPU classes:")
|
||||||
doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t")
|
doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t")
|
||||||
for name, cls in _cpu_classes.items():
|
for name, cls in _cpu_classes.items():
|
||||||
print "\t%s" % name
|
print("\t%s" % name)
|
||||||
|
|
||||||
# Try to extract the class documentation from the class help
|
# Try to extract the class documentation from the class help
|
||||||
# string.
|
# string.
|
||||||
doc = inspect.getdoc(cls)
|
doc = inspect.getdoc(cls)
|
||||||
if doc:
|
if doc:
|
||||||
for line in doc_wrapper.wrap(doc):
|
for line in doc_wrapper.wrap(doc):
|
||||||
print line
|
print(line)
|
||||||
|
|
||||||
def cpu_names():
|
def cpu_names():
|
||||||
"""Return a list of valid CPU names."""
|
"""Return a list of valid CPU names."""
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
#
|
#
|
||||||
# Authors: Kevin Lim
|
# Authors: Kevin Lim
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
from m5.objects import *
|
from m5.objects import *
|
||||||
from Benchmarks import *
|
from Benchmarks import *
|
||||||
from m5.util import *
|
from m5.util import *
|
||||||
@@ -259,7 +261,8 @@ def makeArmSystem(mem_mode, machine_type, num_cpus=1, mdesc=None,
|
|||||||
|
|
||||||
if isinstance(self.realview, VExpress_EMM64):
|
if isinstance(self.realview, VExpress_EMM64):
|
||||||
if os.path.split(mdesc.disk())[-1] == 'linux-aarch32-ael.img':
|
if os.path.split(mdesc.disk())[-1] == 'linux-aarch32-ael.img':
|
||||||
print "Selected 64-bit ARM architecture, updating default disk image..."
|
print("Selected 64-bit ARM architecture, updating default "
|
||||||
|
"disk image...")
|
||||||
mdesc.diskname = 'linaro-minimal-aarch64.img'
|
mdesc.diskname = 'linaro-minimal-aarch64.img'
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,8 @@
|
|||||||
# Author: Lisa Hsu
|
# Author: Lisa Hsu
|
||||||
#
|
#
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
# Configure the TLB hierarchy
|
# Configure the TLB hierarchy
|
||||||
# Places which would probably need to be modified if you
|
# Places which would probably need to be modified if you
|
||||||
# want a different hierarchy are specified by a <Modify here .. >'
|
# want a different hierarchy are specified by a <Modify here .. >'
|
||||||
@@ -88,7 +90,7 @@ def config_tlb_hierarchy(options, system, shader_idx):
|
|||||||
elif options.TLB_config == "2CU":
|
elif options.TLB_config == "2CU":
|
||||||
num_TLBs = n_cu >> 1
|
num_TLBs = n_cu >> 1
|
||||||
else:
|
else:
|
||||||
print "Bad option for TLB Configuration."
|
print("Bad option for TLB Configuration.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
#----------------------------------------------------------------------------------------
|
#----------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -36,6 +36,8 @@
|
|||||||
# Authors: Andreas Sandberg
|
# Authors: Andreas Sandberg
|
||||||
# Andreas Hansson
|
# Andreas Hansson
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import m5.objects
|
import m5.objects
|
||||||
import inspect
|
import inspect
|
||||||
import sys
|
import sys
|
||||||
@@ -64,23 +66,23 @@ def get(name):
|
|||||||
mem_class = _mem_classes[name]
|
mem_class = _mem_classes[name]
|
||||||
return mem_class
|
return mem_class
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print "%s is not a valid memory controller." % (name,)
|
print("%s is not a valid memory controller." % (name,))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def print_mem_list():
|
def print_mem_list():
|
||||||
"""Print a list of available memory classes."""
|
"""Print a list of available memory classes."""
|
||||||
|
|
||||||
print "Available memory classes:"
|
print("Available memory classes:")
|
||||||
doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t")
|
doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t")
|
||||||
for name, cls in _mem_classes.items():
|
for name, cls in _mem_classes.items():
|
||||||
print "\t%s" % name
|
print("\t%s" % name)
|
||||||
|
|
||||||
# Try to extract the class documentation from the class help
|
# Try to extract the class documentation from the class help
|
||||||
# string.
|
# string.
|
||||||
doc = inspect.getdoc(cls)
|
doc = inspect.getdoc(cls)
|
||||||
if doc:
|
if doc:
|
||||||
for line in doc_wrapper.wrap(doc):
|
for line in doc_wrapper.wrap(doc):
|
||||||
print line
|
print(line)
|
||||||
|
|
||||||
def mem_names():
|
def mem_names():
|
||||||
"""Return a list of valid memory names."""
|
"""Return a list of valid memory names."""
|
||||||
@@ -223,8 +225,8 @@ def config_mem(options, system):
|
|||||||
|
|
||||||
if opt_elastic_trace_en:
|
if opt_elastic_trace_en:
|
||||||
mem_ctrl.latency = '1ns'
|
mem_ctrl.latency = '1ns'
|
||||||
print "For elastic trace, over-riding Simple Memory " \
|
print("For elastic trace, over-riding Simple Memory "
|
||||||
"latency to 1ns."
|
"latency to 1ns.")
|
||||||
|
|
||||||
mem_ctrls.append(mem_ctrl)
|
mem_ctrls.append(mem_ctrl)
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,8 @@
|
|||||||
# Authors: Andreas Sandberg
|
# Authors: Andreas Sandberg
|
||||||
# Pierre-Yves Peneau
|
# Pierre-Yves Peneau
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import m5.objects
|
import m5.objects
|
||||||
import inspect
|
import inspect
|
||||||
import sys
|
import sys
|
||||||
@@ -83,22 +85,22 @@ def get(name):
|
|||||||
def print_platform_list():
|
def print_platform_list():
|
||||||
"""Print a list of available Platform classes including their aliases."""
|
"""Print a list of available Platform classes including their aliases."""
|
||||||
|
|
||||||
print "Available Platform classes:"
|
print("Available Platform classes:")
|
||||||
doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t")
|
doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t")
|
||||||
for name, cls in _platform_classes.items():
|
for name, cls in _platform_classes.items():
|
||||||
print "\t%s" % name
|
print("\t%s" % name)
|
||||||
|
|
||||||
# Try to extract the class documentation from the class help
|
# Try to extract the class documentation from the class help
|
||||||
# string.
|
# string.
|
||||||
doc = inspect.getdoc(cls)
|
doc = inspect.getdoc(cls)
|
||||||
if doc:
|
if doc:
|
||||||
for line in doc_wrapper.wrap(doc):
|
for line in doc_wrapper.wrap(doc):
|
||||||
print line
|
print(line)
|
||||||
|
|
||||||
if _platform_aliases:
|
if _platform_aliases:
|
||||||
print "\Platform aliases:"
|
print("\Platform aliases:")
|
||||||
for alias, target in _platform_aliases.items():
|
for alias, target in _platform_aliases.items():
|
||||||
print "\t%s => %s" % (alias, target)
|
print("\t%s => %s" % (alias, target))
|
||||||
|
|
||||||
def platform_names():
|
def platform_names():
|
||||||
"""Return a list of valid Platform names."""
|
"""Return a list of valid Platform names."""
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
#
|
#
|
||||||
# Authors: Lisa Hsu
|
# Authors: Lisa Hsu
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
from os import getcwd
|
from os import getcwd
|
||||||
from os.path import join as joinpath
|
from os.path import join as joinpath
|
||||||
@@ -170,7 +172,7 @@ def findCptDir(options, cptdir, testsys):
|
|||||||
weight_inst = float(match.group(3))
|
weight_inst = float(match.group(3))
|
||||||
interval_length = int(match.group(4))
|
interval_length = int(match.group(4))
|
||||||
warmup_length = int(match.group(5))
|
warmup_length = int(match.group(5))
|
||||||
print "Resuming from", checkpoint_dir
|
print("Resuming from", checkpoint_dir)
|
||||||
simpoint_start_insts = []
|
simpoint_start_insts = []
|
||||||
simpoint_start_insts.append(warmup_length)
|
simpoint_start_insts.append(warmup_length)
|
||||||
simpoint_start_insts.append(warmup_length + interval_length)
|
simpoint_start_insts.append(warmup_length + interval_length)
|
||||||
@@ -178,9 +180,9 @@ def findCptDir(options, cptdir, testsys):
|
|||||||
if testsys.switch_cpus != None:
|
if testsys.switch_cpus != None:
|
||||||
testsys.switch_cpus[0].simpoint_start_insts = simpoint_start_insts
|
testsys.switch_cpus[0].simpoint_start_insts = simpoint_start_insts
|
||||||
|
|
||||||
print "Resuming from SimPoint",
|
print("Resuming from SimPoint", end=' ')
|
||||||
print "#%d, start_inst:%d, weight:%f, interval:%d, warmup:%d" % \
|
print("#%d, start_inst:%d, weight:%f, interval:%d, warmup:%d" %
|
||||||
(index, start_inst, weight_inst, interval_length, warmup_length)
|
(index, start_inst, weight_inst, interval_length, warmup_length))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
dirs = listdir(cptdir)
|
dirs = listdir(cptdir)
|
||||||
@@ -210,10 +212,10 @@ def scriptCheckpoints(options, maxtick, cptdir):
|
|||||||
if options.checkpoint_restore != None:
|
if options.checkpoint_restore != None:
|
||||||
checkpoint_inst += options.checkpoint_restore
|
checkpoint_inst += options.checkpoint_restore
|
||||||
|
|
||||||
print "Creating checkpoint at inst:%d" % (checkpoint_inst)
|
print("Creating checkpoint at inst:%d" % (checkpoint_inst))
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
exit_cause = exit_event.getCause()
|
exit_cause = exit_event.getCause()
|
||||||
print "exit cause = %s" % exit_cause
|
print("exit cause = %s" % exit_cause)
|
||||||
|
|
||||||
# skip checkpoint instructions should they exist
|
# skip checkpoint instructions should they exist
|
||||||
while exit_cause == "checkpoint":
|
while exit_cause == "checkpoint":
|
||||||
@@ -223,7 +225,7 @@ def scriptCheckpoints(options, maxtick, cptdir):
|
|||||||
if exit_cause == "a thread reached the max instruction count":
|
if exit_cause == "a thread reached the max instruction count":
|
||||||
m5.checkpoint(joinpath(cptdir, "cpt.%s.%d" % \
|
m5.checkpoint(joinpath(cptdir, "cpt.%s.%d" % \
|
||||||
(options.bench, checkpoint_inst)))
|
(options.bench, checkpoint_inst)))
|
||||||
print "Checkpoint written."
|
print("Checkpoint written.")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
when, period = options.take_checkpoints.split(",", 1)
|
when, period = options.take_checkpoints.split(",", 1)
|
||||||
@@ -288,10 +290,10 @@ def parseSimpointAnalysisFile(options, testsys):
|
|||||||
|
|
||||||
simpoint_filename, weight_filename, interval_length, warmup_length = \
|
simpoint_filename, weight_filename, interval_length, warmup_length = \
|
||||||
options.take_simpoint_checkpoints.split(",", 3)
|
options.take_simpoint_checkpoints.split(",", 3)
|
||||||
print "simpoint analysis file:", simpoint_filename
|
print("simpoint analysis file:", simpoint_filename)
|
||||||
print "simpoint weight file:", weight_filename
|
print("simpoint weight file:", weight_filename)
|
||||||
print "interval length:", interval_length
|
print("interval length:", interval_length)
|
||||||
print "warmup length:", warmup_length
|
print("warmup length:", warmup_length)
|
||||||
|
|
||||||
interval_length = int(interval_length)
|
interval_length = int(interval_length)
|
||||||
warmup_length = int(warmup_length)
|
warmup_length = int(warmup_length)
|
||||||
@@ -339,11 +341,11 @@ def parseSimpointAnalysisFile(options, testsys):
|
|||||||
simpoints.sort(key=lambda obj: obj[2])
|
simpoints.sort(key=lambda obj: obj[2])
|
||||||
for s in simpoints:
|
for s in simpoints:
|
||||||
interval, weight, starting_inst_count, actual_warmup_length = s
|
interval, weight, starting_inst_count, actual_warmup_length = s
|
||||||
print str(interval), str(weight), starting_inst_count, \
|
print(str(interval), str(weight), starting_inst_count,
|
||||||
actual_warmup_length
|
actual_warmup_length)
|
||||||
simpoint_start_insts.append(starting_inst_count)
|
simpoint_start_insts.append(starting_inst_count)
|
||||||
|
|
||||||
print "Total # of simpoints:", len(simpoints)
|
print("Total # of simpoints:", len(simpoints))
|
||||||
testsys.cpu[0].simpoint_start_insts = simpoint_start_insts
|
testsys.cpu[0].simpoint_start_insts = simpoint_start_insts
|
||||||
|
|
||||||
return (simpoints, interval_length)
|
return (simpoints, interval_length)
|
||||||
@@ -364,7 +366,7 @@ def takeSimpointCheckpoints(simpoints, interval_length, cptdir):
|
|||||||
|
|
||||||
# skip checkpoint instructions should they exist
|
# skip checkpoint instructions should they exist
|
||||||
while exit_event.getCause() == "checkpoint":
|
while exit_event.getCause() == "checkpoint":
|
||||||
print "Found 'checkpoint' exit event...ignoring..."
|
print("Found 'checkpoint' exit event...ignoring...")
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
|
|
||||||
exit_cause = exit_event.getCause()
|
exit_cause = exit_event.getCause()
|
||||||
@@ -375,16 +377,16 @@ def takeSimpointCheckpoints(simpoints, interval_length, cptdir):
|
|||||||
"cpt.simpoint_%02d_inst_%d_weight_%f_interval_%d_warmup_%d"
|
"cpt.simpoint_%02d_inst_%d_weight_%f_interval_%d_warmup_%d"
|
||||||
% (index, starting_inst_count, weight, interval_length,
|
% (index, starting_inst_count, weight, interval_length,
|
||||||
actual_warmup_length)))
|
actual_warmup_length)))
|
||||||
print "Checkpoint #%d written. start inst:%d weight:%f" % \
|
print("Checkpoint #%d written. start inst:%d weight:%f" %
|
||||||
(num_checkpoints, starting_inst_count, weight)
|
(num_checkpoints, starting_inst_count, weight))
|
||||||
num_checkpoints += 1
|
num_checkpoints += 1
|
||||||
last_chkpnt_inst_count = starting_inst_count
|
last_chkpnt_inst_count = starting_inst_count
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
index += 1
|
index += 1
|
||||||
|
|
||||||
print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_cause)
|
print('Exiting @ tick %i because %s' % (m5.curTick(), exit_cause))
|
||||||
print "%d checkpoints taken" % num_checkpoints
|
print("%d checkpoints taken" % num_checkpoints)
|
||||||
sys.exit(code)
|
sys.exit(code)
|
||||||
|
|
||||||
def restoreSimpointCheckpoint():
|
def restoreSimpointCheckpoint():
|
||||||
@@ -392,7 +394,7 @@ def restoreSimpointCheckpoint():
|
|||||||
exit_cause = exit_event.getCause()
|
exit_cause = exit_event.getCause()
|
||||||
|
|
||||||
if exit_cause == "simpoint starting point found":
|
if exit_cause == "simpoint starting point found":
|
||||||
print "Warmed up! Dumping and resetting stats!"
|
print("Warmed up! Dumping and resetting stats!")
|
||||||
m5.stats.dump()
|
m5.stats.dump()
|
||||||
m5.stats.reset()
|
m5.stats.reset()
|
||||||
|
|
||||||
@@ -400,14 +402,14 @@ def restoreSimpointCheckpoint():
|
|||||||
exit_cause = exit_event.getCause()
|
exit_cause = exit_event.getCause()
|
||||||
|
|
||||||
if exit_cause == "simpoint starting point found":
|
if exit_cause == "simpoint starting point found":
|
||||||
print "Done running SimPoint!"
|
print("Done running SimPoint!")
|
||||||
sys.exit(exit_event.getCode())
|
sys.exit(exit_event.getCode())
|
||||||
|
|
||||||
print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_cause)
|
print('Exiting @ tick %i because %s' % (m5.curTick(), exit_cause))
|
||||||
sys.exit(exit_event.getCode())
|
sys.exit(exit_event.getCode())
|
||||||
|
|
||||||
def repeatSwitch(testsys, repeat_switch_cpu_list, maxtick, switch_freq):
|
def repeatSwitch(testsys, repeat_switch_cpu_list, maxtick, switch_freq):
|
||||||
print "starting switch loop"
|
print("starting switch loop")
|
||||||
while True:
|
while True:
|
||||||
exit_event = m5.simulate(switch_freq)
|
exit_event = m5.simulate(switch_freq)
|
||||||
exit_cause = exit_event.getCause()
|
exit_cause = exit_event.getCause()
|
||||||
@@ -489,10 +491,10 @@ def run(options, root, testsys, cpu_class):
|
|||||||
switch_class = getCPUClass(options.cpu_type)[0]
|
switch_class = getCPUClass(options.cpu_type)[0]
|
||||||
if switch_class.require_caches() and \
|
if switch_class.require_caches() and \
|
||||||
not options.caches:
|
not options.caches:
|
||||||
print "%s: Must be used with caches" % str(switch_class)
|
print("%s: Must be used with caches" % str(switch_class))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
if not switch_class.support_take_over():
|
if not switch_class.support_take_over():
|
||||||
print "%s: CPU switching not supported" % str(switch_class)
|
print("%s: CPU switching not supported" % str(switch_class))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
repeat_switch_cpus = [switch_class(switched_out=True, \
|
repeat_switch_cpus = [switch_class(switched_out=True, \
|
||||||
@@ -641,32 +643,32 @@ def run(options, root, testsys, cpu_class):
|
|||||||
|
|
||||||
if options.standard_switch or cpu_class:
|
if options.standard_switch or cpu_class:
|
||||||
if options.standard_switch:
|
if options.standard_switch:
|
||||||
print "Switch at instruction count:%s" % \
|
print("Switch at instruction count:%s" %
|
||||||
str(testsys.cpu[0].max_insts_any_thread)
|
str(testsys.cpu[0].max_insts_any_thread))
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
elif cpu_class and options.fast_forward:
|
elif cpu_class and options.fast_forward:
|
||||||
print "Switch at instruction count:%s" % \
|
print("Switch at instruction count:%s" %
|
||||||
str(testsys.cpu[0].max_insts_any_thread)
|
str(testsys.cpu[0].max_insts_any_thread))
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
else:
|
else:
|
||||||
print "Switch at curTick count:%s" % str(10000)
|
print("Switch at curTick count:%s" % str(10000))
|
||||||
exit_event = m5.simulate(10000)
|
exit_event = m5.simulate(10000)
|
||||||
print "Switched CPUS @ tick %s" % (m5.curTick())
|
print("Switched CPUS @ tick %s" % (m5.curTick()))
|
||||||
|
|
||||||
m5.switchCpus(testsys, switch_cpu_list)
|
m5.switchCpus(testsys, switch_cpu_list)
|
||||||
|
|
||||||
if options.standard_switch:
|
if options.standard_switch:
|
||||||
print "Switch at instruction count:%d" % \
|
print("Switch at instruction count:%d" %
|
||||||
(testsys.switch_cpus[0].max_insts_any_thread)
|
(testsys.switch_cpus[0].max_insts_any_thread))
|
||||||
|
|
||||||
#warmup instruction count may have already been set
|
#warmup instruction count may have already been set
|
||||||
if options.warmup_insts:
|
if options.warmup_insts:
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
else:
|
else:
|
||||||
exit_event = m5.simulate(options.standard_switch)
|
exit_event = m5.simulate(options.standard_switch)
|
||||||
print "Switching CPUS @ tick %s" % (m5.curTick())
|
print("Switching CPUS @ tick %s" % (m5.curTick()))
|
||||||
print "Simulation ends instruction count:%d" % \
|
print("Simulation ends instruction count:%d" %
|
||||||
(testsys.switch_cpus_1[0].max_insts_any_thread)
|
(testsys.switch_cpus_1[0].max_insts_any_thread))
|
||||||
m5.switchCpus(testsys, switch_cpu_list1)
|
m5.switchCpus(testsys, switch_cpu_list1)
|
||||||
|
|
||||||
# If we're taking and restoring checkpoints, use checkpoint_dir
|
# If we're taking and restoring checkpoints, use checkpoint_dir
|
||||||
@@ -699,7 +701,7 @@ def run(options, root, testsys, cpu_class):
|
|||||||
else:
|
else:
|
||||||
if options.fast_forward:
|
if options.fast_forward:
|
||||||
m5.stats.reset()
|
m5.stats.reset()
|
||||||
print "**** REAL SIMULATION ****"
|
print("**** REAL SIMULATION ****")
|
||||||
|
|
||||||
# If checkpoints are being taken, then the checkpoint instruction
|
# If checkpoints are being taken, then the checkpoint instruction
|
||||||
# will occur in the benchmark code it self.
|
# will occur in the benchmark code it self.
|
||||||
@@ -709,7 +711,8 @@ def run(options, root, testsys, cpu_class):
|
|||||||
else:
|
else:
|
||||||
exit_event = benchCheckpoints(options, maxtick, cptdir)
|
exit_event = benchCheckpoints(options, maxtick, cptdir)
|
||||||
|
|
||||||
print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())
|
print('Exiting @ tick %i because %s' %
|
||||||
|
(m5.curTick(), exit_event.getCause()))
|
||||||
if options.checkpoint_at_end:
|
if options.checkpoint_at_end:
|
||||||
m5.checkpoint(joinpath(cptdir, "cpt.%d"))
|
m5.checkpoint(joinpath(cptdir, "cpt.%d"))
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ at: http://www.arm.com/ResearchEnablement/SystemModeling
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
from m5.objects import *
|
from m5.objects import *
|
||||||
|
|
||||||
# Simple function to allow a string of [01x_] to be converted into a
|
# Simple function to allow a string of [01x_] to be converted into a
|
||||||
@@ -71,7 +73,7 @@ def make_implicant(implicant_string):
|
|||||||
elif char == 'x':
|
elif char == 'x':
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
print "Can't parse implicant character", char
|
print("Can't parse implicant character", char)
|
||||||
|
|
||||||
return (ret_mask, ret_match)
|
return (ret_mask, ret_match)
|
||||||
|
|
||||||
@@ -133,7 +135,7 @@ def ref(name):
|
|||||||
ret = TimingExprRef()
|
ret = TimingExprRef()
|
||||||
ret.index = env[name]
|
ret.index = env[name]
|
||||||
else:
|
else:
|
||||||
print "Invalid expression name", name
|
print("Invalid expression name", name)
|
||||||
ret = TimingExprNull()
|
ret = TimingExprNull()
|
||||||
return ret
|
return ret
|
||||||
return body
|
return body
|
||||||
|
|||||||
@@ -26,6 +26,8 @@
|
|||||||
#
|
#
|
||||||
# Authors: Nathan Binkert
|
# Authors: Nathan Binkert
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from os.path import basename, exists, join as joinpath, normpath
|
from os.path import basename, exists, join as joinpath, normpath
|
||||||
@@ -747,8 +749,8 @@ if __name__ == '__main__':
|
|||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
for bench in all:
|
for bench in all:
|
||||||
for input_set in 'ref', 'test', 'train':
|
for input_set in 'ref', 'test', 'train':
|
||||||
print 'class: %s' % bench.__name__
|
print('class: %s' % bench.__name__)
|
||||||
x = bench('alpha', 'tru64', input_set)
|
x = bench('alpha', 'tru64', input_set)
|
||||||
print '%s: %s' % (x, input_set)
|
print('%s: %s' % (x, input_set))
|
||||||
pprint(x.makeProcessArgs())
|
pprint(x.makeProcessArgs())
|
||||||
print
|
print()
|
||||||
|
|||||||
@@ -35,6 +35,8 @@
|
|||||||
#
|
#
|
||||||
# Authors: Andreas Hansson
|
# Authors: Andreas Hansson
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import gzip
|
import gzip
|
||||||
import optparse
|
import optparse
|
||||||
import os
|
import os
|
||||||
@@ -60,22 +62,22 @@ import protolib
|
|||||||
try:
|
try:
|
||||||
import packet_pb2
|
import packet_pb2
|
||||||
except:
|
except:
|
||||||
print "Did not find packet proto definitions, attempting to generate"
|
print("Did not find packet proto definitions, attempting to generate")
|
||||||
from subprocess import call
|
from subprocess import call
|
||||||
error = call(['protoc', '--python_out=configs/dram',
|
error = call(['protoc', '--python_out=configs/dram',
|
||||||
'--proto_path=src/proto', 'src/proto/packet.proto'])
|
'--proto_path=src/proto', 'src/proto/packet.proto'])
|
||||||
if not error:
|
if not error:
|
||||||
print "Generated packet proto definitions"
|
print("Generated packet proto definitions")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import google.protobuf
|
import google.protobuf
|
||||||
except:
|
except:
|
||||||
print "Please install the Python protobuf module"
|
print("Please install the Python protobuf module")
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
|
||||||
import packet_pb2
|
import packet_pb2
|
||||||
else:
|
else:
|
||||||
print "Failed to import packet proto definitions"
|
print("Failed to import packet proto definitions")
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
|
||||||
parser = optparse.OptionParser()
|
parser = optparse.OptionParser()
|
||||||
@@ -92,7 +94,7 @@ parser.add_option("--reuse-trace", action="store_true",
|
|||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# start by creating the system itself, using a multi-layer 2.0 GHz
|
# start by creating the system itself, using a multi-layer 2.0 GHz
|
||||||
@@ -171,7 +173,7 @@ def create_trace(filename, max_addr, burst_size, itt):
|
|||||||
try:
|
try:
|
||||||
proto_out = gzip.open(filename, 'wb')
|
proto_out = gzip.open(filename, 'wb')
|
||||||
except IOError:
|
except IOError:
|
||||||
print "Failed to open ", filename, " for writing"
|
print("Failed to open ", filename, " for writing")
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
|
||||||
# write the magic number in 4-byte Little Endian, similar to what
|
# write the magic number in 4-byte Little Endian, similar to what
|
||||||
@@ -208,7 +210,7 @@ def create_trace(filename, max_addr, burst_size, itt):
|
|||||||
proto_out.close()
|
proto_out.close()
|
||||||
|
|
||||||
# this will take a while, so keep the user informed
|
# this will take a while, so keep the user informed
|
||||||
print "Generating traces, please wait..."
|
print("Generating traces, please wait...")
|
||||||
|
|
||||||
nxt_range = 0
|
nxt_range = 0
|
||||||
nxt_state = 0
|
nxt_state = 0
|
||||||
@@ -304,6 +306,6 @@ m5.instantiate()
|
|||||||
m5.simulate(nxt_state * period)
|
m5.simulate(nxt_state * period)
|
||||||
|
|
||||||
# print all we need to make sense of the stats output
|
# print all we need to make sense of the stats output
|
||||||
print "lat_mem_rd with %d iterations, ranges:" % iterations
|
print("lat_mem_rd with %d iterations, ranges:" % iterations)
|
||||||
for r in ranges:
|
for r in ranges:
|
||||||
print r
|
print(r)
|
||||||
|
|||||||
@@ -36,6 +36,8 @@
|
|||||||
# Authors: Radhika Jagtap
|
# Authors: Radhika Jagtap
|
||||||
# Andreas Hansson
|
# Andreas Hansson
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
import m5
|
import m5
|
||||||
@@ -239,13 +241,13 @@ m5.instantiate()
|
|||||||
# Simulate for exactly as long as it takes to go through all the states
|
# Simulate for exactly as long as it takes to go through all the states
|
||||||
# This is why sim exists.
|
# This is why sim exists.
|
||||||
m5.simulate(nxt_state * period + idle_period)
|
m5.simulate(nxt_state * period + idle_period)
|
||||||
print "--- Done DRAM low power sweep ---"
|
print("--- Done DRAM low power sweep ---")
|
||||||
print "Fixed params - "
|
print("Fixed params - ")
|
||||||
print "\tburst: %d, banks: %d, max stride: %d, itt min: %s ns" % \
|
print("\tburst: %d, banks: %d, max stride: %d, itt min: %s ns" % \
|
||||||
(burst_size, nbr_banks, max_stride, itt_min)
|
(burst_size, nbr_banks, max_stride, itt_min))
|
||||||
print "Swept params - "
|
print("Swept params - ")
|
||||||
print "\titt max multiples input:", itt_max_multiples
|
print("\titt max multiples input:", itt_max_multiples)
|
||||||
print "\titt max values", itt_max_values
|
print("\titt max values", itt_max_values)
|
||||||
print "\tbank utilization values", bank_util_values
|
print("\tbank utilization values", bank_util_values)
|
||||||
print "\tstride values:", stride_values
|
print("\tstride values:", stride_values)
|
||||||
print "Traffic gen config file:", cfg_file_name
|
print("Traffic gen config file:", cfg_file_name)
|
||||||
|
|||||||
@@ -35,6 +35,8 @@
|
|||||||
#
|
#
|
||||||
# Authors: Andreas Hansson
|
# Authors: Andreas Hansson
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import optparse
|
import optparse
|
||||||
|
|
||||||
import m5
|
import m5
|
||||||
@@ -75,7 +77,7 @@ parser.add_option("--addr_map", type="int", default=1,
|
|||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# at the moment we stay with the default open-adaptive page policy,
|
# at the moment we stay with the default open-adaptive page policy,
|
||||||
@@ -204,5 +206,5 @@ root.system.mem_mode = 'timing'
|
|||||||
m5.instantiate()
|
m5.instantiate()
|
||||||
m5.simulate(nxt_state * period)
|
m5.simulate(nxt_state * period)
|
||||||
|
|
||||||
print "DRAM sweep with burst: %d, banks: %d, max stride: %d" % \
|
print("DRAM sweep with burst: %d, banks: %d, max stride: %d" %
|
||||||
(burst_size, nbr_banks, max_stride)
|
(burst_size, nbr_banks, max_stride))
|
||||||
|
|||||||
@@ -33,6 +33,8 @@
|
|||||||
# Author: Sooraj Puthoor
|
# Author: Sooraj Puthoor
|
||||||
#
|
#
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import optparse, os, re
|
import optparse, os, re
|
||||||
import math
|
import math
|
||||||
import glob
|
import glob
|
||||||
@@ -385,7 +387,7 @@ else:
|
|||||||
kernel_path = os.path.dirname(executable)
|
kernel_path = os.path.dirname(executable)
|
||||||
kernel_files = glob.glob(os.path.join(kernel_path, '*.asm'))
|
kernel_files = glob.glob(os.path.join(kernel_path, '*.asm'))
|
||||||
if kernel_files:
|
if kernel_files:
|
||||||
print "Using GPU kernel code file(s)", ",".join(kernel_files)
|
print("Using GPU kernel code file(s)", ",".join(kernel_files))
|
||||||
else:
|
else:
|
||||||
fatal("Can't locate kernel code (.asm) in " + kernel_path)
|
fatal("Can't locate kernel code (.asm) in " + kernel_path)
|
||||||
|
|
||||||
@@ -489,7 +491,7 @@ for i in xrange(n_cu):
|
|||||||
|
|
||||||
for i in xrange(n_cu):
|
for i in xrange(n_cu):
|
||||||
if i > 0 and not i % options.cu_per_sqc:
|
if i > 0 and not i % options.cu_per_sqc:
|
||||||
print "incrementing idx on ", i
|
print("incrementing idx on ", i)
|
||||||
gpu_port_idx += 1
|
gpu_port_idx += 1
|
||||||
system.cpu[shader_idx].CUs[i].sqc_port = \
|
system.cpu[shader_idx].CUs[i].sqc_port = \
|
||||||
system.ruby._cpu_ports[gpu_port_idx].slave
|
system.ruby._cpu_ports[gpu_port_idx].slave
|
||||||
@@ -552,15 +554,14 @@ m5.instantiate(checkpoint_dir)
|
|||||||
host_cpu.workload[0].map(0x10000000, 0x200000000, 4096)
|
host_cpu.workload[0].map(0x10000000, 0x200000000, 4096)
|
||||||
|
|
||||||
if options.fast_forward:
|
if options.fast_forward:
|
||||||
print "Switch at instruction count: %d" % \
|
print("Switch at instruction count: %d" % cpu_list[0].max_insts_any_thread)
|
||||||
cpu_list[0].max_insts_any_thread
|
|
||||||
|
|
||||||
exit_event = m5.simulate(maxtick)
|
exit_event = m5.simulate(maxtick)
|
||||||
|
|
||||||
if options.fast_forward:
|
if options.fast_forward:
|
||||||
if exit_event.getCause() == "a thread reached the max instruction count":
|
if exit_event.getCause() == "a thread reached the max instruction count":
|
||||||
m5.switchCpus(system, switch_cpu_list)
|
m5.switchCpus(system, switch_cpu_list)
|
||||||
print "Switched CPUS @ tick %s" % (m5.curTick())
|
print("Switched CPUS @ tick %s" % (m5.curTick()))
|
||||||
m5.stats.reset()
|
m5.stats.reset()
|
||||||
exit_event = m5.simulate(maxtick - m5.curTick())
|
exit_event = m5.simulate(maxtick - m5.curTick())
|
||||||
elif options.fast_forward_pseudo_op:
|
elif options.fast_forward_pseudo_op:
|
||||||
@@ -568,15 +569,15 @@ elif options.fast_forward_pseudo_op:
|
|||||||
# If we are switching *to* kvm, then the current stats are meaningful
|
# If we are switching *to* kvm, then the current stats are meaningful
|
||||||
# Note that we don't do any warmup by default
|
# Note that we don't do any warmup by default
|
||||||
if type(switch_cpu_list[0][0]) == FutureCpuClass:
|
if type(switch_cpu_list[0][0]) == FutureCpuClass:
|
||||||
print "Dumping stats..."
|
print("Dumping stats...")
|
||||||
m5.stats.dump()
|
m5.stats.dump()
|
||||||
m5.switchCpus(system, switch_cpu_list)
|
m5.switchCpus(system, switch_cpu_list)
|
||||||
print "Switched CPUS @ tick %s" % (m5.curTick())
|
print("Switched CPUS @ tick %s" % (m5.curTick()))
|
||||||
m5.stats.reset()
|
m5.stats.reset()
|
||||||
# This lets us switch back and forth without keeping a counter
|
# This lets us switch back and forth without keeping a counter
|
||||||
switch_cpu_list = [(x[1], x[0]) for x in switch_cpu_list]
|
switch_cpu_list = [(x[1], x[0]) for x in switch_cpu_list]
|
||||||
exit_event = m5.simulate(maxtick - m5.curTick())
|
exit_event = m5.simulate(maxtick - m5.curTick())
|
||||||
|
|
||||||
print "Ticks:", m5.curTick()
|
print("Ticks:", m5.curTick())
|
||||||
print 'Exiting because ', exit_event.getCause()
|
print('Exiting because ', exit_event.getCause())
|
||||||
sys.exit(exit_event.getCode())
|
sys.exit(exit_event.getCode())
|
||||||
|
|||||||
@@ -40,6 +40,8 @@
|
|||||||
# a generic ARM bigLITTLE system.
|
# a generic ARM bigLITTLE system.
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
@@ -311,12 +313,12 @@ def run(checkpoint_dir=m5.options.outdir):
|
|||||||
event = m5.simulate()
|
event = m5.simulate()
|
||||||
exit_msg = event.getCause()
|
exit_msg = event.getCause()
|
||||||
if exit_msg == "checkpoint":
|
if exit_msg == "checkpoint":
|
||||||
print "Dropping checkpoint at tick %d" % m5.curTick()
|
print("Dropping checkpoint at tick %d" % m5.curTick())
|
||||||
cpt_dir = os.path.join(checkpoint_dir, "cpt.%d" % m5.curTick())
|
cpt_dir = os.path.join(checkpoint_dir, "cpt.%d" % m5.curTick())
|
||||||
m5.checkpoint(cpt_dir)
|
m5.checkpoint(cpt_dir)
|
||||||
print "Checkpoint done."
|
print("Checkpoint done.")
|
||||||
else:
|
else:
|
||||||
print exit_msg, " @ ", m5.curTick()
|
print(exit_msg, " @ ", m5.curTick())
|
||||||
break
|
break
|
||||||
|
|
||||||
sys.exit(event.getCode())
|
sys.exit(event.getCode())
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
# This configuration file extends the example ARM big.LITTLE(tm)
|
# This configuration file extends the example ARM big.LITTLE(tm)
|
||||||
# with example power models.
|
# with example power models.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
|
|
||||||
@@ -90,11 +92,11 @@ def main():
|
|||||||
|
|
||||||
bL.instantiate(options)
|
bL.instantiate(options)
|
||||||
|
|
||||||
print "*" * 70
|
print("*" * 70)
|
||||||
print "WARNING: The power numbers generated by this script are " \
|
print("WARNING: The power numbers generated by this script are "
|
||||||
"examples. They are not representative of any particular " \
|
"examples. They are not representative of any particular "
|
||||||
"implementation or process."
|
"implementation or process.")
|
||||||
print "*" * 70
|
print("*" * 70)
|
||||||
|
|
||||||
# Dumping stats periodically
|
# Dumping stats periodically
|
||||||
m5.stats.periodicStatDump(m5.ticks.fromSeconds(0.1E-3))
|
m5.stats.periodicStatDump(m5.ticks.fromSeconds(0.1E-3))
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ Research Starter Kit on System Modeling. More information can be found
|
|||||||
at: http://www.arm.com/ResearchEnablement/SystemModeling
|
at: http://www.arm.com/ResearchEnablement/SystemModeling
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import m5
|
import m5
|
||||||
from m5.util import addToPath
|
from m5.util import addToPath
|
||||||
@@ -97,7 +99,7 @@ def create(args):
|
|||||||
dtb_file = args.dtb
|
dtb_file = args.dtb
|
||||||
|
|
||||||
if args.script and not os.path.isfile(args.script):
|
if args.script and not os.path.isfile(args.script):
|
||||||
print "Error: Bootscript %s does not exist" % args.script
|
print("Error: Bootscript %s does not exist" % args.script)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
cpu_class = cpu_types[args.cpu][0]
|
cpu_class = cpu_types[args.cpu][0]
|
||||||
@@ -175,18 +177,18 @@ def create(args):
|
|||||||
def run(args):
|
def run(args):
|
||||||
cptdir = m5.options.outdir
|
cptdir = m5.options.outdir
|
||||||
if args.checkpoint:
|
if args.checkpoint:
|
||||||
print "Checkpoint directory: %s" % cptdir
|
print("Checkpoint directory: %s" % cptdir)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
event = m5.simulate()
|
event = m5.simulate()
|
||||||
exit_msg = event.getCause()
|
exit_msg = event.getCause()
|
||||||
if exit_msg == "checkpoint":
|
if exit_msg == "checkpoint":
|
||||||
print "Dropping checkpoint at tick %d" % m5.curTick()
|
print("Dropping checkpoint at tick %d" % m5.curTick())
|
||||||
cpt_dir = os.path.join(m5.options.outdir, "cpt.%d" % m5.curTick())
|
cpt_dir = os.path.join(m5.options.outdir, "cpt.%d" % m5.curTick())
|
||||||
m5.checkpoint(os.path.join(cpt_dir))
|
m5.checkpoint(os.path.join(cpt_dir))
|
||||||
print "Checkpoint done."
|
print("Checkpoint done.")
|
||||||
else:
|
else:
|
||||||
print exit_msg, " @ ", m5.curTick()
|
print(exit_msg, " @ ", m5.curTick())
|
||||||
break
|
break
|
||||||
|
|
||||||
sys.exit(event.getCode())
|
sys.exit(event.getCode())
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ Research Starter Kit on System Modeling. More information can be found
|
|||||||
at: http://www.arm.com/ResearchEnablement/SystemModeling
|
at: http://www.arm.com/ResearchEnablement/SystemModeling
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import m5
|
import m5
|
||||||
from m5.util import addToPath
|
from m5.util import addToPath
|
||||||
@@ -145,7 +147,7 @@ def get_processes(cmd):
|
|||||||
|
|
||||||
process = Process(pid=100 + idx, cwd=cwd, cmd=argv, executable=argv[0])
|
process = Process(pid=100 + idx, cwd=cwd, cmd=argv, executable=argv[0])
|
||||||
|
|
||||||
print "info: %d. command and arguments: %s" % (idx + 1, process.cmd)
|
print("info: %d. command and arguments: %s" % (idx + 1, process.cmd))
|
||||||
multiprocesses.append(process)
|
multiprocesses.append(process)
|
||||||
|
|
||||||
return multiprocesses
|
return multiprocesses
|
||||||
@@ -168,8 +170,8 @@ def create(args):
|
|||||||
# that we can pass to gem5.
|
# that we can pass to gem5.
|
||||||
processes = get_processes(args.commands_to_run)
|
processes = get_processes(args.commands_to_run)
|
||||||
if len(processes) != args.num_cores:
|
if len(processes) != args.num_cores:
|
||||||
print "Error: Cannot map %d command(s) onto %d " \
|
print("Error: Cannot map %d command(s) onto %d CPU(s)" %
|
||||||
"CPU(s)" % (len(processes), args.num_cores)
|
(len(processes), args.num_cores))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Assign one workload to each CPU
|
# Assign one workload to each CPU
|
||||||
@@ -225,7 +227,7 @@ def main():
|
|||||||
# Print the reason for the simulation exit. Some exit codes are
|
# Print the reason for the simulation exit. Some exit codes are
|
||||||
# requests for service (e.g., checkpoints) from the simulation
|
# requests for service (e.g., checkpoints) from the simulation
|
||||||
# script. We'll just ignore them here and exit.
|
# script. We'll just ignore them here and exit.
|
||||||
print event.getCause(), " @ ", m5.curTick()
|
print(event.getCause(), " @ ", m5.curTick())
|
||||||
sys.exit(event.getCode())
|
sys.exit(event.getCode())
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,8 @@
|
|||||||
|
|
||||||
# Basic elastic traces replay script that configures a Trace CPU
|
# Basic elastic traces replay script that configures a Trace CPU
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import optparse
|
import optparse
|
||||||
|
|
||||||
from m5.util import addToPath, fatal
|
from m5.util import addToPath, fatal
|
||||||
@@ -53,14 +55,14 @@ parser = optparse.OptionParser()
|
|||||||
Options.addCommonOptions(parser)
|
Options.addCommonOptions(parser)
|
||||||
|
|
||||||
if '--ruby' in sys.argv:
|
if '--ruby' in sys.argv:
|
||||||
print "This script does not support Ruby configuration, mainly"\
|
print("This script does not support Ruby configuration, mainly"
|
||||||
" because Trace CPU has been tested only with classic memory system"
|
" because Trace CPU has been tested only with classic memory system")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
numThreads = 1
|
numThreads = 1
|
||||||
|
|||||||
@@ -41,6 +41,8 @@
|
|||||||
# Authors: Ali Saidi
|
# Authors: Ali Saidi
|
||||||
# Brad Beckmann
|
# Brad Beckmann
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import optparse
|
import optparse
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@@ -74,8 +76,8 @@ def is_kvm_cpu(cpu_class):
|
|||||||
|
|
||||||
def cmd_line_template():
|
def cmd_line_template():
|
||||||
if options.command_line and options.command_line_file:
|
if options.command_line and options.command_line_file:
|
||||||
print "Error: --command-line and --command-line-file are " \
|
print("Error: --command-line and --command-line-file are "
|
||||||
"mutually exclusive"
|
"mutually exclusive")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
if options.command_line:
|
if options.command_line:
|
||||||
return options.command_line
|
return options.command_line
|
||||||
@@ -310,7 +312,7 @@ if '--ruby' in sys.argv:
|
|||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# system under test can be any CPU
|
# system under test can be any CPU
|
||||||
@@ -323,8 +325,8 @@ if options.benchmark:
|
|||||||
try:
|
try:
|
||||||
bm = Benchmarks[options.benchmark]
|
bm = Benchmarks[options.benchmark]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print "Error benchmark %s has not been defined." % options.benchmark
|
print("Error benchmark %s has not been defined." % options.benchmark)
|
||||||
print "Valid benchmarks are: %s" % DefinedBenchmarks
|
print("Valid benchmarks are: %s" % DefinedBenchmarks)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
if options.dual:
|
if options.dual:
|
||||||
@@ -357,7 +359,7 @@ elif len(bm) == 1 and options.dist:
|
|||||||
elif len(bm) == 1:
|
elif len(bm) == 1:
|
||||||
root = Root(full_system=True, system=test_sys)
|
root = Root(full_system=True, system=test_sys)
|
||||||
else:
|
else:
|
||||||
print "Error I don't know how to create more than 2 systems."
|
print("Error I don't know how to create more than 2 systems.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if options.timesync:
|
if options.timesync:
|
||||||
|
|||||||
@@ -26,6 +26,8 @@
|
|||||||
#
|
#
|
||||||
# Author: Tushar Krishna
|
# Author: Tushar Krishna
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import m5
|
import m5
|
||||||
from m5.objects import *
|
from m5.objects import *
|
||||||
from m5.defines import buildEnv
|
from m5.defines import buildEnv
|
||||||
@@ -90,14 +92,13 @@ execfile(os.path.join(config_root, "common", "Options.py"))
|
|||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
if options.inj_vnet > 2:
|
if options.inj_vnet > 2:
|
||||||
print "Error: Injection vnet %d should be 0 (1-flit), 1 (1-flit) \
|
print("Error: Injection vnet %d should be 0 (1-flit), 1 (1-flit) "
|
||||||
or 2 (5-flit) or -1 (random)"\
|
"or 2 (5-flit) or -1 (random)" % (options.inj_vnet))
|
||||||
% (options.inj_vnet)
|
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
@@ -153,4 +154,4 @@ m5.instantiate()
|
|||||||
# simulate until program terminates
|
# simulate until program terminates
|
||||||
exit_event = m5.simulate(options.abs_max_tick)
|
exit_event = m5.simulate(options.abs_max_tick)
|
||||||
|
|
||||||
print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
|
print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import argparse
|
import argparse
|
||||||
import subprocess
|
import subprocess
|
||||||
@@ -100,13 +102,13 @@ def main():
|
|||||||
root = build_system(options)
|
root = build_system(options)
|
||||||
# instantiate all of the objects we've created so far
|
# instantiate all of the objects we've created so far
|
||||||
m5.instantiate()
|
m5.instantiate()
|
||||||
print "Beginning simulation!"
|
print("Beginning simulation!")
|
||||||
event = m5.simulate(10000000000)
|
event = m5.simulate(10000000000)
|
||||||
m5.stats.dump()
|
m5.stats.dump()
|
||||||
print 'Exiting @ tick %i because %s (exit code is %i)' % (m5.curTick(),
|
print('Exiting @ tick %i because %s (exit code is %i)' % (m5.curTick(),
|
||||||
event.getCause(),
|
event.getCause(),
|
||||||
event.getCode())
|
event.getCode()))
|
||||||
print "Done"
|
print("Done")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__m5_main__":
|
if __name__ == "__m5_main__":
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
# Authors: Ron Dreslinski
|
# Authors: Ron Dreslinski
|
||||||
# Andreas Hansson
|
# Andreas Hansson
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import optparse
|
import optparse
|
||||||
import random
|
import random
|
||||||
import sys
|
import sys
|
||||||
@@ -108,7 +110,7 @@ parser.add_option("--sys-clock", action="store", type="string",
|
|||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Start by parsing the command line options and do some basic sanity
|
# Start by parsing the command line options and do some basic sanity
|
||||||
@@ -118,36 +120,36 @@ if options.random:
|
|||||||
tree_depth = random.randint(1, 4)
|
tree_depth = random.randint(1, 4)
|
||||||
cachespec = [random.randint(1, 3) for i in range(tree_depth)]
|
cachespec = [random.randint(1, 3) for i in range(tree_depth)]
|
||||||
testerspec = [random.randint(1, 3) for i in range(tree_depth + 1)]
|
testerspec = [random.randint(1, 3) for i in range(tree_depth + 1)]
|
||||||
print "Generated random tree -c", ':'.join(map(str, cachespec)), \
|
print("Generated random tree -c", ':'.join(map(str, cachespec)),
|
||||||
"-t", ':'.join(map(str, testerspec))
|
"-t", ':'.join(map(str, testerspec)))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
cachespec = [int(x) for x in options.caches.split(':')]
|
cachespec = [int(x) for x in options.caches.split(':')]
|
||||||
testerspec = [int(x) for x in options.testers.split(':')]
|
testerspec = [int(x) for x in options.testers.split(':')]
|
||||||
except:
|
except:
|
||||||
print "Error: Unable to parse caches or testers option"
|
print("Error: Unable to parse caches or testers option")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if len(cachespec) < 1:
|
if len(cachespec) < 1:
|
||||||
print "Error: Must have at least one level of caches"
|
print("Error: Must have at least one level of caches")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if len(cachespec) != len(testerspec) - 1:
|
if len(cachespec) != len(testerspec) - 1:
|
||||||
print "Error: Testers must have one element more than caches"
|
print("Error: Testers must have one element more than caches")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if testerspec[-1] == 0:
|
if testerspec[-1] == 0:
|
||||||
print "Error: Must have testers at the uppermost level"
|
print("Error: Must have testers at the uppermost level")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
for t in testerspec:
|
for t in testerspec:
|
||||||
if t < 0:
|
if t < 0:
|
||||||
print "Error: Cannot have a negative number of testers"
|
print("Error: Cannot have a negative number of testers")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
for c in cachespec:
|
for c in cachespec:
|
||||||
if c < 1:
|
if c < 1:
|
||||||
print "Error: Must have 1 or more caches at each level"
|
print("Error: Must have 1 or more caches at each level")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Determine the tester multiplier for each level as the string
|
# Determine the tester multiplier for each level as the string
|
||||||
@@ -155,7 +157,7 @@ else:
|
|||||||
multiplier = [1]
|
multiplier = [1]
|
||||||
for c in cachespec:
|
for c in cachespec:
|
||||||
if c < 1:
|
if c < 1:
|
||||||
print "Error: Must have at least one cache per level"
|
print("Error: Must have at least one cache per level")
|
||||||
multiplier.append(multiplier[-1] * c)
|
multiplier.append(multiplier[-1] * c)
|
||||||
|
|
||||||
numtesters = 0
|
numtesters = 0
|
||||||
@@ -275,7 +277,7 @@ def make_cache_level(ncaches, prototypes, level, next_cache):
|
|||||||
cache.mem_side = xbar.slave
|
cache.mem_side = xbar.slave
|
||||||
else:
|
else:
|
||||||
if not next_cache:
|
if not next_cache:
|
||||||
print "Error: No next-level cache at top level"
|
print("Error: No next-level cache at top level")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if ntesters > 1:
|
if ntesters > 1:
|
||||||
@@ -315,4 +317,4 @@ m5.instantiate()
|
|||||||
# Simulate until program terminates
|
# Simulate until program terminates
|
||||||
exit_event = m5.simulate(options.maxtick)
|
exit_event = m5.simulate(options.maxtick)
|
||||||
|
|
||||||
print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
|
print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
# Authors: Ron Dreslinski
|
# Authors: Ron Dreslinski
|
||||||
# Andreas Hansson
|
# Andreas Hansson
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import optparse
|
import optparse
|
||||||
import random
|
import random
|
||||||
import sys
|
import sys
|
||||||
@@ -107,7 +109,7 @@ parser.add_option("--sys-clock", action="store", type="string",
|
|||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Get the total number of testers
|
# Get the total number of testers
|
||||||
@@ -137,41 +139,41 @@ if options.random:
|
|||||||
if numtesters(cachespec, testerspec) < block_size:
|
if numtesters(cachespec, testerspec) < block_size:
|
||||||
break
|
break
|
||||||
|
|
||||||
print "Generated random tree -c", ':'.join(map(str, cachespec)), \
|
print("Generated random tree -c", ':'.join(map(str, cachespec)),
|
||||||
"-t", ':'.join(map(str, testerspec))
|
"-t", ':'.join(map(str, testerspec)))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
cachespec = [int(x) for x in options.caches.split(':')]
|
cachespec = [int(x) for x in options.caches.split(':')]
|
||||||
testerspec = [int(x) for x in options.testers.split(':')]
|
testerspec = [int(x) for x in options.testers.split(':')]
|
||||||
except:
|
except:
|
||||||
print "Error: Unable to parse caches or testers option"
|
print("Error: Unable to parse caches or testers option")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if len(cachespec) < 1:
|
if len(cachespec) < 1:
|
||||||
print "Error: Must have at least one level of caches"
|
print("Error: Must have at least one level of caches")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if len(cachespec) != len(testerspec) - 1:
|
if len(cachespec) != len(testerspec) - 1:
|
||||||
print "Error: Testers must have one element more than caches"
|
print("Error: Testers must have one element more than caches")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if testerspec[-1] == 0:
|
if testerspec[-1] == 0:
|
||||||
print "Error: Must have testers at the uppermost level"
|
print("Error: Must have testers at the uppermost level")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
for t in testerspec:
|
for t in testerspec:
|
||||||
if t < 0:
|
if t < 0:
|
||||||
print "Error: Cannot have a negative number of testers"
|
print("Error: Cannot have a negative number of testers")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
for c in cachespec:
|
for c in cachespec:
|
||||||
if c < 1:
|
if c < 1:
|
||||||
print "Error: Must have 1 or more caches at each level"
|
print("Error: Must have 1 or more caches at each level")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if numtesters(cachespec, testerspec) > block_size:
|
if numtesters(cachespec, testerspec) > block_size:
|
||||||
print "Error: Limited to %s testers because of false sharing" \
|
print("Error: Limited to %s testers because of false sharing"
|
||||||
% (block_size)
|
% (block_size))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Define a prototype L1 cache that we scale for all successive levels
|
# Define a prototype L1 cache that we scale for all successive levels
|
||||||
@@ -280,7 +282,7 @@ def make_cache_level(ncaches, prototypes, level, next_cache):
|
|||||||
cache.mem_side = xbar.slave
|
cache.mem_side = xbar.slave
|
||||||
else:
|
else:
|
||||||
if not next_cache:
|
if not next_cache:
|
||||||
print "Error: No next-level cache at top level"
|
print("Error: No next-level cache at top level")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if ntesters > 1:
|
if ntesters > 1:
|
||||||
@@ -318,4 +320,4 @@ m5.instantiate()
|
|||||||
# Simulate until program terminates
|
# Simulate until program terminates
|
||||||
exit_event = m5.simulate(options.maxtick)
|
exit_event = m5.simulate(options.maxtick)
|
||||||
|
|
||||||
print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
|
print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
|
||||||
|
|||||||
@@ -45,6 +45,8 @@
|
|||||||
# between system construction and run control may allow better
|
# between system construction and run control may allow better
|
||||||
# debugging.
|
# debugging.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import ConfigParser
|
import ConfigParser
|
||||||
import inspect
|
import inspect
|
||||||
@@ -540,5 +542,4 @@ mgr.find_all_objects()
|
|||||||
m5.instantiate(args.checkpoint_dir)
|
m5.instantiate(args.checkpoint_dir)
|
||||||
|
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
print 'Exiting @ tick %i because %s' % (
|
print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()))
|
||||||
m5.curTick(), exit_event.getCause())
|
|
||||||
|
|||||||
@@ -28,6 +28,8 @@
|
|||||||
# Authors: Ron Dreslinski
|
# Authors: Ron Dreslinski
|
||||||
# Brad Beckmann
|
# Brad Beckmann
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import m5
|
import m5
|
||||||
from m5.objects import *
|
from m5.objects import *
|
||||||
from m5.defines import buildEnv
|
from m5.defines import buildEnv
|
||||||
@@ -65,7 +67,7 @@ Ruby.define_options(parser)
|
|||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -83,7 +85,7 @@ elif options.test_type == "SeriesGetMixed":
|
|||||||
elif options.test_type == "Invalidate":
|
elif options.test_type == "Invalidate":
|
||||||
generator = InvalidateGenerator(num_cpus = options.num_cpus)
|
generator = InvalidateGenerator(num_cpus = options.num_cpus)
|
||||||
else:
|
else:
|
||||||
print "Error: unknown direct test generator"
|
print("Error: unknown direct test generator")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Create the M5 system.
|
# Create the M5 system.
|
||||||
@@ -130,4 +132,4 @@ m5.instantiate()
|
|||||||
# simulate until program terminates
|
# simulate until program terminates
|
||||||
exit_event = m5.simulate(options.abs_max_tick)
|
exit_event = m5.simulate(options.abs_max_tick)
|
||||||
|
|
||||||
print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
|
print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
|
||||||
|
|||||||
@@ -33,6 +33,8 @@
|
|||||||
# Author: Brad Beckmann
|
# Author: Brad Beckmann
|
||||||
#
|
#
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import m5
|
import m5
|
||||||
from m5.objects import *
|
from m5.objects import *
|
||||||
from m5.defines import buildEnv
|
from m5.defines import buildEnv
|
||||||
@@ -100,7 +102,7 @@ n_cu = options.num_compute_units
|
|||||||
options.num_sqc = int((n_cu + options.cu_per_sqc - 1) / options.cu_per_sqc)
|
options.num_sqc = int((n_cu + options.cu_per_sqc - 1) / options.cu_per_sqc)
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -183,4 +185,4 @@ m5.instantiate()
|
|||||||
# simulate until program terminates
|
# simulate until program terminates
|
||||||
exit_event = m5.simulate(options.abs_max_tick)
|
exit_event = m5.simulate(options.abs_max_tick)
|
||||||
|
|
||||||
print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
|
print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
|
||||||
|
|||||||
@@ -28,6 +28,8 @@
|
|||||||
# Authors: Ron Dreslinski
|
# Authors: Ron Dreslinski
|
||||||
# Brad Beckmann
|
# Brad Beckmann
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import m5
|
import m5
|
||||||
from m5.objects import *
|
from m5.objects import *
|
||||||
from m5.defines import buildEnv
|
from m5.defines import buildEnv
|
||||||
@@ -81,14 +83,14 @@ options.l2_assoc=2
|
|||||||
options.l3_assoc=2
|
options.l3_assoc=2
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
block_size = 64
|
block_size = 64
|
||||||
|
|
||||||
if options.num_cpus > block_size:
|
if options.num_cpus > block_size:
|
||||||
print "Error: Number of testers %d limited to %d because of false sharing" \
|
print("Error: Number of testers %d limited to %d because of false sharing"
|
||||||
% (options.num_cpus, block_size)
|
% (options.num_cpus, block_size))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -183,4 +185,4 @@ m5.instantiate()
|
|||||||
# simulate until program terminates
|
# simulate until program terminates
|
||||||
exit_event = m5.simulate(options.abs_max_tick)
|
exit_event = m5.simulate(options.abs_max_tick)
|
||||||
|
|
||||||
print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
|
print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
|
||||||
|
|||||||
@@ -28,6 +28,8 @@
|
|||||||
# Authors: Ron Dreslinski
|
# Authors: Ron Dreslinski
|
||||||
# Brad Beckmann
|
# Brad Beckmann
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import m5
|
import m5
|
||||||
from m5.objects import *
|
from m5.objects import *
|
||||||
from m5.defines import buildEnv
|
from m5.defines import buildEnv
|
||||||
@@ -75,7 +77,7 @@ options.l2_assoc=2
|
|||||||
options.l3_assoc=2
|
options.l3_assoc=2
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -156,4 +158,4 @@ m5.instantiate()
|
|||||||
# simulate until program terminates
|
# simulate until program terminates
|
||||||
exit_event = m5.simulate(options.abs_max_tick)
|
exit_event = m5.simulate(options.abs_max_tick)
|
||||||
|
|
||||||
print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
|
print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
|
||||||
|
|||||||
@@ -42,6 +42,8 @@
|
|||||||
#
|
#
|
||||||
# "m5 test.py"
|
# "m5 test.py"
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import optparse
|
import optparse
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
@@ -131,7 +133,7 @@ if '--ruby' in sys.argv:
|
|||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
multiprocesses = []
|
multiprocesses = []
|
||||||
@@ -140,7 +142,7 @@ numThreads = 1
|
|||||||
if options.bench:
|
if options.bench:
|
||||||
apps = options.bench.split("-")
|
apps = options.bench.split("-")
|
||||||
if len(apps) != options.num_cpus:
|
if len(apps) != options.num_cpus:
|
||||||
print "number of benchmarks not equal to set num_cpus!"
|
print("number of benchmarks not equal to set num_cpus!")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
for app in apps:
|
for app in apps:
|
||||||
@@ -156,13 +158,14 @@ if options.bench:
|
|||||||
app, options.spec_input))
|
app, options.spec_input))
|
||||||
multiprocesses.append(workload.makeProcess())
|
multiprocesses.append(workload.makeProcess())
|
||||||
except:
|
except:
|
||||||
print >>sys.stderr, "Unable to find workload for %s: %s" % (
|
print("Unable to find workload for %s: %s" %
|
||||||
buildEnv['TARGET_ISA'], app)
|
(buildEnv['TARGET_ISA'], app),
|
||||||
|
file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
elif options.cmd:
|
elif options.cmd:
|
||||||
multiprocesses, numThreads = get_processes(options)
|
multiprocesses, numThreads = get_processes(options)
|
||||||
else:
|
else:
|
||||||
print >> sys.stderr, "No workload specified. Exiting!\n"
|
print("No workload specified. Exiting!\n", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ IMPORTANT: If you modify this file, it's likely that the Learning gem5 book
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
# import the m5 (gem5) library created when gem5 is built
|
# import the m5 (gem5) library created when gem5 is built
|
||||||
import m5
|
import m5
|
||||||
# import all of the SimObjects
|
# import all of the SimObjects
|
||||||
@@ -102,6 +104,6 @@ root = Root(full_system = False, system = system)
|
|||||||
# instantiate all of the objects we've created above
|
# instantiate all of the objects we've created above
|
||||||
m5.instantiate()
|
m5.instantiate()
|
||||||
|
|
||||||
print "Beginning simulation!"
|
print("Beginning simulation!")
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())
|
print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()))
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ IMPORTANT: If you modify this file, it's likely that the Learning gem5 book
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
# import the m5 (gem5) library created when gem5 is built
|
# import the m5 (gem5) library created when gem5 is built
|
||||||
import m5
|
import m5
|
||||||
# import all of the SimObjects
|
# import all of the SimObjects
|
||||||
@@ -146,6 +148,6 @@ root = Root(full_system = False, system = system)
|
|||||||
# instantiate all of the objects we've created above
|
# instantiate all of the objects we've created above
|
||||||
m5.instantiate()
|
m5.instantiate()
|
||||||
|
|
||||||
print "Beginning simulation!"
|
print("Beginning simulation!")
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())
|
print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()))
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ IMPORTANT: If you modify this file, it's likely that the Learning gem5 book
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
# import the m5 (gem5) library created when gem5 is built
|
# import the m5 (gem5) library created when gem5 is built
|
||||||
import m5
|
import m5
|
||||||
# import all of the SimObjects
|
# import all of the SimObjects
|
||||||
@@ -51,6 +53,6 @@ root.hello.goodbye_object = GoodbyeObject(buffer_size='100B')
|
|||||||
# instantiate all of the objects we've created above
|
# instantiate all of the objects we've created above
|
||||||
m5.instantiate()
|
m5.instantiate()
|
||||||
|
|
||||||
print "Beginning simulation!"
|
print("Beginning simulation!")
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())
|
print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()))
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ system. Since there are no events, this "simulation" should finish immediately
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
# import the m5 (gem5) library created when gem5 is built
|
# import the m5 (gem5) library created when gem5 is built
|
||||||
import m5
|
import m5
|
||||||
# import all of the SimObjects
|
# import all of the SimObjects
|
||||||
@@ -49,6 +51,6 @@ root.hello = SimpleObject()
|
|||||||
# instantiate all of the objects we've created above
|
# instantiate all of the objects we've created above
|
||||||
m5.instantiate()
|
m5.instantiate()
|
||||||
|
|
||||||
print "Beginning simulation!"
|
print("Beginning simulation!")
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())
|
print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()))
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ World application. Adds a simple cache between the CPU and the membus.
|
|||||||
This config file assumes that the x86 ISA was built.
|
This config file assumes that the x86 ISA was built.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
# import the m5 (gem5) library created when gem5 is built
|
# import the m5 (gem5) library created when gem5 is built
|
||||||
import m5
|
import m5
|
||||||
# import all of the SimObjects
|
# import all of the SimObjects
|
||||||
@@ -96,6 +98,6 @@ root = Root(full_system = False, system = system)
|
|||||||
# instantiate all of the objects we've created above
|
# instantiate all of the objects we've created above
|
||||||
m5.instantiate()
|
m5.instantiate()
|
||||||
|
|
||||||
print "Beginning simulation!"
|
print("Beginning simulation!")
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())
|
print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()))
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ World application. Adds a simple memobj between the CPU and the membus.
|
|||||||
This config file assumes that the x86 ISA was built.
|
This config file assumes that the x86 ISA was built.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
# import the m5 (gem5) library created when gem5 is built
|
# import the m5 (gem5) library created when gem5 is built
|
||||||
import m5
|
import m5
|
||||||
# import all of the SimObjects
|
# import all of the SimObjects
|
||||||
@@ -94,6 +96,6 @@ root = Root(full_system = False, system = system)
|
|||||||
# instantiate all of the objects we've created above
|
# instantiate all of the objects we've created above
|
||||||
m5.instantiate()
|
m5.instantiate()
|
||||||
|
|
||||||
print "Beginning simulation!"
|
print("Beginning simulation!")
|
||||||
exit_event = m5.simulate()
|
exit_event = m5.simulate()
|
||||||
print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())
|
print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()))
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
#
|
#
|
||||||
# Authors: Brad Beckmann
|
# Authors: Brad Beckmann
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import math
|
import math
|
||||||
import m5
|
import m5
|
||||||
from m5.objects import *
|
from m5.objects import *
|
||||||
@@ -151,7 +153,7 @@ def create_system(options, full_system, system, piobus = None, dma_ports = []):
|
|||||||
ruby)"
|
ruby)"
|
||||||
% protocol)
|
% protocol)
|
||||||
except:
|
except:
|
||||||
print "Error: could not create sytem for ruby protocol %s" % protocol
|
print("Error: could not create sytem for ruby protocol %s" % protocol)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
# Create the network topology
|
# Create the network topology
|
||||||
|
|||||||
@@ -30,6 +30,8 @@
|
|||||||
#
|
#
|
||||||
# "m5 test.py"
|
# "m5 test.py"
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import optparse
|
import optparse
|
||||||
import sys
|
import sys
|
||||||
@@ -70,7 +72,7 @@ parser.add_option("-b", "--benchmark",
|
|||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# --------------------
|
# --------------------
|
||||||
@@ -297,5 +299,5 @@ if options.maxtick:
|
|||||||
else:
|
else:
|
||||||
exit_event = m5.simulate(m5.MaxTick)
|
exit_event = m5.simulate(m5.MaxTick)
|
||||||
|
|
||||||
print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
|
print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,8 @@
|
|||||||
# Splash2 Run Script
|
# Splash2 Run Script
|
||||||
#
|
#
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import optparse
|
import optparse
|
||||||
import sys
|
import sys
|
||||||
@@ -67,11 +69,11 @@ parser.add_option("-b", "--benchmark",
|
|||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
if args:
|
if args:
|
||||||
print "Error: script doesn't take any positional arguments"
|
print("Error: script doesn't take any positional arguments")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if not options.numcpus:
|
if not options.numcpus:
|
||||||
print "Specify the number of cpus with -n"
|
print("Specify the number of cpus with -n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# --------------------
|
# --------------------
|
||||||
@@ -253,9 +255,10 @@ elif options.benchmark == 'WaterNSquared':
|
|||||||
elif options.benchmark == 'WaterSpatial':
|
elif options.benchmark == 'WaterSpatial':
|
||||||
root.workload = Water_spatial()
|
root.workload = Water_spatial()
|
||||||
else:
|
else:
|
||||||
print >> sys.stderr, """The --benchmark environment variable was set to something improper.
|
print("The --benchmark environment variable was set to something "
|
||||||
Use Cholesky, FFT, LUContig, LUNoncontig, Radix, Barnes, FMM, OceanContig,
|
"improper. Use Cholesky, FFT, LUContig, LUNoncontig, Radix, "
|
||||||
OceanNoncontig, Raytrace, WaterNSquared, or WaterSpatial"""
|
"Barnes, FMM, OceanContig, OceanNoncontig, Raytrace, WaterNSquared, "
|
||||||
|
"or WaterSpatial", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# --------------------
|
# --------------------
|
||||||
@@ -281,5 +284,5 @@ if options.maxtick:
|
|||||||
else:
|
else:
|
||||||
exit_event = m5.simulate(m5.MaxTick)
|
exit_event = m5.simulate(m5.MaxTick)
|
||||||
|
|
||||||
print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
|
print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user