vix.ing · top · new · best · stats · spec

Revec: program rejuvenation through revectorization

2019/02/07 by Charith Mendis, Ajay Jain, Paras Jain +1 · 3 voices
Computer Science · #Parallel Computing and Optimization Techniques #Advanced Data Storage Technologies #Distributed systems and fault tolerance

paper · pdf · doi:10.1145/3302516.3307357

Abstract

Modern microprocessors are equipped with Single Instruction Multiple Data (SIMD) or vector instructions which expose data level parallelism at a fine granularity. Programmers exploit this parallelism by using low-level vector intrinsics in their code. However, once programs are written using vector intrinsics of a specific instruction set, the code becomes non-portable. Modern compilers are unable to analyze and retarget the code to newer vector instruction sets. Hence, programmers have to manually rewrite the same code using vector intrinsics of a newer generation to exploit higher data widths and capabilities of new instruction sets. This process is tedious, error-prone and requires maintaining multiple code bases. We propose Revec, a compiler optimization pass which revectorizes already vectorized code, by retargeting it to use vector instructions of newer generations. The transformation is transparent, happening at the compiler intermediate representation level, and enables performance portability of hand-vectorized code.

Citations

Discussions

Related