Intel Compilers: Vectorization for Multimedia Extensions

[IAA] The growing popularity of multimedia extensions has renewed the interest in vectorizing compilers, which date back to the early days of supercomputers (with a traditional focus on Fortran programs). Although the target architectures of these early vectorizing compilers differ substantially from modern microprocessors with multimedia extensions, a lot of the vectorization methodology developed in the past can be put to use in today's compilers that target multimedia instruction sets that are based on the Single-Instruction-Multiple-Data (SIMD) paradigm.

[COOKB06] [BIKVEC04] [BIKVEC04] The Intel C++/Fortran compilers are vectorizing compilers for Windows, Linux, and Mac OS that automatically convert sequential code into a form that exploits the Intel MMX Technology, Streaming SIMD Extensions (SSE, SSE2, SSE3, SSSE3, SSE4), and Advanced Vector Extensions (AVX, AVX2, AVX512) for IA-32 and Intel processors.

In March 2002, Aart Bik received the Intel Achievement Award (highest company award) from Paul Otellini for making the Streaming SIMD Extensions easy to use through automatic vectorization. For more details on automatic vectorization for multimedia extensions (also called intra-register vectorization), please see these two books Aart (co-)authored:

Please visit the Intel Software Forums to get expert advice from the developer community. A few other compiler-projects that target various multimedia extensions are Intel's Java JIT compilation with support for the Intel MMX Technology (Haghighat et al.), vectorization in GCC (Dorit Naishlos et al.), SLP Superword Level Parallelism (Samuel Larsen), and the Vector Pascal compiler for a data parallel Pascal dialect (Paul Cockshott).
Two obfuscated C one-liners to try with the latest Intel compilers:
Please note that this page is privately maintained by Aart Bik. Google+ LinkedIn