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. The default value is 75. 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 versions and 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

The example below shows output generated by -par_report3:

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

Sample Ouput

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