Vapor SIMD: Auto-Vectorize Once, Run Everywhere [abstract] (IEEE Xplore)
Dorit Nuzman, Sergei Dyshel, Erven Rohou, Ira Rosen, Kevin Williams, David Yuste, Albert Cohen, and Ayal Zaks
Proceedings of the 2011 International Symposium on Code Generation and Optimization (CGO), April 2011.
Just-in-Time (JIT) compiler technology offers portability
while facilitating target- and context-specific specialization.
Single-Instruction-Multiple-Data (SIMD) hardware is ubiquitous
and markedly diverse, but can be difficult for JIT compilers
to efficiently target due to resource and budget constraints. We
present our design for a synergistic auto-vectorizing compilation
scheme. The scheme is composed of an aggressive, generic offline
stage coupled with a lightweight, target-specific online stage. Our
method leverages the optimized intermediate results provided
by the first stage across disparate SIMD architectures from
different vendors, having distinct characteristics ranging from
different vector sizes, memory alignment and access constraints,
to special computational idioms. We demonstrate the effectiveness
of our design using a set of kernels that exercise innermost
loop, outer loop, as well as straight-line code vectorization,
all automatically extracted by the common offline compilation
stage. This results in performance comparable to that provided
by specialized monolithic offline compilers. Our framework is
implemented using open-source tools and standards, thereby
promoting interoperability and extendibility.