Developer Guide and Reference

Contents

GAP Message (Diagnostic ID 30519)

Message

Insert a "%s parallel" statement right before the loop at line %d to parallelize the loop.

Advice

Add
"#pragma parallel"
before the specified loop. This
pragma
enables the parallelization of the loop at the specified line by ignoring assumed cross-iteration data dependencies.
Example
Consider the following:
void foo(float *a, int m, int n) { int i; for (i=0; i<n; i++) { a[i] = a[i+m]+1; } return; }
In this case, the compiler is unable to parallelize the loop without further information about
m
. For example, if
m
is negative, then each iteration will be dependent on the previous iteration. However, if
m
is known to be greater than
n
, you can parallelize the loop.
If you determine it is safe to do so, you can add the
pragma
as follows:
void foo(float *a, int m, int n) { int i; #pragma parallel for (i=0; i<n; i++) { a[i] = a[i+m]+1; } return; }

Verify

Confirm that any arrays in the loop do not have cross-iteration dependencies. A cross-iteration dependency exists if a memory location is modified in an iteration of the loop and accessed by a
read or a write statement
in another iteration of the loop.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microproces