Hello all:

I am a master student from National Taiwan University. We're
integrating own GPU simulator into MARSSx86 to model a CPU-GPU
heterogeneous system with shared last level cache / main memory such
as Intel Sandy Bridge or AMD Fusion Llano.

Our GPU simulator is implemented as an vistual I/O device of QEMU.
Through the MMIO-memory, applications executing in the guest OS can
send commands and data to the GPU simulator for simulation in the
emulation mode. The procedure described above is proved OK. However,
after switching to the simulation mode, I/O devices seem to stall and
therefore the GPU simulator do not receive any command or data.

After tracing the codes in the qemu/vl.c, I found that QEMU executes
different functions in the emulation mode than in the simulation mode.
QEMU executes cpu_exec_all() in the emulation mode while
sim_cpu_exec() is executed in the simulation mode. Does it mean that
PTL-Sim do not handle the I/O devices and the behaviors of the I/O
devices are completed ignored?

I tried to switch modes between emulation and simulation alternately
with ptl-calls and ptl_reconfigure("-stop"). In the beginning, I
executed an application in the guest OS to prepare commands and data,
and invoking ptl-calls to enter the simulation mode. After the
graphics rendering finished, the GPU simulator would call
ptl_reconfigure("-stop") to go back emulation mode. And then it's turn
for the application in the guest OS to prepare the commands and data
again. Unfortunately, this method is not stable. Sometimes the
simulation ends without error but sometimes it is terminated
unexpectedly.

Does anyone have comments on the implementation of the framework?  Any
suggestion would be helpful.
Thanks.

Best Regards

Louis.Liu
_______________________________________________
http://www.marss86.org
Marss86-Devel mailing list
[email protected]
https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel

Reply via email to