goSLP: globally optimized superword level parallelism framework

Abstract

Modern microprocessors are equipped with single instruction multiple data (SIMD) or vector instruction sets which allow compilers to exploit superword level parallelism (SLP), a type of fine-grained parallelism. Current SLP auto-vectorization techniques use heuristics to discover vectorization opportunities in high-level language code. These heuristics are fragile, local and typically only present one vectorization strategy that is either accepted or rejected by a cost model. We present goSLP, a novel SLP auto-vectorization framework which solves the statement packing problem in a pairwise optimal manner. Using an integer linear programming (ILP) solver, goSLP searches the entire space of statement packing opportunities for a whole function at a time, while limiting total compilation time to a few minutes. Furthermore, goSLP optimally solves the vector permutation selection problem using dynamic programming. We implemented goSLP in the LLVM compiler infrastructure, achieving a geometric mean speedup of 7.58% on SPEC2017fp, 2.42% on SPEC2006fp and 4.07% on NAS benchmarks compared to LLVM’s existing SLP auto-vectorizer.

Document Details

Document Type
Pub Defense Publication
Publication Date
Oct 24, 2018
Source ID
10.1145/3276480

Entities

People

  • Charith Mendis
  • Saman Amarasinghe

Organizations

  • Defense Advanced Research Projects Agency
  • Massachusetts Institute of Technology
  • Toyota Research Institute
  • Wind Energy Technologies Office

Tags

Fields of Study

  • Computer science

Readers

  • Operations Research
  • Parallel and Distributed Computing.

Technology Areas

  • Space