Re: [gem5-dev] annoying rebuild of swig wrappers during NULL build

2017-04-22 Thread Andreas Hansson
Note that Swig is about to be removed and replaced with Pybind11. Perhaps
the problem will still be there, but don’t invest time if that’s not the
case.

Andreas

On 22/04/2017, 00:55, "gem5-dev on behalf of Steve Reinhardt"
 wrote:

>Yup, I remember getting frustrated by this and looking into it and
>realizing that the problem is that the dependencies get reordered. Seemed
>like the right thing would be to sort the dependencies at the right point
>so that the insertion order doesn't matter, but I never figured out when
>or
>how to do that, so I gave up. Best wishes on finding a solution!
>
>Steve
>
>
>On Fri, Apr 21, 2017 at 4:36 PM, Gabe Black  wrote:
>
>> Hi folks. I've been looking into why the swig wrappers are all rebuilt
>>even
>> after a successful build when nothing has changed. I think I know why,
>>but
>> I'm not quite sure how to fix it.
>>
>> Basically, when scons scans the files looking for dependencies using the
>> ClassicCPP scanner class (which has been used to build a swig scanner),
>>it
>> will recursively look through dependencies which are identified in an
>> earlier pass. This makes sense for regular-ole-C, where that might be
>>the
>> only way to identify dependencies from nested includes. If it gets to a
>> point where there's an include and there isn't a file for it yet
>>(because
>> it's a generated file probably), then it will stop recursing. Later on,
>> when that file is actually generated, its dependencies will be scanned
>>for,
>> and will transitively become dependencies for the original file (I
>>think).
>>
>> This leads to a problem where the files involved don't exist in the
>>first
>> build, but older versions of them do exist in subsequent builds. The
>>first
>> build will stop recursing when it hits those files and their
>>dependencies
>> won't be added. The later builds will be able to recurse into those
>>files,
>> however, and they'll add those dependencies right away. The list of
>> dependencies are correct in either case (at least as far as I can tell),
>> but because they're added in a different way the order is different.
>> Because scons is really picky, the dependency ordering change causes
>>those
>> files to be "rebuilt", resulting in an identical tree.
>>
>> Subsequent NULL builds will have the same dependency ordering as the
>>second
>> build, assuming nothing else has changed, and so the annoying swig
>>rebuild
>> won't happen.
>>
>> At this point I'm sort of at a loss as to what to do, because this
>>seems to
>> just be something broken in how scons handles scanning for dependencies
>>in
>> generated files. If anybody has any ideas, please let me know. This
>>isn't
>> anything that urgently needs fixing, but it would be nice to knock off
>>that
>> rough edge.
>>
>> Gabe
>> ___
>> gem5-dev mailing list
>> gem5-dev@gem5.org
>> http://m5sim.org/mailman/listinfo/gem5-dev
>___
>gem5-dev mailing list
>gem5-dev@gem5.org
>http://m5sim.org/mailman/listinfo/gem5-dev

IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Getting rid of CpuConfig.py

2017-04-22 Thread Gabe Black
Hi folks, I'm looking at refactoring some of the config code, and
CpuConfig.py is complicating things a bit. It's a central point where
there's a list of things, specifically CPU models, and so to add new CPU
models you need to modify that file. That makes it hard for things that
define new CPU models to be kept out of the main code base.

What I'd like to do is to add a concept of a "flavor" of CPU which would be
defined as part of the CPU subclasses and which would be aggregated in
BaseCPU. If a CPU has a member called "flavor" when it's defined, that
string will take the place of the CPU aliases which currently exist. Those
will be aggregated in BaseCPU using a metaclass, and could be listed,
queried against, etc., like the code in CpuConfig.py today, but without
having to centralize all those definitions.

This sounds like something that could be useful in other places where there
are collections of similar, largely interchangeable things with different
implementations, so it might even be nice to wrap the implementation in a
python decorator, for instance, which could be used for other things like
prefetchers, etc. That would be above and beyond what I'm hoping to do for
now, but I thought I'd throw it out there in case it seemed like a good
idea to folks.

Thoughts?

Gabe
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Cron <m5test@zizzer> /z/m5/regression/do-regression quick

2017-04-22 Thread Cron Daemon
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: CHANGED!
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: CHANGED!
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple:
 CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-atomic: CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing-ruby: 
CHANGED!
* build/POWER/tests/opt/quick/se/00.hello/power/linux/o3-timing: CHANGED!
* build/POWER/tests/opt/quick/se/00.hello/power/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing: 
CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing-ruby: 
CHANGED!
* build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/o3-timing: CHANGED!
Statistics mismatch* 
build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-timing: CHANGED!
*** diff[config.ini]: SKIPPED* 
build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-atomic: CHANGED!
* 
build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-two-level:
 CHANGED!
*** stat_diff: FAILURE: Statistics mismatch* 
build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-simple:
 CHANGED!
* build/SPARC/tests/opt/quick/se/10.mcf/sparc/linux/simple-atomic: CHANGED!
*** stat_diff: FAILURE: Statistics mismatch* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-timing-mp:
 CHANGED!
*** diff[config.ini]: SKIPPED* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp:
 CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/o3-timing-mp:
 CHANGED!
* build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-timing: 
CHANGED!
* build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-timing: 
CHANGED!
* build/X86/tests/opt/quick/se/00.hello/x86/linux/o3-timing: CHANGED!
* 
build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-simple:
 CHANGED!* 
build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing: CHANGED!
* build/X86/tests/opt/quick/se/10.mcf/x86/linux/simple-atomic: CHANGED!*** 
diff[smred.sv2]: SKIPPED
*** diff[smred.pl1]: SKIPPED* 
build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing-ruby: CHANGED!
* build/X86/tests/opt/quick/se/70.twolf/x86/linux/simple-atomic: CHANGED!
* build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-atomic: CHANGED!
* build/X86/tests/opt/quick/se/70.twolf/x86/linux/simple-timing: CHANGED!
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/o3-timing-checker: 
CHANGED!
* 
build/ARM/tests/opt/quick/se/00.hello/arm/linux/simple-atomic-dummychecker: 
CHANGED!*** diff[simout]: SKIPPED
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/o3-timing: CHANGED!
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/minor-timing: CHANGED!
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/simple-atomic: CHANGED!
* 
build/ARM/tests/opt/quick/se/03.learning-gem5/arm/linux/learning-gem5-p1-two-level:
 CHANGED!
* 
build/ARM/tests/opt/quick/se/03.learning-gem5/arm/linux/learning-gem5-p1-simple:
 CHANGED!
* build/ARM/tests/opt/quick/se/10.mcf/arm/linux/simple-atomic: CHANGED!
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/simple-timing: CHANGED!
* build/ARM/tests/opt/quick/se/50.vortex/arm/linux/simple-atomic: CHANGED!
* build/ARM/tests/opt/quick/se/10.mcf/arm/linux/simple-timing: CHANGED!--- 
quick/se/70.twolf/arm/linux/simple-atomic ---
*** diff[simout]: SKIPPED* 
build/ARM/tests/opt/quick/se/50.vortex/arm/linux/simple-timing: CHANGED!
* build/ARM/tests/opt/quick/se/70.twolf/arm/linux/simple-atomic: CHANGED!
* build/ARM/tests/opt/quick/se/70.twolf/arm/linux/simple-timing: CHANGED!
* 
build/ARM/tests/opt/quick/fs/10.linux-boot/arm/linux/realview-simple-timing: 
CHANGED!
* 
build/ARM/tests/opt/quick/fs/10.linux-boot/arm/linux/realview-simple-timing-dual:
 CHANGED!
* build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/minor-timing: CHANGED!
* build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/o3-timing: CHANGED!
* build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/simple-atomic: 
CHANGED!
*** diff[config.json]: SKIPPED* 
build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/simple-timing-ruby: CHANGED!
* build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/simple-timing: 
CHANGED!
*