User Guide


Vectorization and Code Insights

Vectorization and Code Insights
perspective helps you to improve your application performance and gives you code-specific recommendations for how to fix vectorization issues, and quick visibility into source code and assembly code.

Vectorization Summary

Example of a Vectorization and Code Insights Summary pane
After you run the
Vectorization and Code Insights
perspective, you first see a
report of collected results that includes the most important information about your application and gives you hints for next steps:
  • View the main performance metrics of your program in the
    Program Metrics
    pane. The section is broken down into several sub-sections:
    • The
      Performance characteristics
      sub-section shows you execution time details. It can tell you how much space for vectorization your application has.
    • The
      Vectorization Gain/Efficiency
      that shows you estimated speedup. It can tell you how much space for improvement and optimization your application has in already vectorized loops/functions.
  • View recommended changes that might help you to improve the overall performance of your application on the
    Per program recommendations
  • View top five time-consuming loops sorted by self time with performance metrics in the
    Top time-consuming loops
    section. You are recommended to start with the loops listed in this section when checking for performance issues.
  • View top five optimization recommendations with the highest confidence and loop/function self time in the
    section. The recommendation listed in the section are the recommended first steps for optimization.
After you review the Summary section, continue to the Survey report to examine your application performance in more detail.

How It Works

Vectorization and Code Insights
perspective includes the following steps:
  • Get integrated compiler report data and performance data by running a
    It helps you identify:
    • Where vectorization, or parallelization with threads, will pay off the most
    • If vectorized loops are providing benefit, and if not, why not
    • Un-vectorized loops and why they are not vectorized
    • Performance problems in general
  • Identify the number of times loops are invoked and execute and the number of floating-point and integer operations by running the
    analysis. It measures the call count/loop count and iteration count metrics for your application. Enable to make better decisions about your vectorization strategy for particular loops, as well as optimize already-vectorized loops.
  • Check for various memory issues by running the
    Memory Access Patterns (MAP)
    analysis. It can warn you about non-contiguous memory accesses, unit stride vs. non-unit stride accesses, or other issues. Enable to identify issues that could lead to significant vector code execution slowdown or block automatic vectorization by the compiler.
  • Check for data dependencies in loops the compiler did not vectorize by running the
    analysis. The Dependencies analysis checks for real data dependencies and if real dependencies are detected, provides additional details to help resolve them. Choose to identify and better characterize real data dependencies that could make forced vectorization unsafe.

Perspective Views

  • Analysis Workflow
    tab - Review the controls available to configure the perspective workflow for your application.
  • Vectorization Summary
    - Review a results summary that includes the most important information about your application performance.
  • Survey
    report - Review the controls available to help you focus on the performance data most important to you.
  • Refinement
    report - Review the controls available to help you investigate the dependencies and memory issues of your application.

Product and Performance Information


Performance varies by use, configuration and other factors. Learn more at