English

Autovesk: Automatic vectorized code generation from unstructured static kernels using graph transformations

Distributed, Parallel, and Cluster Computing 2023-07-03 v2 Programming Languages

Abstract

Leveraging the SIMD capability of modern CPU architectures is mandatory to take full benefit of their increasing performance. To exploit this feature, binary executables must be explicitly vectorized by the developers or an automatic vectorization tool. This why the compilation research community has created several strategies to transform a scalar code into a vectorized implementation. However, the majority of the approaches focus on regular algorithms, such as affine loops, that can be vectorized with few data transformations. In this paper, we present a new approach that allow automatically vectorizing scalar codes with chaotic data accesses as long as their operations can be statically inferred. We describe how our method transforms a graph of scalar instructions into a vectorized one using different heuristics with the aim of reducing the number or cost of the instructions. Finally, we demonstrate the interest of our approach on various computational kernels using Intel AVX-512 and ARM SVE.

Keywords

Cite

@article{arxiv.2301.01018,
  title  = {Autovesk: Automatic vectorized code generation from unstructured static kernels using graph transformations},
  author = {Hayfa Tayeb and Ludovic Paillat and Berenger Bramas},
  journal= {arXiv preprint arXiv:2301.01018},
  year   = {2023}
}

Comments

Preprint