Vectorization Series, Part 2- Who Can Use It?

In my last blog, I introduced the concept of vectorization, which is parallelism across data elements in a register inside a single CPU core. It's a topic that I am very excited about this year, and in this blog I will expand on the subject to address what types of applications can take advantage of vectorization.

---------------------------
But first, an update on my upcoming webinar on vectorization - due to overwhelming demand, registation for the first session on Feb 15th is now closed, and we are adding a second session on Feb 22nd at 9AM PST. At this session my colleague Wendy Doerner and I will give a high-level overview of vectorization and methods for implementing it. Attendees will also have the opportunity to request a followup from an Intel vectorization expert! To view the abstract or register, click here: https://www1.gotomeeting.com/register/662285889.
---------------------------

And now, to answer the question of who can use vectorization:
Vectorization is implemented using special instructions, called SIMD (Single Instruction, Multiple Data) instructions. Developers can access these special instructions in a variety of ways (discussed in the webinar), for example, through their compiler, or a high-level language construct such as Intel® Cilk™ Plus. Each Intel processor supports a particular version of a SIMD instruction set. For example, 2nd Generation Intel® Core™ Processors implement the Intel® Advanced Vector Extensions (AVX) instructions. Previous processors implemented versions of the Intel® Streaming SIMD Extensions (SSE) instructions. These instruction sets perform operations such as matrix and vector math, floating point processing, and string processing. They are designed to be applied when the above types of operations are being performed in loops, generally on arrays or vectors of data. They work by packing multiple data elements into registers and then performing a single operation on all the elements at the same time.

So the types of applications that can take advantage of vectorization are the ones that are performing repeated computational activity on large sets of data. The 5 most common areas where vectorization can be applied are the Scientific, Engineering, Media, Graphical, and Financial domains. However, other applications may also be able to vectorize if they are performing the kinds of activities described above. To find out more about how to vectorize, view the webinar or stay tuned for more info!

Tags:
For more complete information about compiler optimizations, see our Optimization Notice.