Fortran Language and OpenMP* Features Implemented in Intel® Fortran Compiler

Published: 12/02/2020  

Last Updated: 12/06/2021

Our latest compiler, the Intel® Fortran Compiler (ifx), available in the oneAPI HPC Toolkit 2022.1, is production-ready for CPUs and GPUs. ifx is based on the Intel® Fortran Compiler Classic (ifort) frontend and runtime libraries, but uses LLVM backend compiler technology.  

This article describes the Fortran language and OpenMP* features that are implemented in ifx by release.

In this initial release ifx completely implements Fortran 77, Fortran90/95, Fortran 2003 (except parameterized derived types) and Fortran 2008 (except coarrays) language standards and OpenMP 4.5 and OpenMP 5.0/5.1 directives and offloading features. ifx is binary (.o/.obj) and module file (.mod) compatible. Binaries and libraries generated with ifort can be linked with binaries and libraries built with ifx. .mod files generated with one compiler can be used by the other (64-bit targets only). Both compilers use the the same runtime libraries.  ifx may or may not match performance of ifort compiled applications. Performance and Fortran Standard language improvements will be coming in ifx with each update release throughout 2022.

In this release, the ifx version number is 2022.0.0.

Similar information for Intel® oneAPI DPC++/C++ Compiler (DPCPP and ICX) regarding the OpenMP implementation.

Features Available in oneAPI 2022

Fortran 95

Fortran 95 is fully implemented, as are previous Fortran standards.

Fortran 2003

Implementation complete with the exception of parameterized derived types.

Fortran 2008

Implementation is complete with the exception of coarrays.

Fortran 2018

Feature Status in 2022.0.x
Coarray Features  
Coarray teams FORM TEAM, CHANGE TEAM construct, SYNC TEAM No
Coarray intrinsics TEAM_NUMBER, GET_TEAM, STOPPED_IMAGES, FAIL_IMAGES, COSHAPE,and IMAGE_STATUS No
TEAM and/or TEAM_NUMBER argument in NUM_IMAGES, IMAGE_INDEX, THIS_IMAGE intrinsic functions No
TEAM or TEAM_NUMBER specifiers in image selectors No
STAT and ERRMSG arguments to MOVE_ALLOC and specifiers in image selectors and in CRITICAL constructs No
FAILed IMAGEs No
Atomic subroutine No
Collective subroutines No
EVENTs No
EXIT from a CRITICAL construct No
Intrinsic Function Enhancements  
The DIM argument to the intrinsic functions ALL, ANY, IALL, IANY, IPARITY, MAXLOC, MAXVAL, MINLOC, MINVAL, NORM2, PARITY, PRODUCT, SUM, and THIS_IMAGE may now be a present OPTIONAL dummy argument. No
VALUE dummy arguments to PURE procedures may appear in variable definition contexts. No
ERRMSG argument to the intrinsic procedures GET_COMMAND_ARGUMENT, GET_ENVIRONMENT_VARIABLE, and GET_COMMAND No
OUT_OF_RANGE intrinsic function No
RANDOM_INIT intrinsic subroutine No
REDUCE intrinsic function No
New form of CMPLX function without KIND= No
SIGN function arguments can be of different KINDs No
INTEGER and LOGICAL arguments to intrinsics need not be default kind No
I/O Enhancements  
E and D, EN, ES, and G allow a field width of zero No
The exponent width e in a data edit descriptor can now be zero. No
The RN edit descriptor now rounds to nearest as specified by Fortran 2018 and ISO/IEC/IEEE 60559:2011. No
The EX edit descriptor allows for hexadecimal data No
SIZE= can be specified for non-advancing I/O No
Execution/Control Enhancements  
QUIET specifier in STOP or ERROR STOP No
Variable STOP and ERROR STOP codes No
ERROR STOP in PURE procedures No
VALUE Dummy argument of PURE procedure may be defined No
Declaration/Specification Changes  
Constant properties of an object can be used in the objects initialization No
Specification expressions can contain references to transformational intrinsics from IS0_C_BINDING, IEEE_ARITHMETIC, and IEEE_EXCEPTIONS intrinsic modules No
Transformational intrinsic functions from the intrinsic modules ISO_C_BINDING, IEEE_ARITHMETIC, and IEEE_EXCEPTIONS are now allowed in specification expressions No
Defined assignment and operator procedure dummy arguments with VALUE attribute need not be INTENT(IN) No
Implied-do loop of array constructors and data statements can specify loop variable kind and type. No
IMPLICIT NONE (EXTERNAL) No
GENERIC statement can be used to declare generic interfaces No
Locality of variables on a DO concurrent statement No
Non-standard intrinsics and module are diagnosed as non-standard No
IMPORT ALL, IMPORT NONE, and IMPORT ONLY in internal procedures and BLOCK constructs No
Module names in PUBLIC and PRIVATE statements No
NON_RECURSIVE keyword No
Default recursion (when assume recursion option specified) No
ISO/IEC/IEEE 754 2011 Floating Point Bindings  
assume ieee_compare option for floating point compares with signaling NaNs Yes
New procedures: IEEE_SET_ROUNDING_MODE, IEEE_FMA, IEEE_SIGNBIT, IEEE_NEXT_UP, IEEE_NEXT_DOWN,  IEEE_GET_MODES and IEEE_SETMODES, IEEE_MAX_NUM, IEEE_MAX_NUM_MAG, IEEE_MIN_NUM, IEEE_MIN_NUM_MAG, IEEE_QUIET_EQ, ITTE_QUIET_GE, IEEE_QUIET_GT, IEEE_QUIET_LE, IEEE_QUIET_LT, IEEE_QUIET_NE, IEEE_SIGNALING_EQ, IEEE_SIGNALING_GE, IEEE_SIGNALING_GT, IEEE_SIGNALING_LE, IEEE_SIGNALING_LT, IEEE_QUIET_NE, IEEE_SIGNALING_NE, IEEE_INT and IEEE_REAL, and IEEE_SUPPORT_NORMAL No
Named constants IEEE_ROUND_TYPE and IEEE_AWAY added to IEEE_ARITHMETIC intrinsic module No
Optional ROUND argument to the IEEE_RINT function No
Derive type IEEE_EXCEPTIONS defined in module IEEE_EXCEPTIONS No
SUBNORMAL is synonymous with DENORMAL No
Optional RADIX argument to IEEE_GET_ROUNDING_MODE and IEEE_SET_ROUNDING_MODE No
Enhanced C Interoperability  
C_PTRDIFF_T kind type in ISO_C_BINDING No
All intrinsic procedures in ISO_C_BINDING except C_F_PROCPOINTER are PURE Yes
Assumed rank arrays and types Yes
SELECT RANK construct Yes
Language Evolution  
Non-block DO and arithmetic IF are deleted features (retained as Intel extensions) Yes
COMMON, EQUIVALENCE, and BLOCKDATA are obsolescent Yes
Labeled form a DO loop is obsolescent Yes
Specific names of procedures are obsolescent Yes

OpenMP 4.5

All features were implemented in the 2021.4.0 release, except nowait, depend, hint clauses, complex type for reduction and depend clause modifiers.

OpenMP 5.0/5.1

Feature Status in 2022.0.x
if (parallel: scalar-logical-expression) Yes
REDUCTION clause on TEAMS Yes
ALLOCATE clause Yes
!$omp loop Yes
!$omp teams loop (combined directive) Yes
!$omp parallel loop (combined directive) Yes
!$omp target teams loop (combined directive) Yes
!$omp parallel target teams loop (combined directive) Yes
NONTEMPORAL clause on !$omp simd Yes
IN_REDUCTION clause Yes
USE_DEVICE_ADDR clause Yes
TASK_REDUCTION clause on !$omp taskgroup Yes
!$omp allocate  Yes
!$omp declare variant Yes
if (simd: scalar-logical-expression) No
!$omp scan No
!$omp requires Yes
Metadirectives No
“task” reduction-modifier  Yes
"scan" and "default" reduction-modifier Yes
“conditional” lastprivate-modifier No
ORDER clause (enabled on OMP LOOP) No
"mutexinoutset" and "depobj” dependence-type No
“in“, “out“ and “inout“ dependence-type Yes
AFFINITY clause No
DETACH clause No
USES_ALLOCATORS clause No
DECLARE MAPPER and mapper-identifier No
DEVICE_TYPE clause No
!$omp parallel master (combined directive) Yes
!$omp master taskloop (combined directive) Yes
!$omp master taskloop simd (combined directive) Yes
!$omp parallel master taskloop (combined directive) Yes
!$omp parallel master taskloop simd (combined directive) Yes
!$omp parallel masked (combined directive) Yes
!$omp masked taskloop (combined directive) Yes
!$omp masked taskloop simd (combined directive) Yes
!$omp parallel masked taskloop (combined directive) Yes
!$omp parallel masked taskloop simd (combined directive) Yes
DEPEND clause on !$omp taskwait No
“acq_rel“, “release“, “acquire“ and “relaxed” memory-order clauses on !$omp atomic Yes
"seq_cst" memory-order clause on !$omp atomic Yes
HINT clause on !$omp atomic Yes
“acq_rel“, “release“ and “acquire” memory-order clauses on !$omp flush No
!$omp depobj No
if (cancel: scalar-logical-expression) No

 


Features Available in oneAPI 2021

The Intel® Fortran Compiler (Beta) is our new compiler based on the Intel® Fortran Compiler Classic (ifort) frontend and runtime libraries. This new compiler uses the Intel Fortran Front End along with the LLVM framework.  The driver for this new compiler is named ‘ifx’.  

At this time ifx supports features of the Fortran 95, Fortran 2003 and Fortran 2008 language standard and most of the OpenMP 4.5 and OpenMP 5.0/5.1 directives and offloading features. This article describes the Fortran language and OpenMP* features that are implemented by release.

Fortran 95

Fortran 95 is fully implemented, as are previous Fortran standards.

Fortran 2003

SUMMARY: Implementation complete with the exception of parameterized derived types and user defined I/O (also known as derive type I/O or recursive I/O).

Feature Status in 2021.4.x Status in 2021.3.x Status in 2021.2.x Status in 2021.1.x

Data Enhancements and Object Orientation

       
Parameterized derived types No No No No
Procedure pointers No No No No
Finalization Yes Yes Yes Yes*
Procedures bound by name to a type Yes Yes Yes Yes
The PASS attribute Yes Yes Yes Yes
Procedures bound to a type as operators Yes Yes Yes Yes*
Type extension Yes Yes Yes Yes
Overriding a type-bound procedure Yes Yes Yes Yes
Enumerations Yes Yes Yes Yes
ASSOCIATE construct Yes Yes Yes Yes*
Typed polymorphic entities Yes Yes Yes Yes*
Unlimited polymorphic entities Yes Yes Yes No
SELECT TYPE construct Yes Yes Yes Yes
Deferred bindings and abstract types Yes Yes Yes Yes
Allocatable scalars Yes Yes Yes Yes
Deferred-length allocatable scalars Yes Yes Yes Yes
Miscellaneous Enhancements        
Structure constructors Yes Yes Yes No
Generic procedure interfaces named as type Yes Yes Yes Yes
The ALLOCATE statement Yes Yes Yes Yes
Assignment to an allocatable array Yes Yes Yes Yes
Transferring an allocation Yes Yes Yes Yes
Assignment to an allocatable array Yes Yes Yes Yes
Transferring an allocation Yes Yes Yes Yes
More control of access from a module Yes Yes Yes Yes
Renaming operators on the USE statement Yes Yes Yes Yes
Pointer assignment Yes Yes Yes Yes
Pointer INTENT Yes Yes Yes No
The VOLATILE attribute Yes Yes No No
The IMPORT statement Yes Yes Yes Yes
Intrinsic modules Yes Yes Yes Yes
Access to the computing environment Yes Yes Yes Yes
Support for international character sets No No No No
Lengths of names and statements Yes Yes Yes Yes
Binary, octal and hex constants Yes Yes Yes Yes
Array constructor syntax Yes Yes Yes Yes
Specification and initialization expressions Yes Yes Yes Yes
Complex constants Yes Yes Yes Yes
Changes to intrinsic functions Yes Yes Yes No
Controlling IEEE underflow Yes Yes Yes No
Another IEEE class value No No No No
Input/Output Enhancements        
Derived type input/output No No No No
Asynchronous input/output Yes Yes No No
FLUSH statement Yes Yes Yes Yes
IOMSG= specifier Yes Yes Yes Yes
Stream access input/output Yes Yes Yes Yes
ROUND= specifier Yes Yes Yes Yes
DECIMAL= specifier Yes Yes Yes Yes
SIGN= specifier Yes Yes Yes Yes
Kind type parameters of integer specifiers Yes Yes Yes Yes
Recursive input/output Yes Yes Yes Yes
Intrinsic function for newline character Yes Yes Yes Yes
Input and output of IEEE exceptional values Yes Yes Yes Yes
Comma after a P edit descriptor Yes Yes Yes Yes
Interoperability with C        
Interoperability of intrinsic types Yes Yes Yes Yes
Interoperability with C pointers Yes Yes Yes Yes
Interoperability of derived types Yes Yes Yes Yes**
Interoperability of variables Yes Yes Yes Yes
Interoperability of procedures Yes Yes Yes Yes
Interoperability of global data Yes Yes Yes Yes

Yes* implies that there are known bugs.

Yes** with the exception of passing derived types by value to C structs

Fortran 2008

SUMMARY: Implementation is complete with the exception of coarrays and POINTER result functions used as variables.

Feature Status in 2021.4.x Status in  2021.3.x Status in 2021.2.x Status in 2021.1.x
Coarrays No No No No
Allocatable or pointer components of derived type coarrays No No No No
Performance Enhancements        
do concurrent Yes, serial only Yes, serial only Yes, serial only Yes, serial only
Contiguous attribute Yes Yes Yes Yes
Simply contiguous arrays Yes Yes Yes Yes
Data Declaration        
Maximum rank + corank <= 15 Yes Yes Yes Yes
Long integers (18 digits or 64 bits) Yes Yes Yes Yes
Allocatable components of recursive type Yes Yes Yes No
Implied-shape array Yes Yes Yes Yes
Pointer initialization Yes Yes No No
Data statement restrictions lifted Yes Yes Yes Yes
Kind of a forall index Yes Yes Yes Yes
Type statement for intrinsic types TYPE (intrinsic type) specifier Yes Yes Yes Yes
Declaring type-bound procedures No No No No
Value attribute is permitted for any nonallocatable nonpointer noncoarray Yes Yes Yes Yes
In pure procedure intent of an argument with VALUE attribute not needed Yes Yes Yes Yes
Allocating a polymorphic variable No No No No
Accessing Data Objects         
Accessing real and imaginary parts Yes Yes Yes Yes
Pointer function reference is a variable   No No No
Elemental dummy arguments restrictions lifted Yes Yes Yes Yes
Input/Output        
Finding a unit when opening a file Yes Yes Yes Yes
g0 edit descriptor No No No No
Unlimited format item Yes Yes Yes No
Recursive input/output No No No No
Execution Control        
The block construct Yes No No No
Exit statement Yes Yes Yes No
Stop code Yes Yes Yes Yes
ERROR STOP Yes Yes Yes Yes
Intrinsic Procedures for Bit Processsing        
Bit sequence comparison Yes Yes Yes Yes
Combined shifting No No No No
Counting bits Yes Yes Yes Yes
Masking bits Yes Yes Yes Yes
Shifting bit Yes Yes Yes No
Merging bits Yes Yes Yes No
Bit transformational functions Yes Yes Yes No
Intrinsic Procedures and Modules        
Storage size Yes Yes Yes Yes
Optional argument radix added to selected real kind Yes Yes Yes Yes
Extensions to trigonometric and hyperbolic intrinsic functions No No No No
Selecting a real kind Yes Yes Yes Yes
Hyperbolic intrinsic functions Yes Yes Yes Yes
Bessel functions Yes Yes No No
Error and gamma functions Yes Yes Yes Yes
Euclidean vector norm No No No No
Parity Yes Yes Yes Yes
Execute command line Yes No No No
BACK argument to MINLOC and MAXLOC Yes No No No
Find location in an array Yes No No No
String comparison Yes Yes Yes No
Constants Yes Yes Yes Yes
COMPILER_VERSION Yes Yes Yes Yes
COMPILER_OPTIONS Yes Yes Yes Yes
Function for C sizeof Yes Yes Yes Yes
Added optional argument for ieee_selected_real_kind Yes Yes Yes Yes
Programs and Procedures        
SAVE attribute for module and submodule data Yes Yes Yes No
Empty contains section Yes Yes Yes Yes
Form of the end statement for an internal or module procedure Yes Yes Yes Yes
Internal procedure as an actual argument Yes Yes Yes Yes
Generic resolution by pointer or allocatable attribute Yes Yes Yes No
Null pointer or unallocated allocatable as a missing dummy argument Yes Yes Yes No
Elemental procedures that are not pure Yes Yes Yes Yes
Entry statement becomes obsolescent Yes Yes Yes Yes
Source Form        
Semicolon at line start Yes Yes Yes Yes

Fortran 2018

Feature Status in 2021.4.x Status in 2021.3.x Status in 2021.2.x Status in  2021.1.x
Coarray Features        
Coarray teams FORM TEAM, CHANGE TEAM construct, SYNC TEAM No No No No
Coarray intrinsics TEAM_NUMBER, GET_TEAM, STOPPED_IMAGES, FAIL_IMAGES, COSHAPE,and IMAGE_STATUS No No No No
TEAM and/or TEAM_NUMBER argument in NUM_IMAGES, IMAGE_INDEX, THIS_IMAGE intrinsic functions No No No No
TEAM or TEAM_NUMBER specifiers in image selectors No No No No
STAT and ERRMSG arguments to MOVE_ALLOC and specifiers in image selectors and in CRITICAL constructs No No No No
FAILed IMAGEs No No No No
Atomic subroutine No No No No
Collective subroutines No No No No
EVENTs No No No No
EXIT from a CRITICAL construct No No No No
Intrinsic Function Enhancements        
The DIM argument to the intrinsic functions ALL, ANY, IALL, IANY, IPARITY, MAXLOC, MAXVAL, MINLOC, MINVAL, NORM2, PARITY, PRODUCT, SUM, and THIS_IMAGE may now be a present OPTIONAL dummy argument. No No No No
VALUE dummy arguments to PURE procedures may appear in variable definition contexts. No No No No
ERRMSG argument to the intrinsic procedures GET_COMMAND_ARGUMENT, GET_ENVIRONMENT_VARIABLE, and GET_COMMAND No No No No
OUT_OF_RANGE intrinsic function No No No No
RANDOM_INIT intrinsic subroutine No No No No
REDUCE intrinsic function No No No No
New form of CMPLX function without KIND= No No No No
SIGN function arguments can be of different KINDs No No No No
INTEGER and LOGICAL arguments to intrinsics need not be default kind No No No No
I/O Enhancements        
E and D, EN, ES, and G allow a field width of zero No No No No
The exponent width e in a data edit descriptor can now be zero. No No No No
The RN edit descriptor now rounds to nearest as specified by Fortran 2018 and ISO/IEC/IEEE 60559:2011. No No No No
The EX edit descriptor allows for hexadecimal data No No No No
SIZE= can be specified for non-advancing I/O No No No No
Execution/Control Enhancements        
QUIET specifier in STOP or ERROR STOP No No No No
Variable STOP and ERROR STOP codes No No No No
ERROR STOP in PURE procedures No No No No
VALUE Dummy argument of PURE procedure may be defined No No No No
Declaration/Specification Changes        
Constant properties of an object can be used in the objects initialization No No No No
Specification expressions can contain references to transformational intrinsics from IS0_C_BINDING, IEEE_ARITHMETIC, and IEEE_EXCEPTIONS intrinsic modules No No No No
Transformational intrinsic functions from the intrinsic modules ISO_C_BINDING, IEEE_ARITHMETIC, and IEEE_EXCEPTIONS are now allowed in specification expressions No No No No
Defined assignment and operator procedure dummy arguments with VALUE attribute need not be INTENT(IN) No No No No
Implied-do loop of array constructors and data statements can specify loop variable kind and type. No No No No
IMPLICIT NONE (EXTERNAL) No No No No
GENERIC statement can be used to declare generic interfaces No No No No
Locality of variables on a DO concurrent statement No No No No
Non-standard intrinsics and module are diagnosed as non-standard No No No No
IMPORT ALL, IMPORT NONE, and IMPORT ONLY in internal procedures and BLOCK constructs No No No No
Module names in PUBLIC and PRIVATE statements No No No No
NON_RECURSIVE keyword No No No No
Default recursion (when assume recursion option specified) No No    
ISO/IEC/IEEE 754 2011 Floating Point Bindings        
assume ieee_compare option for floating point compares with signaling NaNs Yes No No No
New procedures: IEEE_SET_ROUNDING_MODE, IEEE_FMA, IEEE_SIGNBIT, IEEE_NEXT_UP, IEEE_NEXT_DOWN,  IEEE_GET_MODES and IEEE_SETMODES, IEEE_MAX_NUM, IEEE_MAX_NUM_MAG, IEEE_MIN_NUM, IEEE_MIN_NUM_MAG, IEEE_QUIET_EQ, ITTE_QUIET_GE, IEEE_QUIET_GT, IEEE_QUIET_LE, IEEE_QUIET_LT, IEEE_QUIET_NE, IEEE_SIGNALING_EQ, IEEE_SIGNALING_GE, IEEE_SIGNALING_GT, IEEE_SIGNALING_LE, IEEE_SIGNALING_LT, IEEE_QUIET_NE, IEEE_SIGNALING_NE, IEEE_INT and IEEE_REAL, and IEEE_SUPPORT_NORMAL No No No No
Named constants IEEE_ROUND_TYPE and IEEE_AWAY added to IEEE_ARITHMETIC intrinsic module No No No No
Optional ROUND argument to the IEEE_RINT function No No No No
Derive type IEEE_EXCEPTIONS defined in module IEEE_EXCEPTIONS No No No No
SUBNORMAL is synonymous with DENORMAL No No No No
Optional RADIX argument to IEEE_GET_ROUNDING_MODE and IEEE_SET_ROUNDING_MODE No No No No
Enhanced C Interoperability        
C_PTRDIFF_T kind type in ISO_C_BINDING '[No No No No
All intrinsic procedures in ISO_C_BINDING except C_F_PROCPOINTER are PURE No No No No
Assumed rank arrays and types No No No No
SELECT RANK construct No No No No
Language Evolution        
Non-block DO and arithmetic IF are deleted features (retained as Intel extensions) No No No No
COMMON, EQUIVALENCE, and BLOCKDATA are obsolescent No No No No
Labeled form a DO loop is obsolescent No No No No
Specific names of procedures are obsolescent No No No No

OpenMP 4.5

All features were implemented in the 2021.4.0 release, except nowait, depend, hint clauses, complex type for reduction and depend clause modifiers.

OpenMP 5.0/5.1

Feature Status in 2021.4.x Status in 2021.3.x Status in 2021.2.x Status in 2021.1.x
if (parallel: scalar-logical-expression) Yes Yes Yes Yes
REDUCTION clause on TEAMS Yes Yes Yes Yes
ALLOCATE clause Yes Yes Yes Yes
!$omp loop Yes Yes Yes Yes
!$omp teams loop (combined directive) Yes Yes Yes Yes
!$omp parallel loop (combined directive) Yes Yes Yes Yes
!$omp target teams loop (combined directive) Yes Yes Yes Yes
!$omp parallel target teams loop (combined directive) Yes Yes Yes Yes
NONTEMPORAL clause on !$omp simd Yes Yes Yes Yes
IN_REDUCTION clause Yes No No No
USE_DEVICE_ADDR clause Yes Yes Yes Yes
TASK_REDUCTION clause on !$omp taskgroup Yes Yes Yes Yes
!$omp allocate  Yes Yes Yes No
!$omp declare variant Yes Yes Yes* No
if (simd: scalar-logical-expression) No No No No
!$omp scan No No No No
!$omp requires No No No No
Metadirectives No No No No
“task” reduction-modifier  No No No No
"scan" and "default" reduction-modifier Yes Yes Yes Yes
“conditional” lastprivate-modifier No No No No
ORDER clause (enabled on OMP LOOP) No No No No
"mutexinoutset" and "depobj” dependence-type No No No No
“in“, “out“ and “inout“ dependence-type Yes Yes Yes Yes
AFFINITY clause No No No No
DETACH clause No No No No
USES_ALLOCATORS clause No No No No
DECLARE MAPPER and mapper-identifier No No No No
DEVICE_TYPE clause No No No No
!$omp parallel master (combined directive) Yes No No No
!$omp master taskloop (combined directive) Yes No No No
!$omp master taskloop simd (combined directive) Yes No No No
!$omp parallel master taskloop (combined directive) Yes No No No
!$omp parallel master taskloop simd (combined directive) Yes No No No
!$omp parallel masked (combined directive) Yes No No No
!$omp masked taskloop (combined directive) Yes No No No
!$omp masked taskloop simd (combined directive) Yes No No No
!$omp parallel masked taskloop (combined directive) Yes No No No
!$omp parallel masked taskloop simd (combined directive) Yes No No No
DEPEND clause on !$omp taskwait No No No No
“acq_rel“, “release“, “acquire“ and “relaxed” memory-order clauses on !$omp atomic No No No No
"seq_cst" memory-order clause on !$omp atomic Yes Yes Yes Yes
HINT clause on !$omp atomic No No No No
“acq_rel“, “release“ and “acquire” memory-order clauses on !$omp flush No No No No
!$omp depobj No No No No
if (cancel: scalar-logical-expression) No No No No

Yes* Only a limited form is implemented.

References

Fortran Standards

For more information about the Fortran Standards visit wg5-fortran.org.

OpenMP* Specification

The OpenMP* specifications are available at openmp.org.

Intel Documentation

Intel Fortran Compiler for oneAPI Developer Guide and Reference

 

Product and Performance Information

1

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