Dynamic Compilation of Data-Parallel Kernels for Vector Processors

Dynamic Compilation of Data-Parallel Kernels for Vector Processors

Andrew Kerr, Gregory Diamos, S. Yalamanchili. “Dynamic Compilation of Data-Parallel Kernels for Vector Processors.” CGO. April 2012.

Abstract

Modern processors enjoy augmented throughput and power efficiency through specialized functional units leveraged via instruction set extensions. These functional units accelerate performance for specific types of operations but must be programmed explicitly. Moreover, applications targeting these specialized units will not take advantage of future ISA extensions and tend not to be portable across multiple ISAs. As architecture designers increasingly rely on heterogeneity for performance improvements, the challenges of leveraging specialized functional units will only become more critical. In particular, exploiting software parallelism without sacrificing portability across the spectrum of commodity and multi-core SIMD processors remains elusive.This work applies dynamic compilation to explicitly data-parallel kernels and describes a set of program transformations that efficiently compile bulk-synchronous scalar kernels for SIMD functional units while tolerating control-flow divergence. It is agnostic to specific features of ISAs, and performance scalability is expected from 2-wide to arbitrary-width vector units. This technique is evaluated with existing workloads originally targeting GPU computing. A microbenchmark written in CUDA achieving near peak throughput on a GPU achieves over 90\% peak throughput on an Intel Sandybridge. Speedups for real-world applications running on on CPUs featuring SSE4 achieve up to 3.9x over current state of the art heterogeneous compilers for data-parallel workloads.

Download

Dynamic Compilation of Data-Parallel Kernels for Vector Processors [PDF]

Citation

@inproceedings{kerrCGO2012,
author = {Andrew Kerr and Gregory Diamos and Sudhakar Yalamanchili},
title = {Dynamic Compilation of Data-Parallel Kernels for Vector Processors},
booktitle = {International Symposium on Code Generation and Optimization},
series = {CGO ’12},
year = {2012},
location = {San Jose, California}
}