New features for vectorization and paralleling in Intel® Parallel Composer
In early April, the Intel® Parallel Composer beta testing program started, which ends in late August. Let me remind the main components of the composer:
Intel C ++ Compiler:
Intel Integrated Performance Primitives (IPP):
Intel Threading Building Blocks (TBB).
What is new to expect in Parallel Composer? In addition to the integration of both the compositor and the documentation in Microsoft Visual Studio 2010 *, there are four features (English feature) to which I want to draw your attention:
Cilk C / C ++ parallel programming extension. Cilk allows small forces to turn a sequential program into a parallel program. This extension adds new keywords (they are subject to change at the time of release):
_Cilk_spawn- spawning the process of calling a function for asynchronous execution;
_Cilk_sync - synchronization point inside this function;
_Cilk_for - parallel execution of the entire iterative cycle space.
CEAN : C ++ Extended Array Notations for data parallelism. A new C / C ++ extension for arrays, which allows you to specify date concurrency. CEAN expressions are somewhat similar to Fortran 90 expressions. For example, instead of for (i = 0; i < n; i++) [i] = A[i]*B[i] + d; are used [:] = A[:]*B[:] + d; This allows the compiler to more efficiently generate code with vectorization.
GAP : Guided Auto-parallelization (/ Qguide, / Qguide-vec, / Qguide-data-trans). When using this feature, the compiler performs diagnostics of 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 (rather than advise) the compiler that it should / should not vectorize the loop. This has already been written here .
Personally, I myself will test and write samples for CEAN and Cilk. Based on what I can share my feelings: CEAN by ideology is 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 work fine together, like Cilk with CEAN. The only thing is that Cilk allowed less blood to get higher efficiency of parallelizing those samples I worked on. And lastly, everyone who wants to test the new Intel® Parallel Composer, write in a personal.
Please refer to the Optimization Notice page for more details on performance and optimization in Intel software products.