Litcius/Paper detail

Vectorization-aware loop unrolling with seed forwarding

Rodrigo C. O. Rocha, Vasileios Porpodas, Pavlos Petoumenos, Luís F. W. Góes, Zheng Wang, Murray Cole, Hugh Leather

202020 citationsDOIOpen Access PDF

Abstract

Loop unrolling is a widely adopted loop transformation, commonly used for enabling subsequent optimizations. Straight-line-code vectorization (SLP) is an optimization that benefits from unrolling. SLP converts isomorphic instruction sequences into vector code. Since unrolling generates repeatead isomorphic instruction sequences, it enables SLP to vectorize more code. However, most production compilers apply these optimizations independently and uncoordinated. Unrolling is commonly tuned to avoid code bloat, not maximizing the potential for vectorization, leading to missed vectorization opportunities.

Topics & Concepts

Loop unrollingVectorization (mathematics)Computer scienceParallel computingCompilerCode (set theory)Loop (graph theory)Optimizing compilerProgram transformationTransformation (genetics)Programming languageSet (abstract data type)MathematicsGeneChemistryCombinatoricsBiochemistryParallel Computing and Optimization TechniquesEmbedded Systems Design TechniquesLogic, programming, and type systems
Vectorization-aware loop unrolling with seed forwarding | Litcius