Quantcast
Channel: Intel Developer Zone Articles
Viewing all articles
Browse latest Browse all 3384

Intel® Advisor XE 2016 Update 2 What’s new

$
0
0

We’re pleased to announce new version of the Vectorization Assistant tool - Intel® Advisor XE 2016 Update 2. Below are highlights of the new functionality and improvements.

Loops, Functions and SIMD-enabled Functions

We have extended the Survey grid with functions (in addition to loops). Therefore, you can explore the complete hotspots list and call tree, including loops, functions, and SIMD-enabled functions:

New Recommendations

New issue “Vector register spilling” supersedes previous “High register pressure” issue. The new issue is more accurate and the recommendations are more actionable. The number of actually used vector registers appears in a separate column. If many vector registers are in use, there can be not enough registers to store some data, and compiler will have to generate extra code for storing some other data in memory. This increases number of instructions used and incurs additional memory accesses, thus negatively affecting performance.

The “OpenMP function call(s) present” recommendation suggests to refactor code that uses routines like “omp_get_thread_num()” inside a parallel region, since they may constrain performance:

Intel Advisor can now detect scalar math function calls in GCC-compiled code. They can be replaced with SIMD analogues, e.g. from Intel Short Vector Math Library (SVML). Below is an example of a GCC-compiled code that doesn’t use vector math functions by default. Intel Advisor recommends methods for enabling them in the code and in the GCC compiler command line:

Persistent Loops Selection for Easier CLI/GUI Interaction

The list of selected loops is now stored in a separate file and is persistent in the Intel Advisor project. This makes possible such workflows as:

  • If you work on a single machine, collect results in CLI and browse them in GUI:
    • When browsing in GUI, select loops of interest for deeper analysis (Dependencies or Memory Access Patterns)
    • Run deeper analysis in CLI under the same project. The selection made in GUI will be already applied for the CLI collection. No need in using the “-mark-up-list” option.
  • Collect results on a Linux server with CLI, then transfer results to another workstation to browse in GUI:
    • Select loops of interest in GUI, then copy the project back to a server. If project is too big, you can transfer only this file: “e000/loop_hashes.def” (to save the selection, close the results before transferring the file).
    • On server, simply run deeper analysis (Dependencies or Memory Access Patterns) without specifying the “-mark-up-list” option. The selection will be automatically picked up from the project.
    • If you need to change the selection in CLI, use the “advixe-cl -mark-up-loops” command.
    • Loop selection is persistent, so you do not need to specify the markup list for the “-collect” command.

Decreased Finalization Time for Trip Counts Collection

You can now run the Trip Counts analysis independently from the Survey analysis, so you may run them in any order.

  • If you collect Survey data first, and run Trip Counts later on, the behavior doesn’t change.
  • If you collect Trip Counts first, without running Survey, the collection will finalize only after running the Survey analysis. This triggers only one finalization for the two analyses, saving time on results post-processing. You will be able to view both Trip Counts and Survey results when both collections complete.

Memory Footprint and Variable Names

The Memory Access Patterns analysis now has the Estimated Memory Footprint metric in the MAP Source View. So, you get an idea about the amount of memory touched during the loop execution:

Support of the variable names for object-oriented code in MAP/Dependencies analysis was extended. Now variable names are detected for global and stack-allocated objects on Windows and Linux operating systems:


Viewing all articles
Browse latest Browse all 3384

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>