Journal "Software Engineering"
a journal on theoretical and applied science and technology
ISSN 2220-3397

Vol. 7, no 4 2016 year

DOI: 10.17587/prin.7.147-157
Exploiting Vector Extensions of Modern Processors
N. I. Vyukova, e-mail: niva@niisi.ras.ru, V. A. Galatenko, e-mail: galat@niisi.ras.ru, S. V. Samborskij, e-mail: sambor@niisi.ras.ru, Federal State Institution "Scientific Research Institute of System Analysis of the Russian Academy of Science", Moscow, 117218, Russian Federation
Corresponding author: Galatenko Vladimir A., Head of Sector, Federal State Institution "Scientific Research Institute of System Analysis of the Russian Academy of Science", Moscow, 117218, Russian Federation, e-mail: galat@niisi.ras.ru
Received on December 11, 2015
Accepted on December 18, 2015

Modern architectures increasingly rely on SIMD vectorization to improve performance for multimedia applications, various kinds of scientific applications, database processing. Compiler-based automatic vectorization seems to be a simple way to exploit vector processing in application code. However experience and recent research show that modern vectorizing compilers are capable of vectorizing only a small part of loops in real-life applications. Therefore programmers have to resort to various kinds of other means and tools for vectorization of program code.

The paper provides a brief overview of common ways for exploiting vector instructions in application code. Some of these approaches are then discussed in more detail, namely the methods of automatic vectorization in modern compilers, use of libraries, manual writing of vector code both in high-level programming languages and in assembly. Special attention is paid to the properties of vector instruction set which help or impede efficient use of vector computations in manual and automatic vectorization.

Keywords: vector extensions, SIMD (Single Instruction Multiple Data), automatic vectorization, SLP (Superword Level Parallelism)
pp. 147–157
For citation:
Vyukova N. I., Galatenko V. A., Samborskij S. V. Exploiting Vector Extensions of Modern Processors, Programmnaya Ingeneria , 2016, vol. 7, no. 4, pp. 147—157.