loops

Select loops (by criteria instead of human input) for deeper analysis.

GUI Equivalent

Workflow > Batch mode > Check Memory Access Patterns

Workflow > Batch mode > Check Dependencies

Syntax

--loops=<string>

Arguments

<string> is a double-quote-enclosed, comma-separated list of criteria (no spaces):

Arguments for Dependencies Analysis

Description

scalar

Include only scalar serial loops.

total-time>n

Include only loops above n% of total CPU time.

has-source

Exclude only loops without source location.

has-issue

Include only loops with Vector Dependence Prevents Vectorization issue.

loop-height=n

Include only loops by specific hierarchical position. 0 = Innermost loops.

For example: Use the following criteria to include specific loops in the following scenario:

  • loop-height=0 selects only innermost loop 3

  • loop-height=1 selects only loop 2 and loop 3

  • loop-height=2 selects all three loops

main
   | -> loop 1
      | -> loop 2
         | -> loop 3

top=n

Include only loops with the largest self-time.

Arguments for Memory Access Patterns Analysis

Description

total-time>n

Include only loops above n% of total CPU time.

has-source

Exclude only loops without source location.

has-issue

Include only loops with Possible Inefficient Memory Access Pattern issue.

loop-height=n

Include only loops by specific hierarchical position. 0 = Innermost loops.

For example: Use the following criteria to include specific loops in the following scenario:

  • loop-height=0 selects only innermost loop 3

  • loop-height=1 selects only loop 2 and loop 3

  • loop-height=2 selects all three loops

main
   | -> loop 1
      | -> loop 2
         | -> loop 3

top=n

Include only loops with the largest self-time.

Default

For Memory Access Patterns analysis: "loop-height=0,total-time>0.1"

For Dependencies analysis: "scalar,loop-height=0,total-time>0.1"

Actions Modified

collect=map

collect=dependencies

mark-up-loops

Usage

All criteria must be met to select loops for analysis.

This option is particularly useful when you are using automated scripts.

You can accomplish the same objective using the mark-up-loops action followed by a collect action for a Dependencies or Memory Access Patterns analysis.

Usage can decrease collection overhead.

Example

Run a Dependencies analysis. Analyze only innermost loops with sources.

$ advixe-cl --collect=dependencies -–loops=”loop-height=0,has-source” --project-dir=./advi --search-dir src:=./src -- ./bin/myApplication

See Also

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