Intel® Advisor Help
The compiler attempts to produce high-performance code by implementing all sorts of optimizations. But, in some cases, the compiler cannot vectorize code because of non-unit memory strides, or the arrangement of data structures (for example, by using "arrays of structures" instead of "structures of arrays").
Intel® Advisor Memory Access Patterns tool observes data accesses during execution, and spots the tasks that contain the memory accesses. The data collected and analyzed appears in the Memory Access Patterns Report tab of the Refinement Reports window.
The Intel® Advisor Memory Access Patterns tool runs your annotated target and watches memory access operations for the selected loops. Use the tool to identify memory access strides within the selected loops. To prepare your target program, see Minimizing Data Collection Result Size and Execution Time (Memory Access Patterns) and Before Running the Memory Access Patterns Tool.
You can run the Memory Access Patterns tool to collect memory access data for each of the selected loops:
Within Microsoft Visual Studio* by using the Tools menu, Advisor Workflow tab, or the toolbar icons (see Using the Menu Items and Toolbars).
Within the Intel Advisor standalone GUI by using the Tools menu, the Advisor Workflow tab, or the toolbar icons after you open a project.
Using the advixe-cl command line with the following command:
--collect map --project-dir <pdir> -- <application>
where <pdir> is the project root directory, and <application> is the name of the target program.
Similarly, you can view the collected data in the Refinement Reports tab and related windows by using Microsoft Visual Studio, Advisor standalone GUI, or Advisor command-line interface
You can start optimizing loop memory accesses right after running the tool. As you fix the potential issues, rebuild your application and run the Memory Access Patterns tool again.
To make sure the data in each of the open report windows is relevant, rerun the collectors after you change your source code.
Memory Access Patterns Report provides information about types of strides, which memory access operations issue during loop execution. The tool reports the following types of strides:
Unit Stride - instruction accesses memory that consistently changes by one element from iteration to iteration.
Constant Stride - instruction accesses memory that consistently changes by N elements from iteration to iteration.
Variable Stride - instruction accesses memory addresses that change by an unpredictable number of elements from iteration to iteration