Thanks for the quick response Sam! Yeah I saw that that also seems to be how the CPU swapping is implemented, and for switching out a few objects this seems like the easiest way to get this to work.
But my use case is a bit messy and I want to make larger structural changes. So I am wondering if this is something that is doable in principle within the object/config model, or if I need to figure out some workaround. For a bit more context: we're trying to partition one larger multi-core simulation configuration into multiple smaller parts that we connect together (and synchronize) at the memory ports going across configurations. We have the interconnections and synchronization working for SE configs where we manually configure each partition, but I'm trying to figure out the simplest way of doing this for full-system, where the initialization in the workload etc. really needs the global view of all thread contexts etc. so I was hoping we could just create it and initialize it in one process, and then checkpoint, and then restore the checkpoint for each partition but delete the unneeded objects and add in the "proxy objects" connecting partitions. If that does not work the initialization gets a fair bit more complex, which I would like to avoid if possible. So if anyone has any pointers to indicate that making such changes to the simulation structure are generally possible or impossible that would be very useful before we get too deep down into the weeds. :-) Thanks Antoine On Tue, Apr 12 15:49, Thomas, Samuel via gem5-users wrote: > Hi Antoine, > > We had a similar use case in our work. Our solution was to include all of > the objects that we wanted to in the system and implement them so that they > forward all packets in the mode that you don't care about. For us, we > wanted to include an object that we didn't want to do anything during > fast-forward mode, so our implementation of its port functions that handle > atomic requests merely sends the packets along without doing any > processing. In theory, you could do the same with timing packets if you > don't want the object to be in the system during an atomic mode > fast-forward but not in the system for timing mode. > > I hope this helps! > > Best, > Sam > > On Tue, Apr 12, 2022 at 3:43 PM Antoine Kaufmann via gem5-users < > [email protected]> wrote: > > > Hi everyone, > > > > I have a quick conceptual question about gem5 configuration: are there > > restrictions about what can be modified in an already instantiated and > > initialized gem5 config, say after restoring from a checkpoint. I know > > there is > > some special cases such as replacing CPUs on restore. Is this something > > that > > gem5 supports more generally, e.g. swapping out, adding, > > connecting/disconnecting, or removing SimObjects in a simulation? Or is > > making > > changes to the simulation structure generally a problem? > > > > The use-case I'm looking at is similar to the CPU swapping, but wih other > > objects as well, basically boot system with a fast config, and then swap > > out > > other things too for more detailed versions. (setting up logical state for > > the > > replacement simobjects is something I have in hand, so I'm only wondering > > about > > whether gem5 will be unhappy if I attempt to make such structural changes > > to a > > simulation). > > > > Thanks in advance, > > Antoine > > > > -- > > Antoine Kaufmann > > <[email protected]> > > _______________________________________________ > > gem5-users mailing list -- [email protected] > > To unsubscribe send an email to [email protected] > > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s > _______________________________________________ > gem5-users mailing list -- [email protected] > To unsubscribe send an email to [email protected] > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s -- Antoine Kaufmann <[email protected]>
signature.asc
Description: PGP signature
_______________________________________________ gem5-users mailing list -- [email protected] To unsubscribe send an email to [email protected] %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
