Extending a C-like Language for Portable SIMD Programming

Roland Leissa, Sebastian Hack, Ingo Wald
Compiler Design Lab, Saarland University
PPoPP 2012, 2012


   author={Roland Leissa and Sebastian Hack and Ingo Wald},

   title={Extending a C-like Language for Portable SIMD Programming},

   booktitle={accepted for PPoPP 2012},

   booktitle_short={PPoPP 2012},



Download Download (PDF)   View View   Source Source   



SIMD instructions are common in CPUs for years now. Using these instructions effectively requires not only vectorization of code, but also modifications to the data layout. However, automatic vectorization techniques are often not powerful enough and suffer from restricted scope of applicability; hence, programmers often vectorize their programs manually by using intrinsics: compiler-known functions that directly expand to machine instructions. They significantly decrease programmer productivity by enforcing a very errorprone and hard-to-read assembly-like programming style. Furthermore, intrinsics are not portable because they are tied to a specific instruction set. In this paper, we show how a C-like language can be extended to allow for portable and efficient SIMD programming. Our extension puts the programmer in total control over where and how control-flow vectorization is triggered. We present a type system and a formal semantics of our extension and prove the soundness of the type system. Using our prototype implementation IVL that targets Intel’s MIC architecture and SSE instruction set, we show that the generated code is roughly on par with handwritten intrinsic code.
No votes yet.
Please wait...

* * *

* * *

HGPU group © 2010-2021 hgpu.org

All rights belong to the respective authors

Contact us: