To alleviate the situation for programmers, the OpenMP language committee added SIMD constructs to OpenMP to support vector-level parallelism. These new constructs provide a standardized set of SIMD constructs for programmers who no longer need to use non-portable, vendor-specific vectorization intrinsics or directives. In addition, these SIMD constructs provide additional knowledge about the code structure to the compiler and allow for a better vectorization that blends well with parallelization. To the best of our knowledge, the OpenMP 4.0 specification is the first industry standard that includes explicit vector programming constructs for programmers.
This paper describes the C/C++ and Fortran SIMD extensions for explicit vector programming available in the OpenMP 4.0 specification. We explain the semantics of SIMD constructs and clauses with simple examples. In addition, a set of explicit vector programming guidelines and programming examples are provided in Section 3 and 4 to help programmers to write efficient SIMD programs for achieving a higher performance. Section 5 presents a case study of achieving a~2000xperformance speedup using OpenMP 4.0PARALLELandSIMDconstructs on Intel Xeon Phi coprocessors. Section 6 summarizes this paper.
Keywords: OpenMP, Explicit Vectorization, SIMD programming model, Multicore
The complete article can be downloaded at http://primeurmagazine.com/repository/PrimeurMagazine-AE-PR-12-14-32.pdf
Xinmin Tian (1), Bronis R. de Supinski (2)
(1) Intel Corporation, Santa Clara, California USA
(2) Lawrence Livermore National Laboratory, Livermore, California, USA
OpenMP Architecture Review Board (ARB)
Email: firstname.lastname@example.org , email@example.com