Auto-parallelization Threshold Control and Diagnostics

Threshold Control

The -par_threshold[n] option sets a threshold for the auto-parallelization of loops based on the probability of profitable execution of the loop in parallel. The value of n can be from 0 to 100. This option is used for loops whose computation work volume cannot be determined at compile time. The threshold is usually relevant when the loop trip count is unknown at compile time.

The -par_threshold[n] option has the following functionality:

The compiler applies a heuristic that tries to balance the overhead of creating multiple threads versus the amount of work available to be shared amongst the threads.

Diagnostics

The -par_report{0|1|2|3} option controls the auto-parallelizer's diagnostic levels 0, 1, 2, or 3 as follows:

Example of Parallelization Diagnostics Report

This example shows output generated by -par_report3:

prompt>icpc -c -parallel -par_report3 prog.cpp

Sample Output

program prog

procedure: prog

serial loop: line 5: not a parallel candidate due to

statement at line 6

serial loop: line 9

flow data dependence from line 10 to line 10, due to "a"

12 Lines Compiled

where the program prog.cpp is as follows:

Sample prog.c

/* Assumed side effects */

 

for (i=1; i<10000; i++)

{

  a[i] = foo(i);

}

 

/* Actual dependence */

 

for (i=1; i<10000; i++)

{

  a[i] = a[i-1] + i;

}

Troubleshooting Tips