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:
Gabe Black
2018-03-05 22:51:34 -08:00
parent 0bb50e6745
commit 659900aedd
39 changed files with 273 additions and 194 deletions

View File

@@ -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):

View File

@@ -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 = \

View File

@@ -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."""

View File

@@ -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'

View File

@@ -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)
#---------------------------------------------------------------------------------------- #----------------------------------------------------------------------------------------

View File

@@ -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)

View File

@@ -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."""

View File

@@ -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"))

View File

@@ -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

View File

@@ -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()

View File

@@ -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)

View File

@@ -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)

View File

@@ -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))

View File

@@ -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())

View File

@@ -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())

View File

@@ -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))

View File

@@ -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())

View File

@@ -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())

View File

@@ -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

View File

@@ -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:

View File

@@ -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())

View File

@@ -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__":

View File

@@ -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())

View File

@@ -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())

View File

@@ -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())

View File

@@ -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())

View File

@@ -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())

View File

@@ -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())

View File

@@ -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())

View File

@@ -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)

View File

@@ -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()))

View File

@@ -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()))

View File

@@ -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()))

View File

@@ -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()))

View File

@@ -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()))

View File

@@ -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()))

View File

@@ -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

View File

@@ -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())

View File

@@ -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())