Annotation Report, Inductive Expression Row

This special-purpose annotation marks a line that updates an expression that is inductive in a loop.

To view the source code for this annotation, click the icon.

Inductive expressions cause dependence cycles which normally prevent parallelizing a loop, but it is possible to compute the value of the expression if you know the iteration number. You may have to re-write the inductive expression to compute the value based on the iteration number when the loop is translated to parallel code.

For example, if i++ is the iteration variable of your loop, the parallel framework that you use may automatically fix this for you. For example, by using cilk_for. Otherwise, you may need to fix it manually. A common example is with j+=3, and i++. If i is your loop index (assuming 0 based), you can replace j+=3 with j = i*3. That is, the value of j actually is a function of the value of i.

When to View the Annotation Report

Use the Annotation Report window to view the types of annotations present in your project sources and access their locations. You can view the Annotation Report at any time to check the annotations. In addition:

  • Intel recommends that you view annotations during Adding Parallelism to Your Program workflow step to help you locate site, task, lock, and other annotations that should be replaced by parallel framework code.

  • When using the Intel Advisor product GUI, you can use this report to verify that the correct sources have been defined in the Project Properties > Source Search tab.

For more complete information about compiler optimizations, see our Optimization Notice.