Programming with Auto-parallelization

Auto-parallelization feature implements some concepts of OpenMP, such as worksharing construct (with the PARALLEL DO directive). See Programming with OpenMP for worksharing construct. This section provides specifics of auto-parallelization.

Guidelines for Effective Auto-parallelization Usage

A loop is parallelizable if:

The compiler may generate a run-time test for the profitability of executing in parallel for loop with loop parameters that are not compile-time constants.

Coding Guidelines

Enhance the power and effectiveness of the auto-parallelizer by following these coding guidelines:

Auto-parallelization Data Flow

For auto-parallelization processing, the compiler performs the following steps:

Data flow analysis ---> Loop classification  ---> Dependence analysis ---> High-level parallelization --> Data partitioning  ---> Multi-threaded code generation.

These steps include:

- analyze dependence graph to determine loops which can execute in parallel.

- compute run-time dependency

- modify loop parameters

- generate entry/exit per threaded task

- generate calls to parallel run-time routines for thread creation and synchronization