Home | CV | Publications | PhD | PostDoc | SIMD |
Android | Glass | Astronomy | Retro | Games | Lego |
The growing popularity of multimedia extensions 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.
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, etc.), and Advanced Vector Extensions (AVX, AVX2, etc.) for x86 and x86_64 processors. In March 2002, Aart Bik received the Intel Achievement Award (highest company award) 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 or SIMDization, please see these two books Aart (co-)authored (since Intel Press is no longer in operation, I am making the vectorization book available in Kindle Edition on Amazon).
Because all modern general-purpose CPUs support small-scale SIMD instructions (typically between 64-bit and 512-bit), all modern compilers are becoming progressively better at taking advantage of SIMD instructions automatically. Since the Android O release, the optimizing compiler of ART (Android Runtime) has joined the family of vectorizing compilers with the ability to translate bytecode into native SIMD code for the target Android device (currently ARM NEON (advanced SIMD), x86 SSE4.1, and MIPS SIMD Architecture). In 2017, Aart received the Google Silver Perfy Award for his work on SIMDization in the ART compiler. He presented this work at Google I/O and Linaro Connect (videos below).