New vectorization and parallelization features in Intel® Parallel Composer

    image
    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).
    What is new to expect in Parallel Composer?
    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):
      1. _Cilk_spawn - the result of the function call process for asynchronous execution;
      2. _Cilk_sync - synchronization point inside this function;
      3. _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.

    Also popular now: