From: Steve Reinhardt Date: Wed, 1 Jun 2005 21:08:45 +0000 (-0400) Subject: A few more config updates. Works with regression now. X-Git-Tag: m5_1.0_tutorial~51 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3e7f6604013570f2afb04b1cdbf400b8c2b1fba5;p=gem5.git A few more config updates. Works with regression now. configs/splash2/run.py: Update file for new config changes. python/m5/config.py: - isParamContext() not defined any more - fix bug with re-assigning vectors over scalars and vice versa --HG-- rename : configs/splash2/run.mpy => configs/splash2/run.py extra : convert_revision : 2eb28a92f8de327f6dfddd01467c61e759275f6b --- diff --git a/configs/splash2/run.mpy b/configs/splash2/run.mpy deleted file mode 100644 index 800bff6f8..000000000 --- a/configs/splash2/run.mpy +++ /dev/null @@ -1,50 +0,0 @@ -import Splash2 - -if 'SYSTEM' not in env: - panic("The SYSTEM environment variable must be set!\ne.g -ESYSTEM=Detailed\n") - -if env['SYSTEM'] == 'Simple': - from SimpleConfig import * - BaseCPU.workload = parent.workload - SimpleStandAlone.cpu = [ CPU() for i in xrange(int(env['NP'])) ] - root = SimpleStandAlone -elif env['SYSTEM'] == 'Detailed': - from DetailedConfig import * - BaseCPU.workload = parent.workload - DetailedStandAlone.cpu = [ DetailedCPU() for i in xrange(int(env['NP'])) ] - root = DetailedStandAlone -else: - panic("The SYSTEM environment variable was set to something improper.\n Use Simple or Detailed\n") - -if 'BENCHMARK' not in env: - panic("The BENCHMARK environment variable must be set!\ne.g. -EBENCHMARK=Cholesky\n") - -if env['BENCHMARK'] == 'Cholesky': - root.workload = Splash2.Cholesky() -elif env['BENCHMARK'] == 'FFT': - root.workload = Splash2.FFT() -elif env['BENCHMARK'] == 'LUContig': - root.workload = Splash2.LU_contig() -elif env['BENCHMARK'] == 'LUNoncontig': - root.workload = Splash2.LU_noncontig() -elif env['BENCHMARK'] == 'Radix': - root.workload = Splash2.Radix() -elif env['BENCHMARK'] == 'Barnes': - root.workload = Splash2.Barnes() -elif env['BENCHMARK'] == 'FMM': - root.workload = Splash2.FMM() -elif env['BENCHMARK'] == 'OceanContig': - root.workload = Splash2.Ocean_contig() -elif env['BENCHMARK'] == 'OceanNoncontig': - root.workload = Splash2.Ocean_noncontig() -elif env['BENCHMARK'] == 'Raytrace': - root.workload = Splash2.Raytrace() -elif env['BENCHMARK'] == 'WaterNSquared': - root.workload = Splash2.Water_nsquared() -elif env['BENCHMARK'] == 'WaterSpatial': - root.workload = Splash2.Water_spatial() -else: - panic("The BENCHMARK environment variable was set to something" \ - +" improper.\nUse Cholesky, FFT, LUContig, LUNoncontig, Radix" \ - +", Barnes, FMM, OceanContig,\nOceanNoncontig, Raytrace," \ - +" WaterNSquared, or WaterSpatial\n") diff --git a/configs/splash2/run.py b/configs/splash2/run.py new file mode 100644 index 000000000..2ecdf3fc1 --- /dev/null +++ b/configs/splash2/run.py @@ -0,0 +1,79 @@ +# Copyright (c) 2005 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Ron Dreslinski + +from m5 import * +import Splash2 + +if 'SYSTEM' not in env: + panic("The SYSTEM environment variable must be set!\ne.g -ESYSTEM=Detailed\n") + +if env['SYSTEM'] == 'Simple': + from SimpleConfig import * + BaseCPU.workload = parent.workload + SimpleStandAlone.cpu = [ CPU() for i in xrange(int(env['NP'])) ] + root = SimpleStandAlone +elif env['SYSTEM'] == 'Detailed': + from DetailedConfig import * + BaseCPU.workload = parent.workload + DetailedStandAlone.cpu = [ DetailedCPU() for i in xrange(int(env['NP'])) ] + root = DetailedStandAlone +else: + panic("The SYSTEM environment variable was set to something improper.\n Use Simple or Detailed\n") + +if 'BENCHMARK' not in env: + panic("The BENCHMARK environment variable must be set!\ne.g. -EBENCHMARK=Cholesky\n") + +if env['BENCHMARK'] == 'Cholesky': + root.workload = Splash2.Cholesky() +elif env['BENCHMARK'] == 'FFT': + root.workload = Splash2.FFT() +elif env['BENCHMARK'] == 'LUContig': + root.workload = Splash2.LU_contig() +elif env['BENCHMARK'] == 'LUNoncontig': + root.workload = Splash2.LU_noncontig() +elif env['BENCHMARK'] == 'Radix': + root.workload = Splash2.Radix() +elif env['BENCHMARK'] == 'Barnes': + root.workload = Splash2.Barnes() +elif env['BENCHMARK'] == 'FMM': + root.workload = Splash2.FMM() +elif env['BENCHMARK'] == 'OceanContig': + root.workload = Splash2.Ocean_contig() +elif env['BENCHMARK'] == 'OceanNoncontig': + root.workload = Splash2.Ocean_noncontig() +elif env['BENCHMARK'] == 'Raytrace': + root.workload = Splash2.Raytrace() +elif env['BENCHMARK'] == 'WaterNSquared': + root.workload = Splash2.Water_nsquared() +elif env['BENCHMARK'] == 'WaterSpatial': + root.workload = Splash2.Water_spatial() +else: + panic("The BENCHMARK environment variable was set to something" \ + +" improper.\nUse Cholesky, FFT, LUContig, LUNoncontig, Radix" \ + +", Barnes, FMM, OceanContig,\nOceanNoncontig, Raytrace," \ + +" WaterNSquared, or WaterSpatial\n") diff --git a/python/m5/config.py b/python/m5/config.py index 5da1ba934..0aac595b1 100644 --- a/python/m5/config.py +++ b/python/m5/config.py @@ -268,7 +268,7 @@ class MetaSimObject(type): e.args = (msg, ) raise # I would love to get rid of this - elif isSimObject(value) or isSimObjSequence(value) or isParamContext(value): + elif isSimObject(value) or isSimObjSequence(value): cls._values[attr] = value else: raise AttributeError, \ @@ -334,12 +334,15 @@ class SimObject(object): e.args = (msg, ) raise # I would love to get rid of this - elif isSimObject(value) or isSimObjSequence(value) or isParamContext(value): + elif isSimObject(value) or isSimObjSequence(value): pass else: raise AttributeError, "Class %s has no parameter %s" \ % (self.__class__.__name__, attr) + # clear out old child with this name, if any + self.clear_child(attr) + if isSimObject(value): value.set_path(self, attr) elif isSimObjSequence(value): @@ -355,6 +358,16 @@ class SimObject(object): return self raise TypeError, "Non-zero index '%s' to SimObject" % key + # clear out children with given name, even if it's a vector + def clear_child(self, name): + if not self._children.has_key(name): + return + child = self._children[name] + if isinstance(child, SimObjVector): + for i in xrange(len(child)): + del self._children["s%d" % (name, i)] + del self._children[name] + def add_child(self, name, value): self._children[name] = value