# Further Reading

This is a short annotated list of papers and presentations about SPIRAL. For a comprehensive list see Carnegie Mellon’s SPIRAL Publications page.

## About SPIRAL in General

### SPIRAL: Extreme Performance Portability (2018)

This is the most recent major paper about SPIRAL.

Franz Franchetti, Tze Meng Low, Doru Thom Popovici, Richard M. Veras,Daniele G. Spampinato, Jeremy R. Johnson, Markus Püschel, James C. Hoe, José M. F. Moura:SPIRAL: Extreme Performance Portability.Proceedings of the IEEE, Special Issue onFrom High Level Specifications to High Performance Code, 2018

### SPIRAL (2011)

If you are only going to read one article about SPIRAL, this is the one to read. It walks through the major concepts and components of SPIRAL with lots of illustrations and examples.

Markus Püschel, Franz Franchetti, Yevgen Voronenko:Spiral.Encyclopedia of Parallel Computing 2011: 1920-1933

### Spiral: Computer Generation of Performance Libraries (2011)

This short slide presentation illustrates the key points about SPIRAL.

José M. F. Moura, Markus Püschel, Franz Franchetti:Spiral: Computer Generation of Performance LibrariesCarnegie Mellon University 2011

### SPIRAL: Code Generation for DSP Transforms (2005)

Though several papers about SPIRAL predate it, this 2005 deep dive is SPIRAL’s historical debut on the main stage. SPIRAL has grown a lot since then,
but this article covers most of major components, particularly *Signal Processing Language (SPL)* and *Breakdown Rules*. As a bonus, it has photos of
the (young) authors/team.

Markus Püschel, José M. F. Moura, Jeremy R. Johnson, David A. Padua, Manuela M. Veloso, Bryan Singer,Jianxin Xiong, Franz Franchetti, Aca Gacic, Yevgen Voronenko, Kang Chen, Robert W. Johnson, Nicholas Rizzolo:SPIRAL: Code Generation for DSP Transforms.Proceedings of the IEEE 93(2): 232-275 (2005)

## Key Internal Functionality

### A Rewriting System for the Vectorization of Signal Transforms (2006)

Understanding SPIRAL requires understanding its layers of rewriting. This paper shows how SPIRAL uses rewrite rules to map signal transforms to vector instructions.

F. Franchetti, Y. Voronenko, M. PüschelA Rewriting System for the Vectorization of Signal TransformsProceedings High Performance Computing for Computational Science (VECPAR) 2006, LNCS 4395, pages 363-377

### Formal Loop Merging for Signal Transforms (2005)

This key paper introduces **Sigma SPL**, which was a new level of abstraction added to SPIRAL in 2005. Another
must-read, this paper and its companion slide deck are well worth careful study.

Franz Franchetti, Yevgen Voronenko, Markus Püschel:Formal Loop Merging for Signal Transforms.PLDI 2005: 315-326

## Vector Instructions and Other Parallelism

### FFTE on SVE: SPIRAL-Generated Kernels (2020)

Using SPIRAL to generate vectorized FFT kernels for ARM Scalable Vector Extension (SVE) produced significant speedups over automatic vectorization at compile time.

Daisuke Takahashi, Franz FranchettiFFTE on SVE: SPIRAL-Generated KernelsInternational Conference on High Performance Computing in Asia-Pacific Region (HPCAsia), 2020

### Large Bandwidth-Efficient FFTs on Multicore and Multi-Socket Systems (2018)

This paper illustrates SPIRAL’s state of the art for exploiting multiple levels of parallelism in new generation processors, including splitting compute and memory access functions to different hardware threads.

D. T. Popovici, T. M. Low, F. FranchettiLarge Bandwidth-Efficient FFTs on Multicore and Multi-Socket SystemsIEEE International Parallel & Distributed Processing Symposium (IPDPS), 2018

### Generating Optimized Fourier Interpolation Routines for Density Functional Theory Using SPIRAL (2015)

This is a detailed example of using a collection of techniques in SPIRAL for big performance gains in upsampling large multi-dimensional data sets.

D. A. Popovici, F. Russell, K. Wilkinson, C-K. Skylaris, P. H. J. Kelly, F. FranchettiGenerating Optimized Fourier Interpolation Routines for Density Functional Theory Using SPIRAL29th International Parallel & Distributed Processing Symposium (IPDPS), 2015

### When Polyhedral Transformations Meet SIMD Code Generation (2013)

Looking at the general problem of loop optimization, this paper shows how SPIRAL’s SIMD code generation can work together with a polyhedral framework.

M. Kong, R. Veras, K. Stock, F. Franchetti, L.-N. Pouchet, and P. SadayappanWhen Polyhedral Transformations Meet SIMD Code GenerationACM SIGPLAN PLDI, 2013

### Automatic Generation of the HPC Challenges Global FFT Benchmark for BlueGene/P (2012)

In 2010 code generated by SPIRAL was part of IBM’s winning submission for the 2010 HPC Challenge Class II. SPIRAL generated a single giant 1D FFT that spanned up to 128K cores.

F. Franchetti, Y. Voronenko, and G. AlmasiAutomatic Generation of the HPC Challenges Global FFT Benchmark for BlueGene/PIn Proceedings of High Performance Computing for Computational Science (VECPAR) 2012

### Automatic SIMD Vectorization of Fast Fourier Transforms for the Larrabee and AVX Instruction Sets (2011)

This paper on the successful inclusion of AVX support in SPIRAL was written the same year that the AVX instruction set became available.

Daniel McFarlin, Volodymyr Arbatov, Franz Franchetti and Markus PüschelAutomatic SIMD Vectorization of Fast Fourier Transforms for the Larrabee and AVX Instruction SetsProc. International Conference on Supercomputing (ICS), 2011

### Discrete Fourier Transform on Multicores: Algorithms and Automatic Implementation (2009)

This paper discusses problems and solutions to splitting an FFT implementation across multiple cores.

F. Franchetti, Y. Voronenko, S. Chellappa, J. M. F. Moura, and M. PüschelDiscrete Fourier Transform on Multicores: Algorithms and Automatic ImplementationIEEE Signal Processing Magazine, special issue on “Signal Processing on Platforms with Multiple Cores”, 2009.

## Generating Non-Transform Kernels

### High-Assurance SPIRAL: End-to-End Guarantees for Robot and Car Control (2017)

This feature article showcases a novel application of SPIRAL in the DARPA High Assurance Cyber Military Systems (HACMS) program.

F. Franchetti, T. M. Low, S. Mitsch, J. P. Mendoza, L. Gui, A. Phaosawasdi, D. Padua, S. Kar, J. M. F. Moura, M. Franusich, J. Johnson, A. Platzer, and M. VelosoHigh-Assurance SPIRAL: End-to-End Guarantees for Robot and Car ControlIEEE Control Systems Magazine, 2017, pages 82-103.

### Computer Generation of Efficient Software Viterbi Decoders

F. de Mesmay, S. Chellappa, F. Franchetti and M. PüschelComputer Generation of Efficient Software Viterbi DecodersProceedings of International Conference on High-Performance Embedded Architectures and Compilers (HIPEAC), 2010

### Operator Language: A Program Generation Framework for Fast Kernels (2009)

Winning a *Best Paper Award*, this describes **Operator Language**, which empowers
SPIRAL to generate non-transform code.

Franz Franchetti, Frédéric de Mesmay, Daniel S. McFarlin, Markus Püschel:Operator Language: A Program Generation Framework for Fast Kernels.DSL 2009: 385-409

### High Performance Synthetic Aperture Radar Image Formation On Commodity Architectures (2009)

In 2009 the SPIRAL folks at CMU figured out how to generate really good Synthetic Aperture Radar (SAR) code.

D. McFarlin, F. Franchetti, M. Püschel and J.M.F. MouraHigh Performance Synthetic Aperture Radar Image Formation On Commodity Architectures.Proceedings of SPIE Conference on Defense, Security, and Sensing, 2009

*Copyrights to many of the above papers are held by the publishers.
The attached PDF files are preprints. It is understood that all persons
copying this information will adhere to the terms and constraints invoked
by each author’s copyright. These works may not be reposted without the explicit
permission of the copyright holder.*