Professional Documents
Culture Documents
Simd Vectorization
Simd Vectorization
A vector is an instruction operand containing a set of data elements packed into a one-
dimensional array. The elements can be integer or floating-point values. Most Vector/SIMD
Multimedia Extension and SPU instructions operate on vector operands. Vectors are also
called SIMD operands or packed operands.
SIMD processing exploits data-level parallelism. Data-level parallelism means that the
operations required to transform a set of vector elements can be performed on all elements
of the vector at the same time. That is, a single instruction can be applied to multiple data
elements in parallel. Vectorization is the process of transforming a scalar operation acting
on individual data elements (Single Instruction Single Data—SISD) to an operation where a
single instruction operates concurrently on multiple data elements (SIMD). Modern Intel
processor cores have dedicated vector units supporting SIMD parallel data processing. An
example of an SIMD-enabled operation is shown below.
Vectorization depends on two major factors: hardware and the style of source code. For the
current implementation of the vector declaration, there are certain restrictions that apply
when using the vector declaration. The following features are not allowed:
Calling non-vector functions (note that all SVML functions are considered vector
functions)
Locks, barriers, atomic construct, critical sections (presumably this is a special case of
the previous one).
Goto statements
Struct access