Intel® Advisor Tutorial: Find Where to Add Parallelism to C++ Code Using the Threading Advisor

  • Intel® Parallel Studio XE Professional Edition

  • Intel® Parallel Studio XE Cluster Edition

Intel® Advisor provides two tools to help ensure your Fortran, C and C++ applications realize full performance potential on modern processors, such as Intel® Xeon Phi™ processors:

  • Vectorization Advisor is a vectorization optimization tool that lets you identify loops that will benefit most from vectorization, identify what is blocking effective vectorization, explore the benefit of alternative data reorganizations, and increase the confidence that vectorization is safe.

  • Threading Advisor is a threading design and prototyping tool that lets you analyze, design, tune, and check threading design options without disrupting your normal development.

This tutorial - and a C++ application you can use to follow along - shows how use the Threading Advisor on a Linux* platform to find where to add parallelism.

About This Tutorial

This tutorial demonstrates an end-to-end workflow you can ultimately apply to your own applications:

  1. Survey the target executable to locate the loops and functions where your application spends the most time.

  2. In the target sources, add Intel Advisor annotations to mark possible parallel tasks and their enclosing parallel sites.

  3. Check Suitability to predict the maximum parallel performance speedup of the target based on these annotations.

  4. Check Dependencies to predict parallel data sharing problems in the target based on these annotations.

  5. If the predicted maximum speedup benefit is worth the effort to fix the predicted parallel data sharing problems, fix the problems.

  6. Recheck Suitability to see how your fixes impact the predicted maximum speedup.

  7. If the predicted maximum speedup benefit is still worth the effort to add parallelism to the target, replace the annotations with parallel framework code that enables parallel execution.

Estimated Duration

20 minutes.

Learning Objectives

After you complete this tutorial, you should be able to:

  • Explain the recommended Threading Advisor workflow (usage scenario).
  • Identify compiler/linker options that produce the most accurate and complete Threading Advisor analysis results.

  • Run Threading Advisor analysis tools.

  • View, interpret, and manipulate data collected by Threading Advisor analysis tools.

More Resources

The concepts and procedures in this tutorial apply regardless of programming language; however, a similar tutorial using a sample application in another programming language may be available at:

These sites also offer tutorials for other Intel products.

In addition, you can find more resources in:

For more complete information about compiler optimizations, see our Optimization Notice.