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

Reply via email to