Intel® oneAPI DPC++/C++ Compiler Developer Guide and Reference

ID 767253
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

fiopenmp, Qiopenmp

Enables recognition of OpenMP* features, such as parallel, simd, and offloading directives, and tells the parallelizer to generate multi-threaded code based on OpenMP* directives. This is an alternate name for compiler option -qopenmp (and /Qopenmp).

Syntax

Linux:

-fiopenmp

Windows:

/Qiopenmp

Arguments

None

Default

OFF

No OpenMP* multi-threaded code is generated by the compiler.

Description

This option enables recognition of OpenMP* features, such as parallel, simd, and offloading directives. This is an alternate option for compiler option [Q or q]openmp.

The -fiopenmp and /Qiopenmp options enable Intel's implementation of OpenMP* in the compiler back end. The compiler front end produces an intermediate representation that preserves the parallelism exposed by OpenMP* directives. The back end uses the exposed parallelism to do more advanced optimizations, such as SIMD vectorization.

NOTE:

Option -fiopenmp is not the same as option -fopenmp.

NOTE:

To enable offloading to a specified GPU target, you must also specify option -fopenmp-targets (Linux*) or /Qopenmp-targets (Windows).

Product and Performance Information

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.

Notice revision #20201201

IDE Equivalent

Visual Studio: DPC++ > Language > OpenMP Support

C/C++ > Language [Intel C++] > OpenMP Support

Intel(R) oneAPI DPC++ Compiler > Language > OpenMP Support

Intel C++ Compiler > Language > OpenMP Support

Eclipse: Intel(R) oneAPI DPC++ Compiler > Language > OpenMP Support

Intel C++ Compiler > Language >  OpenMP Support

Alternate Options

Linux: -qopenmp

Windows: /Qopenmp

Examples

The following enables OpenMP parallelization (but no offloading) of OpenMP constructs such as "parallel", "loop" and "simd":

icx -fiopenmp foo.c   

Because option -fiopenmp is not specified, the following enables SIMD vectorization, but no OpenMP parallelization or offloading:

icpx -qopenmp-simd foo.c 

The following enables OpenMP parallelization and SIMD vectorization + offloading to a spir64 target:

icpx -fiopenmp -fopenmp-targets=spir64 bar1.cpp   

See Also