The MATISSE MATLAB compiler

This paper describes MATISSE, a MATLAB to C compiler targeting embedded systems that is based on Strategic and Aspect-Oriented Programming concepts. MATISSE takes as input: (1) MATLAB code and (2) LARA aspects related to types and shapes, code insertion/removal, and specialization based directives defining default variable values. In this paper we also illustrate the use of MATISSE in leveraging data types and shapes to generate customized C code suitable for high-level hardware synthesis tools. The preliminary experimental results presented here reveal the described approach to yield performance results for the resulting hardware and software references implementations that are comparable in terms of performance with hand-crafted solutions but derived automatically at a fraction of the cost.

[1]  Prithviraj Banerjee,et al.  Automatic conversion of floating point MATLAB programs into fixed point FPGA based hardware design , 2003, 11th Annual IEEE Symposium on Field-Programmable Custom Computing Machines, 2003. FCCM 2003..

[2]  Matlab Matlab (the language of technical computing): using matlab graphics ver.5 , 2014 .

[3]  Prithviraj Banerjee,et al.  The MAGICA Type Inference Engine for MATLAB , 2003, CC.

[4]  Best Practices for a MATLAB to C Workflow Using Real-Time Workshop , 2009 .

[5]  Alok N. Choudhary,et al.  Parallelization of MATLAB Applications for a Multi-FPGA System , 2001, The 9th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM'01).

[6]  Wayne Luk,et al.  LARA: an aspect-oriented programming language for embedded systems , 2012, AOSD '12.

[7]  João Saraiva,et al.  A domain-specific aspect language for transforming MATLAB programs , 2010 .

[8]  João Saraiva,et al.  Program and Aspect Metrics for MATLAB , 2012, ICCSA.

[9]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[10]  Joseph D. Gradecki,et al.  Mastering AspectJ: Aspect-Oriented Programming in Java , 2003 .

[11]  Vlad Mihai Sima,et al.  DWARV 2.0: A CoSy-based C-to-VHDL hardware compiler , 2012, 22nd International Conference on Field Programmable Logic and Applications (FPL).

[12]  Eelco Visser,et al.  Turning dynamic typing into static typing by program specialization in a compiler front-end for Octave , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[13]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[14]  Prithviraj Banerjee,et al.  Correctly detecting intrinsic type errors in typeless languages such as MATLAB , 2000, APL '01.

[15]  Miguel P. Monteiro,et al.  Adding aspect-oriented features to MATLAB , 2006 .

[16]  Laurie J. Hendren,et al.  Kind analysis for MATLAB , 2011, OOPSLA '11.

[17]  David A. Padua,et al.  Techniques for the translation of MATLAB programs into Fortran 90 , 1999, TOPL.

[18]  Laurie J. Hendren,et al.  Optimizing Matlab through Just-In-Time Specialization , 2010, CC.

[19]  Laurie J. Hendren,et al.  AspectMatlab: an aspect-oriented scientific programming language , 2010, AOSD.

[20]  Prithviraj Banerjee,et al.  Static array storage optimization in MATLAB , 2003, PLDI '03.

[21]  Prithviraj Banerjee,et al.  An algebraic array shape inference system for MATLAB® , 2006, TOPL.

[22]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[23]  Ralf Lämmel,et al.  Strategic programming meets adaptive programming , 2003, AOSD '03.

[24]  Pedro C. Diniz,et al.  Compilation and Synthesis for Embedded Reconfigurable Systems , 2013 .