Intel® Advisor User Guide

ID 766448
Date 10/31/2024
Public
Document Table of Contents

Investigate Non-Offloaded Code Regions

The modeling step analyzes code regions profitability for offloading to a target device. Some regions might be not profitable for offloading or cannot be modeled.

If you view a result in the Intel® Advisor GUI: To see details why your code region of interest is reported as not recommended for offloading, select a loop in a Code Regions pane and see the Details tab in the right-side pane for detailed loop information, including the reason why the loop is not recommended for offloading.

By default, the report shows all code regions. You can apply filters to see only regions recommended or not recommended for offloading: open the drop-down list and select the desired filter option.

If you view the result in an Offload Modeling HTML report: Go to the Non-Offloaded Regions tab and examine the Why Not Offloaded column in the Offload Information group to the reason why a code region is not recommended for offloading to a selected target platform.

TIP:
For each region not recommended for offloading, you can force offload modeling. See the Enforce Offloading for Specific Loops.

Cannot Be Modeled

Message

Cause and Details

Solution

Cannot be modeled: Outside of Marked Region

Intel® Advisor cannot model performance for a code region because it is not marked up for analysis.

Make sure a code region satisfies all markup rules or use a different markup strategy:

  • It is not a system module or a system function.
  • It has instruction mixes.
  • It is executed.
  • Its execution time is not less than 0.02 seconds.

Cannot be modeled: Not Executed

A code region is in the call tree, but the Intel Advisor detected no calls to it for a dataset used during Survey.

This can happen if execution time of the loop is very small and close to the sampling interval of the Intel Advisor. Such loops can have significant inaccuracies in time measurement. By default, the sampling interval for Survey is 0.01 seconds.

You can try to decrease the sampling interval of the Intel Advisor:

  • From GUI:
    1. Go to Project Properties > Survey Hotspots Analysis > Advanced.
    2. Set the Sampling Interval to less than 10ms.
    3. Re-run Offload Modeling.
  • From CLI: Use the --interval option when running the --collect=survey.

Cannot be modeled: Internal Error

Internal Error means incorrect data or lack of data because the Intel Advisor encountered issues when collecting or processing data.

Try to re-run the Offload Modeling perspective to fix the metrics attribution problem. If this does not help, use the Analyzers Community forum for technical support.

Cannot be modeled: System Module

This code region is a system function/loop.

This is not an issue. If this code region is inside an offload region, or a runtime call, its execution time is added to execution time of offloaded regions.

Cannot be modeled: No Execution Count

The Intel Advisor detected no calls to a loop during Trip Count step of the Characterization analysis and no information about execution counts is available for this loop.

Check what loop is executed at this branch.

If you see a wrong loop, try re-running the Offload Modeling to fix the metrics attribution problem.

Less or Equally Profitable Than Children/Parent Offload

This message is not an issue. It means that Intel Advisor has found a more profitable code region to offload. If you still want to see offload estimations for the original code region, use the solutions described in the table below.

Message

Cause and Details

Solution

Less or equally profitable than children offloads

Offloading child loops/functions of this code region is more profitable than offloading the whole region with all its children. This means that the execution Time estimated on a target platform for the region of interest is greater than or equal to the sum of Time values estimated on a target platform for its child regions profitable for offloading.

The following reasons might prevent offloading: total execution time, taxes, trip counts, dependencies.

Model offloading for specific code regions even if they are not profitable. See Enforce Offloading for Specific Loops for details.

Less or equally profitable than parent offload

Offloading a whole parent code region of the region of interest is more profitable than offloading any of its child regions separately. This means that the Time estimated on a target platform for the region of interest is greater than or equal to the Time estimated on the target platform for its parent region.

Offloading a child code region might be limited by high offload taxes.

Solution 1

If you assume the kernel execution should overlap offload taxes, use the --assume-hide-taxes option with --collect=projection action option or the analyze.py script. See Manage Invocation Taxes for details.

Solution 2

Model offloading for only specific code regions even if they are not profitable. See Enforce Offloading for Specific Loops for details.

Not Profitable

Message

Cause and Details

Solution

Not profitable: Parallel execution efficiency is limited due to Dependencies

Dependencies limit parallel execution and the code region cannot benefit from offloading to a target device. The estimated execution time after acceleration is greater than or equal to the original execution time.

Solution 1

Ignore assumed dependencies and model offloading for all or selected code regions:

  • From GUI:
    1. Go to Project Properties > Performance Modeling.
    2. Enter one of the options in the Other Parameters field:

      • --no-assume-dependencies to assume all code regions that do not have information about their dependency are parallel
      • --set-parallel=[<loop-IDs/source-locations>] to ignore dependencies for specified code regions
    3. Re-run Performance Modeling.
  • From CLI: When running --collect=projection or analyze.py, use one of the following:
    • --no-assume-dependencies to ignore dependencies for all code regions
    • --set-parallel=[<loop-IDs/source-locations>] to ignore dependencies for specified code regions

For details, see Check How Dependencies Affect Modeling.

Solution 2

If you did not enable the Dependencies analysis when collecting data, run the analysis as follows to get detailed information about real dependencies in your code:

  • From GUI: Enable the Dependencies and Performance Modeling analyses from the Analysis Workflow pane and re-run the perspective.
  • From CLI: Run the Dependencies analysis with --collect=dependencies and re-run the Performance Modeling with --collect=projection or analyze.py.

See Dependency Type metric descript