Hi,
I am running into some issues with Writing / Restoring Checkpoints for
the Ruby MOESI_CMP_directory Protocol on ALPHA for simulating the NAS
Benchmarks.
In particular, generating the actual checkpoint seems fine, but the
program seems to hang when attempting to restore from the checkpoint.
What I tried doing instead is using the same .rcS script to
run/generate the checkpoint, but to have it continue executing instead
of trying to restore from the ckpt later. In doing so however, a
FlushReq request is encountered:
1647 } else {
1648 if (((param_type == RubyRequestType_ST) ||
(param_type == RubyRequestType_ATOMIC))) {
1649 return L1Cache_Event_Store;
1650 } else {
1651 panic("Runtime Error at
MOESI_CMP_directory-L1cache.sm:262, Ruby Time: %d, %s.\n",
1652 g_system_ptr->getTime(), ("Invalid
RubyRequestType"));
1653 ;
1654 }
1655 }
1656 }
(gdb) p param_type
$1 = (const RubyRequestType &) @0x3a1ca48: RubyRequestType_FLUSH
that originates I believe from the RubySystem::unserialize() Function.
Well, the unserialize() routine calls the CacheRecorder, and the
CacheRecorder in turns creates a FlushReq packet. I believe it
originates from there because the only other place FlushReqs are
created are in the memory testers.
Here is the .rcS script I am using:
#!/bin/sh
cd NAS/CG/
export OMP_NUM_THREADS=4
export GOMP_CPU_AFFINITY="0 1 2 3"
OMP_PROC_BIND=true
echo "Running NAS-CG CLASS W-4 Cores"
/sbin/m5 resetstats
/sbin/m5 checkpoint
./cg.W.x
echo "Done Running Script"
/sbin/m5 exit
First off, I thought the unserialize() Member functions are only
called for each SimObject when Restoring a Checkpoint, not when you
just generate a checkpoint, and continue running the rcS Script.
Second, does this mean, that Support for FlushReqs need to be added to
the Protocols in order for this to work (I think only the hammer
protocol currently has FLUSHReq supported)?
Malek
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users