Intel® Advisor Help

Collection Controls to Minimize Analysis Overhead

Issue

Running your target application from start to finish 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

Solutions

Use the following techniques to skip uninteresting parts of your target application, such as the initialization phase, and analyze only interesting parts.

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

See Pause Collection and Resume Collection Annotations for more information.

  • 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>

Note

Use a value representing seconds in the GUI field and milliseconds in the integer argument.

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 option: -stop-after=<integer>

Note

Use a value representing seconds in both the GUI field and integer argument.

Stop collection

All

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

CLI: action: -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

Pause Collection/Resume Collection Using API Methods

Minimize collection overhead.

Applicable analyses: Roofline, Survey, Trip Counts and FLOP.

Use when:

Prerequisites:

After performing the prerequisites and recompiling, do one of the following:

To attach ITT APIs to a launched application, that is, to collect API data on an application that is already launched, point the target application to the ittnotify_collector library using an environment variable:

Note

Use the full path to the library without quotations marks.

After you complete configuration, start the instrumented application in the correct environment. Intel Advisor collects API data even if the application is launched before the Intel Advisor is launched.

Start Target Application With Collection Paused

Minimize collection overhead.

Applicable analyses: Survey, Trip Counts and FLOP.

Use when you do not want to analyze the early phase(s) of your target application, such as the initialization phase, but you want analysis in ready mode.

To implement, do one of the following:

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

Minimize collection overhead.

Applicable analyses: Survey, Trip Counts and FLOP.

Use when...

To implement, do one of the following:

Note

Use a value representing seconds in the GUI field and milliseconds in the integer argument.

Stop Collection After N Seconds

Minimize collection overhead.

Applicable analyses: Roofline, Survey, Trip Counts and FLOP, Dependencies, Memory Access Patterns.

This is the flip side of the Start target application with collection paused technique. Use when...

To implement, do one of the following:

Note

Use a value representing seconds in both the GUI field and integer argument.

Stop Collection

Minimize collection overhead.

Applicable analyses: Roofline, Survey, Trip Counts and FLOP, Dependencies, Memory Access Patterns.

Use when...

To implement, do one of the following:

Manually Pause Collection/Manually Resume Collection

Minimize collection overhead.

Applicable analyses: Survey, Trip Counts and FLOP.

Use when...

To implement, do one of the following to pause analysis data collection (the target application continues running, but analysis data collection stops):

Do one of the following to resume analysis data collection:

Attach to Process/Detach from Process

Minimize collection overhead.

Applicable analyses: Survey, Trip Counts and FLOP without call stacks.

This technique is similar to the Start target application with collection paused technique, except you can attach to an already running process. This is particularly beneficial if:

GUI:

  1. Choose Project Properties > Analysis Target > [Name] Analysis> Launch Application drop-down list > Attach to Process.

  2. Disable the Inherit settings from Survey Hotspots Analysis Type checkbox.

  3. Choose the Process name or PID option and identify a process.

  4. Supply other information as desired and close the Project Properties dialog box.

  5. Click the standard run control on the Workflow pane to run the desired analysis.

CLI: Use the CLI action option -target-pid=<unsigned integer> or -target-process=<string> to attach to a process when running the desired analysis. For example:

advixe-cl -collect survey -project-dir ./myAdvisorProj -result-dir ./myAdvisorResult -target-process=myProcess 

Do one of the following to stop collecting analysis data on a process (the process continues running but analysis data collection stops):

Note

  • Ensure call stacks are disabled (which is the default setting) if you run the Trip Counts and FLOP analysis:

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

    • Add the CLI action option -no-stacks to the -collect command, or simply omit a -stacks action option on the -collect command.

  • Using the CLI action -command=stop kills the process (which also stops analysis data collection).

See Also