Intel® Advisor User Guide

ID 766448
Date 3/31/2023

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Other Parallel Frameworks

Intel Advisor helps you prepare your program for adding parallelism, regardless of the parallel framework you choose. Intel Advisor provides the ability to predict the parallel behavior of your serial program and lets you determine the feasibility of possible parallel regions before you actually add parallelism.

Intel Advisor does not perform analysis of your parallel program, so you can use any parallel framework. You can use Intel Advisor with high-level parallel frameworks that use a fork-join model, or with low-level APIs that provide explicit thread control.

Intel recommends using the parallel frameworks Intel® oneAPI Threading Building Blocks (oneTBB) or OpenMP*, which are included with Intel® oneAPI Toolkits. These high-level frameworks provide parallel features well-suited for most multi-core computer systems.

If you decide to use a different parallel framework or a low-level threading API, please be aware of the following considerations:

  • Some parallel frameworks have limited abilities to scale with different number of cores, handle load balancing, and handle loop scalability (chunking), and so on.

  • As part of your planning, you might create a mapping of at least Intel Advisor Site, Task, and Lock annotations to the equivalent code constructs in the chosen parallel framework. That is, create a list that maps the Intel Advisor annotations to your parallel framework's features. Thus, you need to be aware of all annotations. For example, all Intel Advisor programs need to use parallel site and task annotations. Most programs will also use lock annotations. For a complete list of annotations, see the help topic Summary of Annotation Types.

  • Some parallel frameworks require that you use certain compilers that recognize the parallel framework's keywords, while others are libraries that can be used with multiple compilers.

  • Some parallel frameworks may not correctly handle multi-program workloads.

In all cases, you need to learn how to use the parallel framework that you select. The current Add Parallelism workflow step involves replacing annotations with chosen parallel framework code.