Okay ignore my previous question….I got it… Py_Initialize() is a python/c++ API 
call provided by the python library.


On 2013-07-10, at 12:47 PM, Jack Wu <[email protected]> wrote:

> 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

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

Reply via email to