Hi Andreas, Thanks for your feedback. I looked over the tutorial and I'm reading about the SimObjects (http://www.m5sim.org/SimObjects) and there is a call sequence diagram.
Based on the diagram, the gem5 program starts at the main() function in c++ and then invokes the python interpreter to deal with the configuration scripts like you mentioned. But what I am confused about is how the python is invoked. The functions that main() calls are: -initSignals() -Py_SetProgramName(argv[0]) -Py_Initialize() -initM5Python() -m5Main(argc, argv) -Py_Finalize() From comments in source code, the "Py_Initialize()" function is used to initialize the embedded python interpreter. I tried to grep for this function and see where it's implemented and can't find anything, so how does this function invoke the python interpreter? (Also the Py_SetProgramName() and Py_Finalize() functions have no implementation either ) Many Thanks, Jack On 2013-07-10, at 12:13 PM, Andreas Hansson <[email protected]> wrote: > Hi Jack, > > If you look at the HiPEAC tutorial slides there is an overview of "the big > picture" that shows roughly what is going on. gem5 kicks off a python > interpreter that reads your configuration script, for example se.py. This > script works with a bunch of Python classes to assemble and configure your > system. The System() class you mention is a Python class with a bunch of > knobs (and some of these also have ports). > > Once you have got all these configured and assembled, the simulate.py > script goes and turns them into their corresponding C++ classes and passes > the parameters that you set in the Python code. Thus, the Python code is > used to assemble and configure the system (and orchestrate the > simulation), and the C++ classes actually _do_ something during the > simulation itself. > > I hope that makes things a bit more clear. > > Andreas > > On 10/07/2013 16:52, "Jack Wu" <[email protected]> wrote: > >> Dear Community, >> >> I am new to gem5 and trying to understand gem5 by looking at the source >> code starting from the main() function and configuration scripts such as >> config/example/se.py. >> >> I don't quite understand the interaction between python and c++. The >> following are what I think how it works, please correct me if something >> is not right. >> >> 1) Python accessing c++ objects: >> >> -SWIG is used to provide the abstraction of c++ object through *.i files >> so these objects can be used in python like regular python objects (e.g. >> list or dictionary). >> >> - all c++ objects are compiled into a python module called "m5", which is >> compiled directly into the gem5 binary (e.g. gem.opt). >> >> -an example of using c++ objects in python would something like (from >> se.py): system = System(Š.) // I am guessing System is an object in c++? >> >> >> 2) c++ accessing python objects: >> >> -while looking at the main() function, it calls initM5python(), which in >> turn calls a) EmeddedSwig::initAll() and b) EmbeddedPython::initAll() >> >> -I am quite confused about these function calls and their purpose. Are >> they trying to access certain objects in python? >> >> -For example: I see an variable called "PyObject" and it's a "typedef >> _object PyObject" (in src/sim/init.hh). However "_object" is declared as >> "struct _object" and it's not defined anywhere. >> >> -There are a bunch of other variables which are declared but not defined >> and it seems to have something to do with python, but I am not sure how >> this works >> >> >> Comments and feedback are much appreciated. >> >> Thanks In Advance, >> Jack >> _______________________________________________ >> gem5-users mailing list >> [email protected] >> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users >> > > > -- 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-users mailing list > [email protected] > http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________ gem5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
