McVM & McJIT

Overview

The McVM virtual machine currently integrates an interpreter and an optimizing JIT compiler supporting a non-trivial subset of the MATLAB programming language. The primary objective of this project is to serve as a platform to help researchers explore both static and dynamic optimization techniques for dynamic scientific languages. A secondary objective of the project is to make McVM a viable alternative implementation of the language for those who use MATLAB for scientific computing.

The McVM virtual machine began its existence in 2008 as part of Maxime Chevalier-Boisvert’s M.Sc. thesis. Through this thesis, the foundations of the virtual machine and optimizing JIT compiler were laid out. A novel type-driven just-in-time function specialization system was also designed specifically for the MATLAB language. Initial results have shown McVM to be very competitive with the GNU Octave open source implementation of MATLAB, and in many cases with the proprietary Mathworks implementation.

Nurudeen Lameed joined the McVM project in 2009 as part of his Ph.D. One of his contributions was to improve the performance of the JIT-compiled code with the help of a bounds check elimination analysis. He has since taken over the development of McVM and is currently working on developing new analyses and compilation techniques to further improve the performance of the generated code. Rahul Garg joined the project in 2009 and is focusing on effective JIT compilation for multi-core and GPUs.

People

Publications

Software

The benchmarks and the aspect used for the evaluation of copy analysis in McJIT are given here

McLab is open sourced under the Apache 2.0 license. The source code for McVM is available here.