TL;DR
NeuroVectorizer employs deep reinforcement learning to optimize loop vectorization in compilers, outperforming traditional heuristics and reducing manual effort, leading to significant performance improvements.
Contribution
This work introduces an end-to-end deep RL-based framework for loop vectorization integrated into LLVM, capturing complex dependencies and outperforming existing methods.
Findings
Achieves 1.29X-4.73X speedup over LLVM baseline.
Only 3% worse than brute-force search.
Supports multiple supervised learning methods.
Abstract
One of the key challenges arising when compilers vectorize loops for today's SIMD-compatible architectures is to decide if vectorization or interleaving is beneficial. Then, the compiler has to determine how many instructions to pack together and how many loop iterations to interleave. Compilers are designed today to use fixed-cost models that are based on heuristics to make vectorization decisions on loops. However, these models are unable to capture the data dependency, the computation graph, or the organization of instructions. Alternatively, software engineers often hand-write the vectorization factors of every loop. This, however, places a huge burden on them, since it requires prior experience and significantly increases the development time. In this work, we explore a novel approach for handling loop vectorization and propose an end-to-end solution using deep reinforcement…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
