Parallel Virtual Machines with RPython
The RPython framework takes an interpreter for a dynamic language as its input
and produces a Virtual Machine~(VM) for that language. RPython is being used
to develop PyPy, a high-performance Python interpreter. However, the produced
VM does not support parallel execution since the framework relies on a Global
Interpreter Lock~(GIL): PyPy serialises the execution of multi-threaded Python
programs.
We describe the rationale and design of a new parallel execution model for RPython that
allows the generation of parallel virtual machines while leaving the language semantics
unchanged. This model then allows different implementations of concurrency control, and
we discuss an implementation based on a GIL and an implementation based on
Software Transactional Memory~(STM).
To evaluate the benefits of either choice, we adapt PyPy to work with both
implementations (GIL and STM). The evaluation shows that PyPy with STM improves the
runtime of a set of multi-threaded Python programs over PyPy with a GIL by
factors in the range of $1.87\times$ up to $5.96\times$ when
executing on a processor with 8 cores.
Tue 1 NovDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 15:10 | |||
13:30 25mTalk | Parallel Virtual Machines with RPython DLS DOI | ||
13:55 25mTalk | Building Efficient and Highly Run-Time Adaptable Virtual Machines DLS Guido Chari University of Buenos Aires, Argentina, Diego Garbervetsky University of Buenos Aires, Argentina, Stefan Marr Johannes Kepler University Linz DOI Pre-print | ||
14:20 25mTalk | Efficiently Implementing the Copy Semantics of MATLAB's Arrays in JavaScript DLS DOI | ||
14:45 25mTalk | Optimizing R Language Execution via Aggressive Speculation DLS Lukas Stadler Oracle Labs, Austria, Adam Welc Oracle Labs, USA, Christian Humer Oracle Labs, Switzerland, Mick Jordan Oracle Labs, USA DOI |