The #pragma directives on this page give you control over how the compiler handles parallel processing in your program. These pragmas fall into two groups; IBM C for AIX-specific directives, and directives conforming to the OpenMP Application Program Interface specification.
Use the -qsmp compiler option to specify how you want parallel processing handled in your program. You can also instruct the compiler to ignore all parallel processing-related #pragma directives by specifying the -qignprag=ibm:omp compiler option.
Directives apply only to the statement or statement block immediately following the directive.
IBM Pragma Directives | Description |
ibm critical | Instructs the compiler that the statement or statement block immediately following this pragma is a critical section. |
ibm independent_calls | Asserts that specified function calls within the chosen loop have no loop-carried dependencies. |
ibm independent_loop | Asserts that iterations of the chosen loop are independent, and that the loop can therefore be parallelized. |
ibm iterations | Specifies the approximate number of loop iterations for the chosen loop. |
ibm parallel_loop | Explicitly instructs the compiler to parallelize the chosen loop. |
ibm permutation | Asserts that specified arrays in the chosen loop contain no repeated values. |
ibm schedule | Specifies scheduling algorithms for parallel loop execution. |
ibm sequential_loop | Explicitly instructs the compiler to execute the chosen loop sequentially. |
OpenMP Pragma Directives | Description |
omp parallel | Defines a parallel region to be run by multiple threads in parallel. With specific exceptions, all other OpenMP directives work within parallelized regions defined by this directive. |
omp for | Work-sharing construct identifying an iterative for-loop whose iterations should be run in parallel. |
omp parallel for | Shortcut combination of omp parallel and omp for pragma directives, used to define a parallel region containing a single for directive. |
omp sections omp section |
Work-sharing construct identifying a non-iterative section of code containing one or more subsections of code that should be run in parallel. |
omp parallel sections | Shortcut combination of omp parallel and omp sections pragma directives, used to define a parallel region containing a single sections directive. |
omp single | Work-sharing construct identifying a section of code that must be run by a single available thread. |
omp master | Synchronization construct identifying a section of code that must be run only by the master thread. |
omp critical | Synchronization construct identifying a statement block that must be executed by a single thread at a time. |
omp barrier | Synchronizes all the threads in a parallel region. |
omp flush | Synchronization construct identifying a point at which the compiler ensures that all threads in a parallel region have the same view of specified objects in memory. |
Control Parallel Processing with Pragmas
List of Preprocessor Directives
IBM Run-time Options for Parallel Processing
OpenMP Run-time Options for Parallel Processing
Built-in Functions Used for Parallel Processing
smp compiler option
OpenMP Specifications