A MATLAB Vectorizing Compiler Targeting Application-Specific Instruction Set Processors

This article discusses a MATLAB-to-C vectorizing compiler that exploits custom instructions, for example, for Single Instruction Multiple Data (SIMD) processing and instructions for complex arithmetic present in Application-Specific Instruction Set Processors (ASIPs). Custom instructions are represented via specialized intrinsic functions in the generated code, and the generated code can be used as input to any C/C++ compiler supporting the target processor. Furthermore, the specialized instruction set of the target processor is described in a parameterized way using a target processor-independent architecture description approach, thus allowing the support of any processor. The compiler has been used for the generation of application code for two different ASIPs for several benchmarks. The code generated by the compiler achieves a speedup between 2× --74× and 2× --97× compared to the code generated by the MathWorks MATLAB-to-C compiler. Experimental results also prove that the compiler efficiently exploits SIMD custom instructions achieving a 3.3 factor speedup compared to cases where no SIMD processing is used. Thus the compiler can be employed to reduce the development time/effort/cost and time to market through raising the abstraction of application design in an embedded systems/system-on-chip development context.

[1]  Luiz A. DeRose,et al.  Compiler techniques for MATLAB programs , 1996 .

[2]  Alex K. Jones,et al.  A MATLAB compiler for distributed, heterogeneous, reconfigurable computing systems , 2000, Proceedings 2000 IEEE Symposium on Field-Programmable Custom Computing Machines (Cat. No.PR00871).

[3]  Francky Catthoor,et al.  Energy-Efficient Communication Processors , 2013 .

[4]  R. Govindarajan,et al.  Automatic compilation of MATLAB programs for synergistic execution on heterogeneous processors , 2011, PLDI '11.

[5]  Alok N. Choudhary,et al.  MATCH: A MATLAB Compiler For Configurable Computing Systems , 1999 .

[6]  David A. Padua,et al.  An Evaluation of Vectorizing Compilers , 2011, 2011 International Conference on Parallel Architectures and Compilation Techniques.

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

[8]  François Bodin,et al.  Menhirc An environment for high performance Matlab , 1999 .

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

[10]  Prithviraj Banerjee An overview of a compiler for mapping MATLAB programs onto FPGAs , 2003, ASP-DAC '03.

[11]  David A. Padua,et al.  MaJIC: compiling MATLAB for speed and responsiveness , 2002, PLDI '02.

[12]  Arun Chauhan,et al.  MATLAB Parallelization through Scalarization , 2011, 2011 15th Workshop on Interaction between Compilers and Computer Architectures.

[13]  Prithviraj Banerjee,et al.  Overview of a compiler for synthesizing MATLAB programs onto FPGAs , 2004, IEEE Transactions on Very Large Scale Integration (VLSI) Systems.

[14]  Ken Kennedy,et al.  Optimizing Compilers for Modern Architectures: A Dependence-based Approach , 2001 .

[15]  Prithviraj Banerjee,et al.  A translator system for the MATLAB language: Research Articles , 2007 .

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

[17]  Embedded Coder Generate C and C + + code optimized for embedded systems , .

[18]  Hai Zhou,et al.  Parallel CAD: Algorithm Design and Programming Special Section Call for Papers TODAES: ACM Transactions on Design Automation of Electronic Systems , 2010 .

[19]  Ray Andraka,et al.  A survey of CORDIC algorithms for FPGA based computers , 1998, FPGA '98.

[20]  J. Dongarra,et al.  Generalized QR factorization and its applications , 1992 .

[21]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools (2nd Edition) , 2006 .

[22]  François Bodin,et al.  Menhir: An Environment for High Performance Matlab , 1998, LCR.

[23]  João M. P. Cardoso,et al.  Techniques for efficient MATLAB-to-C compilation , 2015, ARRAY@PLDI.

[24]  Milissa M. Benincasa,et al.  Rapid development of real-time systems using RTExpress/sup TM/ , 1998, Proceedings of the First Merged International Parallel Processing Symposium and Symposium on Parallel and Distributed Processing.

[25]  João M. P. Cardoso,et al.  Multi-Target C Code Generation from MATLAB , 2014, ARRAY@PLDI.

[26]  Michael J. Quinn,et al.  Preliminary results from a parallel MATLAB compiler , 1998, Proceedings of the First Merged International Parallel Processing Symposium and Symposium on Parallel and Distributed Processing.

[27]  Giovanni De Micheli,et al.  Synthesis and Optimization of Digital Circuits , 1994 .

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

[29]  Michael J. Quinn,et al.  Otter: bridging the gap between MATLAB and ScaLAPACK , 1998, Proceedings. The Seventh International Symposium on High Performance Distributed Computing (Cat. No.98TB100244).

[30]  Bruno Cardoso Lopes,et al.  Getting Started with LLVM Core Libraries , 2014 .