Minimizing Analysis Overhead

Running your target application with the Intel Advisor can take substantially longer than running your target application without the Intel Advisor. For example:

Runtime Overhead / Analysis

Survey

Trip Counts & FLOP

Roofline

Dependencies

MAP

Target application runtime with Intel Advisor compared to runtime without Intel Advisor

1.1x longer

3 - 8x longer

3.1 - 8.1x longer

5 - 100x longer

5 - 20x longer

The following tables summarize how to minimize overhead while collecting and finalizing Intel Advisor analysis data. The techniques are grouped by:

Collection Controls

The following table is a summary. For more information, see Collection Controls to Minimize Analysis Overhead.

Minimization Technique

Impacted Intel Advisor Analyses

Summary

Pause collection/Resume collection using API methods

  • Roofline

  • Survey

  • Trip Counts & FLOP

Pause collection:

  • C++: __itt_pause

  • Fortran: Use ITTNOTIFY statement to call ITT_PAUSE() subroutine

Resume collection:

  • C++: __itt_resume

  • Fortran: Use ITTNOTIFY statement to call ITT_RESUME() subroutine

Pause collection/Resume collection using annotations

  • Survey

  • Dependencies

Some analysis types recognize the structural annotations typically used in the Threading Advisor workflow.

Pause collection:

  • C++: ANNOTATE_DISABLE_COLLECTION_PUSH

  • Fortran: call annotate_disable_collection_push()

  • C#: Annotate.DisableCollectionPush();

Resume collection:

  • C++: ANNOTATE_DISABLE_COLLECTION_POP

  • Fortran: call annotate_disable_collection_pop()

  • C#: Annotate.DisableCollectionPop();

Start target application with collection paused

  • Survey

  • Trip Counts & FLOP

Start target application with collection paused:

  • GUI control: Workflow pane > Start paused control

  • CLI action option: -start-paused

Note

You can use different techniques to resume collection. The most common is __itt_resume

Start target application with collection paused/Resume collection after N seconds

  • Survey

  • Trip Counts & FLOP

GUI control: Project Properties > Analysis Target > [Name] Analysis > Advanced > Automatically resume collection after (sec) checkbox

CLI action option: -resume-after=<integer>

Stop collection after N seconds

All

GUI control: Project Properties > Analysis Target > [Name] Analysis > Advanced > Automatically stop collection after (sec) checkbox and field

CLI action: -stop-after=<integer>

Stop collection

All

GUI control: Workflow pane > Stop current analysis control and Site Coverage widget

CLI: action option: -command=stop

Manually pause collection/Manually resume collection

  • Survey

  • Trip Counts & FLOP

Pause collection:

  • GUI control: Workflow pane > Pause control

  • CLI action: -command=pause

Resume collection:

  • GUI control: Workflow pane > Resume control

  • CLI action: -command=resume

Attach to process/Detach from process

  • Survey

  • Trip Counts & FLOP without stacks

Attach to process:

  • GUI control: Project Properties > Analysis Target > [Name] Analysis> Launch Application drop-down list > Attach to Process

  • CLI action options: -target-pid=<unsigned integer> and -target-process=<string>

Detach from process:

  • GUI control: Workflow pane > Stop current analysis control

  • CLI action: -command=detach

Loop Markup

The following table is a summary. For more information, see Loop Markup to Minimize Analysis Overhead.

Minimization Technique

Impacted Intel Advisor Analyses

Summary

Select loops by ID

  • Trip Counts & FLOP

  • Dependencies

  • Memory Access Patterns

GUI control: Survey Report checkbox(es)

CLI action option: -mark-up-list=<string>

Select loops by source file/line

  • Trip Counts & FLOP

  • Dependencies

  • Memory Access Patterns

GUI control: Survey Report checkbox(es)

CLI action: -mark-up-loops with action option -select=<string>

Select loops by criteria

  • Dependencies

  • Memory Access Patterns

GUI control: Workflow pane > Batch mode settings

CLI: action -mark-up-loops or -collect with action option -loops=<string>

Filtering

The following table is a summary. For more information, see Filtering to Minimize Analysis Overhead.

Minimization Technique

Impacted Intel Advisor Analyses

Summary

Filter modules

  • Survey

  • Trip Counts & FLOP

GUI control: Project Properties > Analysis Target > [Name] Analysis > Modules options and field

CLI: action option: -module-filter-mode=include | exclude and -module-filter=<string>

Execution Speed/Duration/Scope Properties

The following table is a summary. For more information, see Execution Speed/Duration/Scope Properties to Minimize Analysis Overhead.

Minimization Technique

Impacted Intel Advisor Analyses

Summary

Change stackwalk mode from offline (after collection) to online (during collection)

Survey

GUI control: Project Properties > Analysis Target > Survey Hotspots Analysis > Advanced > Stack unwinding mode > During collection

CLI action option: -stackwalk-mode=online

Disable stacks collection

  • Roofline

  • Trip Counts and FLOP

GUI controls:

  • Vectorization Workflow pane > Enable Roofline with Callstacks checkbox

  • Project Properties > Analysis Target > Trip Counts and FLOP Analysis > Advanced > Collect stacks checkbox

CLI action option: -no-stacks (or just ensure the CLI action option -stacks is omitted from the command line)

Disable stitch stacks

Survey

GUI control: Project Properties > Analysis Target > Survey Hotspots Analysis > Advanced > Stitch stacks checkbox

CLI action option: -no-stack-stitching

Increase sampling interval

Survey

GUI control: Project Properties > Analysis Target > Survey Hotspots Analysis > Advanced > Sampling interval field

CLI action option: interval=<integer>

Limit collected analysis data

Survey

GUI control: Project Properties > Analysis Target > Survey Hotspots Analysis > Advanced > Collection data limit, MB field

CLI action option: -data-limit=<integer>

Limit loop call count

  • Dependencies

  • Memory Access Patterns

GUI control: Project Properties > Analysis Target > [Name] Analysis > Advanced > Loop Call Count Limit field

CLI action option: -loop-call-count-limit=<integer>

Disable additional analysis

Survey

GUI controls: Project Properties > Analysis Target > Survey Hotspots Analysis > Advanced...

  • Analyze MKL loops and functions checkbox

  • Analyze Python loops and functions checkbox

  • Analyze loops that reside in non-executed code paths checkbox

  • Enable register spill/fill analysis checkbox

  • Enable static instruction mix analysis checkbox

CLI action options:

  • -no-mkl-user-mode

  • -no-profile-python

  • -no-support-multi-isa-binaries

  • -no-spill-analysis

  • -no-static-instruction-mix

Miscellaneous Techniques

The following table is a summary. For more information, see Miscellaneous Techniques to Minimize Analysis Overhead.

Minimization Technique

Impacted Intel Advisor Analyses

Summary

Disable cache simulation

  • Trip Counts and FLOP

  • Memory Access Patterns

GUI controls:

  • Project Properties > Analysis Target > Memory Access Patterns Analysis > Advanced > Enable cache simulation checkbox

  • Project Properties > Analysis Target > Trip Counts and FLOP Analysis > Advanced > Enable cache simulation checkbox

CLI action option: -no-enable-cache-simulation

Limit reported data

Memory Access Patterns

GUI controls:

  • Project Properties > Analysis Target > Memory Access Patterns Analysis > Advanced > Report stack variables checkbox

  • Project Properties > Analysis Target > Memory Access Patterns Analysis > Advanced > Report heap allocated variables checkbox

CLI action options:

  • -no-record-stack-frame

  • -no-record-mem-allocations

Minimize data set

All, but especially:

  • Dependencies

  • Memory Access Patterns

Minimize number of instructions executed within a loop while thoroughly exercising target application control flow paths

Temporarily disable finalization until opening result in GUI

  • Roofline

  • Survey

  • Trip Counts & FLOP

GUI control: Workflow pane > Cancel current analysis control during finalization

CLI action option: -no-auto-finalize

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