Compiler infrastructures that support experimental research are crucial to the advancement of high-performance computing. New compiler technology must be implemented and evaluated in the context of a complete compiler, but developing such an infrastructure requires a huge investment in time and resources. We have spent a number of years building the SUIF compiler into a powerful, flexible system, and we would now like to share the results of our efforts. SUIF consists of a small, clearly documented kernel and a toolkit of compiler passes built on top of the kernel. The kernel defines the intermediate representation, provides functions to access and manipulate the intermediate representation, and structures the interface between compiler passes. The toolkit currently includes C and Fortran front ends, a loop-level parallelism and locality optimizer, an optimizing MIPS back end, a set of compiler development tools, and support for instructional use. Although we do not expect SUIF to be suitable for everyone, we think it may be useful for many other researchers. We thus invite you to use SUIF and welcome your contributions to this infrastructure. The SUIF software is freely available via anonymous ftp from suif.Stanford.EDU. Additional information about SUIF can be found on the World-Wide Web at http://suif.Stanford.EDU.
Cited By
- Farzan A and Nicolet V (2017). Synthesis of divide and conquer parallelism for loops, ACM SIGPLAN Notices, 52:6, (540-555), Online publication date: 14-Sep-2017.
- Farzan A and Nicolet V Synthesis of divide and conquer parallelism for loops Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, (540-555)
- Lattuada M, Pilato C and Ferrandi F (2016). Performance Estimation of Task Graphs Based on Path Profiling, International Journal of Parallel Programming, 44:4, (735-771), Online publication date: 1-Aug-2016.
- Zhang Y, Kandemir M and Yemliha T Studying inter-core data reuse in multicores Proceedings of the ACM SIGMETRICS joint international conference on Measurement and modeling of computer systems, (25-36)
- Zhang Y, Kandemir M and Yemliha T (2011). Studying inter-core data reuse in multicores, ACM SIGMETRICS Performance Evaluation Review, 39:1, (25-36), Online publication date: 7-Jun-2011.
- Feautrier P and Gonnord L (2019). Accelerated Invariant Generation for C Programs with Aspic and C2fsm, Electronic Notes in Theoretical Computer Science (ENTCS), 267:2, (3-13), Online publication date: 1-Oct-2010.
- Guo Y, Naser M and Moritz C PARE Proceedings of the 2005 international symposium on Low power electronics and design, (339-344)
- Carroll S and Polychronopoulos C (2018). A framework for incremental extensible compiler construction, International Journal of Parallel Programming, 32:4, (289-316), Online publication date: 1-Aug-2004.
- Guo Y, Chheda S, Koren I, Krishna C and Moritz C Energy-aware data prefetching for general-purpose programs Proceedings of the 4th international conference on Power-Aware Computer Systems, (78-94)
- Carroll S and Polychronopoulos C A framework for incremental extensible compiler construction Proceedings of the 17th annual international conference on Supercomputing, (53-62)
- Guo Y, Chheda S and Moritz C Runtime biased pointer reuse analysis and its application to energy efficiency Proceedings of the Third international conference on Power - Aware Computer Systems, (1-12)
- Carroll S, Ko W, Yankelevsky M and Polychronopoulos C Optimizing compiler design for modularity and extensibility Proceedings of the 14th international conference on Languages and compilers for parallel computing, (1-17)
- Sudarsanam A, Malik S and Fujita M A retargetable compilation methodology for embedded digital signal processors using a machine-dependent code optimizaton library Readings in hardware/software co-design, (506-515)
- Ishizaki K, Komatsu H and Nakatani T (2019). A Loop Transformation Algorithm for Communication Overlapping, International Journal of Parallel Programming, 28:2, (135-154), Online publication date: 1-Apr-2000.
- Raghavachari M and Rogers A Ace Proceedings of the sixth ACM SIGPLAN symposium on Principles and practice of parallel programming, (80-89)
- Raghavachari M and Rogers A (1997). Ace, ACM SIGPLAN Notices, 32:7, (80-89), Online publication date: 1-Jul-1997.
- Yamauchi T, Hammond L and Olukotun K The Hierarchical Multi-Bank DRAM Proceedings of the 17th Conference on Advanced Research in VLSI (ARVLSI '97)
- Zhang X, Wang Z, Gloy N, Chen J and Smith M (1997). System support for automatic profiling and optimization, ACM SIGOPS Operating Systems Review, 31:5, (15-26), Online publication date: 1-Dec-1997.
- Zhang X, Wang Z, Gloy N, Chen J and Smith M System support for automatic profiling and optimization Proceedings of the sixteenth ACM symposium on Operating systems principles, (15-26)
- Liao S, Devadas S, Keutzer K, Tjiang S and Wang A Storage assignment to decrease code size Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation, (186-195)
- Liao S, Devadas S, Keutzer K, Tjiang S and Wang A (2019). Storage assignment to decrease code size, ACM SIGPLAN Notices, 30:6, (186-195), Online publication date: 1-Jun-1995.
Recommendations
Improving compiler scalability: optimizing large programs at small price
PLDI '15Compiler scalability is a well known problem: reasoning about the application of useful optimizations over large program scopes consumes too much time and memory during compilation. This problem is exacerbated in polyhedral compilers that use powerful ...
The Intel labs Haskell research compiler
Haskell '13The Glasgow Haskell Compiler (GHC) is a well supported optimizing compiler for the Haskell programming language, along with its own extensions to the language and libraries. Haskell's lazy semantics imposes a runtime model which is in general difficult ...
A portable optimizing compiler for Modula-2
Proceedings of the SIGPLAN '84 symposium on compiler constructionA portable compiler for the Modula-2 programming language has been implemented with a simple, machine independent optimizer. The front end of the compiler generates a dialect of P-code, and the back end translates the P-code into machine language. The ...