Swizzle Inventor: Data Movement Synthesis for GPU Kernels
University of California, Berkeley
Architectural Support for Programming Languages and Operating Systems (ASPLOS), 2019
@inproceedings{SwizzleInventor,
author={Phothilimthana, Phitchaya Mangpo and Elliott, Archibald Samuel and Wang, An and Abhinav Jangda and Bastian Hagedorn and Henrik Barthels and Kaufman, Samuel J. and Vinod Grover and Emina Torlak and Rastislav Bodik},
title={Swizzle Inventor: Data Movement Synthesis for GPU Kernels},
booktitle={2019 Architectural Support for Programming Languages and Operating Systems (ASPLOS)},
series={ASPLOS ’19},
year={2019},
isbn={978-1-4503-2716-9},
location={Providence, RI, USA},
numpages={14},
url={http://doi.acm.org/10.1145/3297858.3304059},
doi={10.1145/3297858.3304059},
publisher={ACM},
address={New York, NY, USA}
}
Utilizing memory and register bandwidth in modern architectures may require irregular data placement and movement, such as shuffles and broadcasts. We develop Swizzle Inventor to help programmers implement swizzle algorithms, by writing programs that omit swizzles and delegating the creation of those swizzles to an automatic synthesizer. Our synthesis algorithm scales to real-world programs, allowing us to invent new GPU kernels for stencil computations, matrix transposition, and a finite field multiplication algorithm (used in cryptographic applications). The synthesized 2D convolution and finite-field multiplication kernels are on average 1.5-3.2x and 1.1-1.7x faster, respectively, than expert-optimized CUDA kernels.
February 3, 2019 by hgpu