Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference

ID 767251
Date 3/22/2024
Public

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

Document Table of Contents

OpenMP* Support

The Intel® Fortran Compiler Classic and Intel® Fortran Compiler support OpenMP* Fortran compiler directives that comply with OpenMP Fortran Application Program Interface (API) specification 5.0, most of the OpenMP Version 5.1 and OpenMP Version 5.2 specifications, and some of the OpenMP 6.0 Version TR12 specifications.

For the complete OpenMP specification, read the specifications available from the OpenMP web site. The descriptions of OpenMP language characteristics in this documentation often use terms defined in that specification.

The OpenMP API provides symmetric multiprocessing (SMP) with the following major features:

  • Relieves you from implementing the low-level details of iteration space partitioning, data sharing, thread creation, scheduling, or synchronization.

  • Provides the benefit of performance available from shared memory multiprocessor and multi-core processor systems on all supported Intel architectures, including those processors with Intel® Hyper-Threading Technology (Intel® HT Technology).

  • Provides mechanisms mapping data and offloading code from the CPU to GPUs or other devices.

The compiler performs transformations to generate multithreaded code based on your placement of OpenMP directives in the source program, making it simple to add threading to existing software. The compiler compiles parallel programs and supports the industry-standard OpenMP directives.

The compiler provides Intel®-specific extensions to the OpenMP specification including runtime library routines and environment variables. A summary of the compiler options appear in the OpenMP Options Quick Reference.

Parallel Processing and Device Offloading with OpenMP

To compile with the OpenMP API, add the directives in the form of the Fortran program comments to your code. For parallel directives, the compiler processes the code and internally produces a multithreaded version that is then compiled into an executable with the parallelism implemented by threads that execute parallel regions or constructs.

For offloading, the compiler processes the data mapping and targeting directives, producing the code to move data to and from the target device, and to generate versions of the code that will execute on the target device.

Using Other Compilers

The OpenMP specification does not define interoperability of multiple implementations, so the OpenMP implementation supported by other compilers and OpenMP support in the Intel® Fortran Compiler Classic and Intel® Fortran Compiler might not be interoperable. Even if you compile and build the entire application with one compiler, be aware that different compilers might not provide OpenMP source compatibility that enable you to compile and link the same set of application sources with a different compiler and get the expected parallel execution results.

Intel® Fortran Compiler

For details about OpenMP features that are implemented in the Intel® Fortran Compiler (ifx) for this release, refer to Fortran Language and OpenMP* Features Implemented in Intel® Fortran Compiler.