Introducing Intel® Advisor

The Intel® Advisor provides a set of tools that guide you - a developer familiar with your C/C++, C#, or Fortran program source code - to decide where to add parallel processing. By adding parallel processing to certain parts of your program, you can reduce your program's execution times on multi-core systems. Intel Advisor guides you through a sequence of steps that helps you incrementally analyze and transform certain serial portions of your program to prepare for the introduction of parallel processing (parallelism).

On Windows* OS systems, Intel Advisor is an add-in to Microsoft Visual Studio* and provides a GUI and a command line interface. On Linux* OS systems, Intel Advisor provides the same GUI and command line interface that it provides on Windows OS systems.

Intel Advisor is used early in the process of converting parts of a serial program to a parallel (multithreaded) program. It helps you explore and locate areas in which parallelism might provide significant benefit. It also helps you predict the costs and benefits of adding parallelism to those parts of your program, allowing you to experiment with where to add parallelism. Because it lets you experiment with your serial program as you prepare it for parallelism, Intel Advisor helps you minimize debugging non-deterministic parallel (multithreaded) code.

To profile and predict (model) your program's parallel behavior, Intel Advisor tools run and watch your program as it executes. You use Intel Advisor tools in the Intel Advisor GUI environment to observe and analyze your running serial program:

  • You identify the code regions where your program spends most of its time as possible places to add parallelism. To help you select places where you might add parallelism, use the Intel Advisor Survey tool, which profiles your running program.

  • You modify your source code with your code editor to add one-line Intel Advisor annotations to mark the possible parallel code regions in your program. These annotations are recognized by the Intel Advisor Suitability and Correctness tools, which predict your program's parallel behavior.

  • You run the Suitability tool to analyze your running program to estimate the approximate parallel performance of the proposed parallel code regions. If the Suitability tool shows that one of the annotated parallel code regions does not improve performance, modify or remove the corresponding annotations.

  • You run the Correctness tool to analyze your running program to predict data sharing problems that may occur when adding parallelism to the proposed parallel code regions, such as data race conditions. The Correctness tool helps you examine the sources to locate the cause of the data sharing problems. After you modify your program to fix the sharing problems, repeat this step until you eliminate the potential data sharing problems. After you fix the sharing problems, run the Suitability tool again.

  • After you test your modified serial program, you add code that actually introduces parallelism. You select a parallel framework - such as Intel® Cilk™ Plus, OpenMP*, or Intel® Threading Building Blocks - and learn how to use it. After you add parallelism, test your parallel program using other Intel tools.

Adding parallelism is typically an iterative process. After you add parallelism to one part of your program, you can repeat the Intel Advisor workflow to locate additional code regions where you might add parallelism.

After building your parallel program, you can use other parts of the Intel® Parallel Studio XE, Intel® Cluster Studio XE, or similar Intel software suite products to help you add code that enables parallelism, as well as check and tune your program.

In some cases, it may not be feasible to add parallelism to a legacy serial program that is not properly structured to provide suitable performance gains or contains numerous data sharing conflicts.


Incompatible or proprietary instructions in non-Intel processors may cause the analysis capabilities of Intel Advisor to function incorrectly. Any attempt to analyze code not supported by Intel processors may lead to failures in this product.