Polyhedral Source-to-Source Compiler

This paper describes a tool which enables source to source compilation. Implemented Polyhedral Source-to-Source Compiler (PSSC) is based on Polly compiler and LLVM infrastructure and it enables automatic recognition of parallel regions of C/C++ code and annotating them with OpenMP / OpenACC pragmas. The analysis of the input code is done by Polly compiler and then the results are mapped to original source code. This approach allows automatic parallelization of old code, it also ensures high level of code portability and it provides the possibility of manual optimization of the output code. Experimental results of the PSSC compiler have shown that the proposed compiler is able to reach the comparable performance as the original Polly compiler does.

[1]  Andrew B. Kahng The ITRS design technology and system drivers roadmap: Process and status , 2013, 2013 50th ACM/EDAC/IEEE Design Automation Conference (DAC).

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

[3]  Richard M. Karp,et al.  The Organization of Computations for Uniform Recurrence Equations , 1967, JACM.

[4]  Sven Verdoolaege,et al.  isl: An Integer Set Library for the Polyhedral Model , 2010, ICMS.

[5]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[6]  Albert Cohen,et al.  Putting Polyhedral Loop Transformations to Work , 2003, LCPC.

[7]  Uday Bondhugula,et al.  Effective automatic parallelization and locality optimization using the polyhedral model , 2008 .

[8]  Cédric Bastoul,et al.  Code generation in the polyhedral model is easier than you think , 2004, Proceedings. 13th International Conference on Parallel Architecture and Compilation Techniques, 2004. PACT 2004..

[9]  Rajeev Barua,et al.  AESOP : The Autoparallelizing Compiler for Shared Memory Computers , 2013 .

[10]  Rajeev Barua,et al.  Automatic Parallelization in a Binary Rewriter , 2010, 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture.

[11]  David K. Smith Theory of Linear and Integer Programming , 1987 .

[12]  A. Piotrowski,et al.  Hardware Fault Tolerance implemented in software at the compiler level with special emphasis on array-variable protection , 2008, 2008 15th International Conference on Mixed Design of Integrated Circuits and Systems.

[13]  Mehdi Amini,et al.  Source-to-Source Automatic Program Transformations for GPU-like Hardware Accelerators. (Transformations de programme automatiques et source-à-source pour accélérateurs matériels de type GPU) , 2012 .

[14]  Chris Lattner,et al.  LLVM: AN INFRASTRUCTURE FOR MULTI-STAGE OPTIMIZATION , 2000 .

[15]  Albert Cohen,et al.  GRAPHITE Two Years After First Lessons Learned From Real-World Polyhedral Compilation , 2010 .

[16]  Peter R. Cappello,et al.  Scheduling a system of affine recurrence equations onto a systolic array , 1988, [1988] Proceedings. International Conference on Systolic Arrays.

[17]  Uday Bondhugula,et al.  A practical automatic polyhedral parallelizer and locality optimizer , 2008, PLDI '08.

[18]  Rajeev Barua,et al.  Scalable variable and data type detection in a binary rewriter , 2013, PLDI.

[19]  Patrice Quinton,et al.  The mapping of linear recurrence equations on regular arrays , 1989, J. VLSI Signal Process..