Hi,

I have a multi-threaded program which runs great on GEM5 with :

--cpu-type=timing, or

--cpu-type=atomic

I have now been trying to run the same code, but with periodic repeated
switching between the timing and atomic type CPUs. Here's my command line -

*./build/X86/gem5.opt configs/example/se.py --repeat-switch=1000000000
--cpu-type=atomic --restore-with-cpu=timing --checkpoint-restore=1 --caches
-n64 --mem-size=8GB -c <application-64-threads>*

The code runs for a while, but then I get a segmentation fault. A run under
GDB tells me that this happens at -

*0x000000000068ee86 in MasterPort::sendAtomic(Packet*) () at
build/X86/mem/port.cc:168*

*168         return _slavePort->recvAtomic(pkt);*


*(gdb) bt*

*#0  0x000000000068ee86 in MasterPort::sendAtomic(Packet*) () at
build/X86/mem/port.cc:168*

*#1  0x00000000005736ef in AtomicSimpleCPU::tick() () at
build/X86/cpu/simple/atomic.cc:615*

*#2  0x00000000008000c1 in EventQueue::serviceOne() () at
build/X86/sim/eventq.cc:228*

*#3  0x0000000000820c18 in doSimLoop(EventQueue*) () at
build/X86/sim/simulate.cc:218*


Could someone confirm if this is the best way to switch between timing and
atomic models?

Any pointers on which source files to start from to debug this?

Also, I sometimes get the following print on the console when the simulator
switches from atomic to timing:

*WARNING: Bank is already active!*

*Command: 0, Timestamp: 6448, Bank: 4*

*WARNING: Bank is already active!*

*Command: 0, Timestamp: 8074, Bank: 2*

*WARNING: Bank is already active!*

*Command: 0, Timestamp: 6860, Bank: 1*


Thanks.
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to