New vectorization and parallelization features in Intel® Parallel Composer
In early April, the Intel® Parallel Composer beta testing program launched, which ends in late August. Let me remind you the main components of the composer:
- Intel C ++ Compiler:
- Intel Integrated Performance Primitives (IPP):
- Intel Threading Building Blocks (TBB).
In addition to integrating both the composer and the documentation in Microsoft Visual Studio 2010 *, there are four features that I want to draw your attention to:
- Cilk C / C ++ concurrent programming extension.
Cilk allows small forces to turn a serial program into a parallel one. This extension adds new keywords (they can be changed at the time of release):
- _Cilk_spawn - the result of the function call process for asynchronous execution;
- _Cilk_sync - synchronization point inside this function;
- _Cilk_for - parallel execution of the entire iterative space of the loop.
- CEAN : C ++ Extended Array Notations for data parallelism.
The new C / C ++ extension for arrays, which allows you to specify the date concurrency. CEAN expressions are somewhat similar to Fortran 90 expressions. For example, they are used instead . This allows the compiler to generate vectorized code more efficiently.
for (i = 0; i < n; i++)
С[i] = A[i]*B[i] + d;
С[:] = A[:]*B[:] + d;
- GAP : Guided Auto-parallelization (/ Qguide, / Qguide-vec, / Qguide-data-trans).
Using this feature, the compiler diagnoses the code and advises the user what and how to change in the code. This allows you to improve auto-vectorization and auto-parallelization.
- #pragma simd and #pragma parallel always [assert]
New pragmas that indicate (but do not advise) the compiler that it should / should not vectorize the loop. This has already been written about here .
Personally, I myself take part in testing and writing samples for CEAN and Cilk. Based on what I can share my feelings:
CEAN is ideologically similar to valarray. The main difference is that in vallaray it is intended for a standard set of functions. In turn, CEAN allows you to work with custom types, functions, and structures. OpenMP * and CEAN in conjunction work just as well as Cilk with CEAN. Cilk was the only thing that allowed me to get less parallelism for parallelizing the samples I worked on.
Well, lastly, everyone who wants to test the new Intel® Parallel Composer, write in a personal.
Please refer to the Optimization Notification page. for more information on performance and optimization in Intel software products.