Abstract | ||
---|---|---|
Auto-vectorization techniques allow the compiler to automatically generate SIMD vector code out of scalar code. SLP is a commonly-used algorithm for converting straight-line code into vector code, which complements the loop-based traditional vectorizers. It works by scanning the input code looking for groups of instructions that can be combined into vectors and replacing them with the corresponding vector instructions. The state-of-the-art SLP algorithm works by attempting to vectorize blocks of code with a fixed vector width and falling back to smaller widths for the whole block upon failure.
In this work we remove this limitation and introduce Variable-Width SLP (VW-SLP), a novel algorithm that is capable of adjusting the vector width at an instruction granularity. This allows the algorithm to better adapt to the code's SIMD parallelism characteristics, thus exposing more vector parallelism than before. We implemented VW-SLP in LLVM and our evaluation on a real system shows that it considerably improves the performance of real benchmark code, with a small increase in compilation time.
|
Year | DOI | Venue |
---|---|---|
2018 | 10.1145/3243176.3243189 | PACT |
Keywords | Field | DocType |
SIMD, SLP, Auto-Vectorization | Computer science,Scalar (physics),Parallel computing,Vectorization (mathematics),SIMD,Compiler,Image tracing,Granularity | Conference |
ISBN | Citations | PageRank |
978-1-4503-5986-3 | 0 | 0.34 |
References | Authors | |
18 | 3 |
Name | Order | Citations | PageRank |
---|---|---|---|
Vasileios Porpodas | 1 | 71 | 6.38 |
Rodrigo Caetano Rocha | 2 | 13 | 5.35 |
Luís Fabrício Wanderley Góes | 3 | 44 | 8.41 |