Hi Jason,

Thanks for the reply!
I was hoping for something light-weight, similar to Unicorn, but based on
gem5 instead of QEMU...

I tried running
  build/X86/gem5.opt configs/example/se.py -c
./tests/test-progs/hello/bin/x86/linux/hello
and it takes 0.3 second -- too slow.

The profile shows:
  14.55%  gem5.opt  libpython3.9.so.1.0    [.] _PyEval_EvalFrameDefault



   2.31%  gem5.opt  libpython3.9.so.1.0    [.] _PyType_Lookup



   2.01%  gem5.opt  libpython3.9.so.1.0    [.]
_PyObject_GenericGetAttrWithDict


   1.09%  gem5.opt  libpython3.9.so.1.0    [.] _Py_CheckFunctionResult



   1.06%  gem5.opt  libpython3.9.so.1.0    [.] 0x00000000002000b0



...
I.e. all the time for simulating a tiny test is spent in python.

I'd like to be able to simulate tiny programs, like "hello" from the
examples,
but hopefully at least 100x faster than this.

What's the best supported mechanism for running many tiny simulations
w/o having to pay for the large python overhead?
Any examples?

--kcc






On Thu, Jul 1, 2021 at 5:00 PM Jason Lowe-Power <ja...@lowepower.com> wrote:

> Hello,
>
> It's somewhat possible. You can compile gem5 as a library (e.g., scons
> build/<Default build opts>/libgem5-opt.so). However, gem5 *is a python
> interpreter* and is configured via python scripts. Getting that to work
> with an external program is "exciting". It's possible to get python
> working, and there are other workarounds like using the CXXConfig
> interface, but it's not straightforward or easy to understand.
>
> Unless you're trying to integrate gem5 into another simulator, it's
> unlikely that invoking gem5 from another program is the best option. Even
> in this case, I would advise going the other way and using gem5 as the
> driver simulator. That said, there are many simulators that integrate with
> gem5. You can easily hook in things like DRAMSim, at one point I integrated
> it with GPGPU-Sim (this is now incredibly out of date), and there is an
> SST-gem5 bridge that we are actively working on. Finally, there are many
> efforts to integrate gem5 with SystemC including implementing the entire
> SystemC spec in gem5.
>
> Hopefully this helps. I'd be happy to provide more specific help with some
> more information :).
>
> Cheers,
> Jason
>
> On Thu, Jul 1, 2021 at 4:49 PM Konstantin Serebryany via gem5-users <
> gem5-users@gem5.org> wrote:
>
>> Hi,
>>
>> [gem5 newbie here... ]
>>
>> Does gem5 have a C++ API?
>>
>> I am interested in using gem5 as a library, i.e. invoking
>> the system call emulation mode from within my process,
>> without fork/exec or python.
>> Is that at all possible?
>> Any pointers?
>>
>> thanks!
>>
>> --kcc
>>
>> _______________________________________________
>> gem5-users mailing list -- gem5-users@gem5.org
>> To unsubscribe send an email to gem5-users-le...@gem5.org
>> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
>
>
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to