Intel® Fortran Compiler for oneAPI Release Notes, oneAPI 2022 Release

Version: 2022.2   Published: 07/17/2020  

Last Updated: 04/07/2022

Introduction

This document provides a summary of new and changed product features and includes notes about features and problems not described in the product documentation.

The Intel® oneAPI product packages provide two Fortran compilers. Intel® Fortran Compiler Classic (ifort) provides best-in-class Fortran language features and performance for CPU. The Intel® Fortran Compiler (ifx) enables developers needing OpenMP* offload to Intel GPUs. The OpenMP 5.0, 5.1 GPU offload features in ifx are not available in ifort. For calendar year 2022 ifort continues to be our best-in-class Fortran compiler for customers not needing GPU offload support. The default compiler for the Microsoft Visual Studio* environment is ifort.

Our latest compiler, the Intel® Fortran Compiler (ifx), 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.  In this release (oneAPI 2022.2) ifx completely implements Fortran 77, Fortran90/95, Fortran 2003 (parameterized derived types are now implemented in the 2022.1.0 compiler) 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, and .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.

Where to Find the Release

Please follow the steps to download the Intel® oneAPI HPC Toolkit and follow the installation instructions.  It is recommended to install the Intel® oneAPI Base Toolkit first for full functionality.

Change History

This section highlights important changes from the previous product version and changes in minor releases.

New in Intel® Fortran Compiler Classic and Intel® Fortran Compiler oneAPI 2022.2 Release 

ifort version 2021.6.0

  • Fortran language fixes and security updates

ifx version 2022.1.0

  • All of the Fortran 2003 Standard is implemented including parameterized derived types
  • All of the Fortran 2008 Standard is implemented with the exception of coarrays
  • Corrections to reported problems
  • Read this supplemental article for more information about the implementation of Fortran 2003, Fortran 2008, Fortran 2018, OpenMP 4.5 and OpenMP 5.0/5.1 features.

New in Intel® Fortran Compiler Classic and Intel® Fortran Compiler oneAPI 2022.1 Release 

ifort version 2021.5.0

  • Fortran language fixes and security updates

ifx version 2022.0.0

  • All of the Fortran 2003 Standard is implemented with the exception of parameterized derived types
  • All of the Fortran 2008 Standard is implemented with the exception of coarrays
  • Corrections to reported problems
  • Read this supplemental article for more information about the implementation of Fortran 2003, Fortran 2008, Fortran 2018, OpenMP 4.5 and OpenMP 5.0/5.1 features.

 

Back to top

System Requirements

Please see Intel® Fortran Compiler System Requirements.

Back to top

How To Install the Intel® Fortran Compiler

The installation guides for the Intel® oneAPI Toolkits are available online. Please check the Intel® oneAPI Toolkits Installation Guide for more information.

How To Use the Intel® Fortran Compiler

Refer to

for details on how to use the Intel® Fortran Compiler for oneAPI.

Back to top

Documentation

Product documentation is available online

Back to top

Technical Support

Access the Intel® Fortran Compiler forum when you need assistance.  If you have Commercial Support, create a support ticket.

Back to top

New and Changed Compiler Features

ifort

In previous versions of the compiler, no error was given if a dummy argument was specified with both the INTENT(IN) and VOLATILE attributes.  Since this case is clearly a violation of the Fortran standard, we now correctly diagnose this case as an error.

ifx

Language and OpenMP

Fortran 2003
  • Implementation complete including parameterized derived types.
Fortran 2008
  • Implementation complete with the exception of coarrays.
Fortran 2018
  • The DIM argument of many array intrinsics may now be a present optional argument.
OpenMP
  • DECLARE MAPPER directive implemented for scalar variables.
  • Updates to the TARGET directive
    • Added FIRSTPRIVATE and PRIVATE clauses
    • Added implicit-behaviors ALLOC, TO, TOFROM, FROM, FIRSTPRIVATE, NONE and default to the DEFAULTMAP clause
  • The OpenMP default loop schedule modifier for work sharing loop constructs was changed to nonmonotonic when the schedule kind is dynamic or guided to conform to the OpenMP 5.0 standard. User code that assumes monotonic behavior may not work correctly with this change. Users can add the monotonic schedule modifier in the schedule clause to keep the previous code behavior.
  • Many features of OpenMP 5.0/5.1 are implemented. Details are in Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference and in this supplemental article.

Other New Features

  • Floating point comparisons perform IEEE compareSignaling<relation> operations when compiling with -assume ieee_compares or -standard semantics.
  • VAX* UNION and STRUCTURE declarations, Intel language extensions.
  • The argument to the C_LOC function in the intrinsic module ISO_C_BINDING now conforms to the Fortran standard definition.
  • In previous versions of the compiler, no error was given if a dummy argument was specified with both the INTENT(IN) and VOLATILE attributes.  Since this case is clearly a violation of the Fortran standard, we now correctly diagnose this case as an error.
Additional Information

Read this supplemental article for more information about the implementation of Fortran 2003, Fortran 2008, Fortran 2018, OpenMP 4.5 and OpenMP 5.0/5.1 features.

Known Issues

  • ifx is binary (.o/.obj) and module (.mod) file compatible; binaries and libraries generated with ifort can be linked with binaries and libraries built with ifx, and .mod files generated with one compiler can be used by the other (64-bit targets only). If you compile with -ipo though, the compatibility between ifort and ifx is broken. 

Back to top

Support Deprecated

Microsoft Visual Studio* 2017

Intel Compiler Integrations for Microsoft Visual Studio* 2017 are deprecated and will be removed in a future release. Support for Integrations for Visual Studio is limited to two supported major versions of Visual Studio: the current publicly available and supported major version and the previous major version from Microsoft.

ifort

  • Directive SIMD (!dir$ SIMD) is deprecated and may be removed in a future release. In the source code users should replace the directive with the OpenMP SIMD directive !$omp simd and associated clauses. When using the OpenMP SIMD directive remember to add compiler option -qopenmp-simd or -qopenmp. When compiling with -O2, -qopenmp-simd is implied.
  • The compiler option on Linux -mkl is deprecated and may be removed in a future release. Beginning in the 2021.4.0 release the replacement is -qmkl. This compiler option tells the compiler to link to necessary libraries in the Intel® oneAPI Math Kernel Library.

ifx

  • -fopenmp is deprecated and may be removed in a future release.  Use -qopenmp or -fiopenmp instead.
  • The compiler option on Linux -mkl is deprecated and may be removed in a future release. Beginning in the 2021.4.0 release the replacement is -qmkl. This compiler option tells the compiler to link to necessary libraries in the Intel® oneAPI Math Kernel Library.

 

Back to top

Known Issues

Non-POSIX Shells

The environment start up scripts have been migrated to POSIX compliant scripts. For non-POSIX shells, such as csh, there is a workaround for command-line usage:
% bash -c 'source /opt/intel/oneapi/setvars.sh ; exec csh'

ifort

These are applicable when using the ifort compiler driver.

Fortran Runtime Libraries

On Windows the oneAPI Fortran runtime libraries are installed in a new folder. The new folder is %INTEL_DEV_REDIST%redist\intel64_win\compiler. When Parallel Studio Fortran redistributables are installed along side oneAPI Fortran runtime libraries, the PATH environment variable may not be set up correctly.

On Windows fatal error LNK1318: Unexpected PDB error; OK (0)

[Fixed in oneAPI HPC 2022.2 for both ifort and ifx.]

On Windows, you may see the following error at link time when you build your executable with /debug at a higher optimization level (say, /O2):
             fatal error LNK1318: Unexpected PDB error; OK (0)
This is caused by a bug in the linker packaged with Microsoft Visual Studio 2019 Version 16.11.2. You may workaround the bug by disabling inline function expansions with the command line flag ‘/inline:none’. Note that this flag can potentially reduce the performance of your executable.

Ubuntu 18.04.3 May Break Compiler 

 ifort: error #10105: ld: core dumped

Ubuntu's latest build of 18.04 LTS is 18.04.4. Their previous build, 18.04.3, had an issue that may affect (break) the Intel Fortran Compiler Classic. Earlier builds like 18.04.2 and 18.04.1 are compatible and work with the Intel compilers.

You can find your Ubuntu build number by:

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"

Notice DISTRIB_DESCRIPTION.  On this system it is the latest 18.04.4 LTS.

If your DISTRIB_DESCRIPTION has "18.04.3" you may have issues running the Intel compilers due to an issue with glibc in this specific build.

The error will be

ifort hello.f90
ifort: error #10105: ld: core dumped
ifort: warning #10102: unknown signal(-320620368)
ifort: error #10106: Fatal error in ld, terminated by unknown

Upgrading your Ubuntu installation to the latest, 18.04.4, will install a fixed glibc along with other important updates to Ubuntu.

sudo apt-get update
sudo apt update

 

IPO on macOS* 11

Use of IPO ( -ipo ) for Intel® oneAPI Fortran Compilers Classic (ifort) available in the Intel® oneAPI HPC Toolkit on macOS* 11 and newer macOS releases causes a link-time error.  Please remove -ipo from your compiler options for macOS* 11 and new releases.

This link error does not affect Linux*  or Windows*  compilers. It does not affect current macOS* 10.x users, only the newer macOS releases.

IPO support for macOS* 11 “Big Sur”* and new releases is deprecated and non-functional and will be removed in a future release.

Fortran Coarray Application Hang After Executing FAIL IMAGE

If you use a FAIL IMAGE statement to make an image fail, you should use a STAT= specifier or a STAT argument in all coarray operations that might encounter that failed image if the statement or operation permits, or you should specify either the assume failed_images or standard-semantics compiler option. If you do not use a STAT= specifier, a STAT argument, or specify one of the compiler options, those operations will not check for failed images. They may then try to coordinate with the failed image, waiting for a response from it. The response would never happen and so the application would hang.

The following example demonstrates using the STAT= specifier to prevent an application hang.

SUBROUTINE FAIL_AND_SYNC ( THIS_ONE )
   INTEGER THIS_ONE
   INTEGER MY_STAT
   IF (THIS_IMAGE() .EQ. THIS_ONE) THEN
       FAIL IMAGE
   END IF
   SYNC ALL (STAT=MY_STAT)      ! Would hang without STAT=
END SUBROUTINE FAIL_AND_SYNC

 

Cross Compiling (compiling in 32-bit mode on a 64-bit machine running Microsoft Windows*)

If you are running

  • Microsoft Windows* and
  • cross compiling (compiling in 32-bit mode on a 64-bit machine) and
  • using Microsoft Visual Studio* 2019 and
  • handle exceptions, particularly floating point exceptions, in your code and
  • you see a SEGV exception when your program gets a floating point exception,

your program did not handle the exception as intended.

The solution is to add legacy_x86_flt_exceptions.lib to your link command.

Using the Coarray Feature with Red Hat 8

Applications that use the coarray feature and are running on Red Hat 8.0 or later should have Intel MPI 2019 Update 7 or later installed.  With earlier versions of MPI, applications may not complete successfully and give little information about the failure.

ifx

These are applicable when using the ifx compiler driver.

Fortran Runtime Libraries

On Windows the oneAPI Fortran runtime libraries are installed in new folder. The new folder is %INTEL_DEV_REDIST%redist\intel64_win\compiler. When Parallel Studio Fortran redistributables are installed along side oneAPI Fortran runtime libraries, the PATH environment variable may not be setup correctly.

On Windows fatal error LNK1318: Unexpected PDB error; OK (0)

[Fixed in oneAPI HPC 2022.2 for both ifort and ifx.]

On Windows, you may see the following error at link time when you build your executable with /debug at a higher optimization level (say, /O2):
             fatal error LNK1318: Unexpected PDB error; OK (0) 
This is caused by a bug in the linker packaged with Microsoft Visual Studio 2019 Version 16.11.2. You may workaround the bug by disabling inline function expansions with the command line flag ‘/inline:none’. Note that this flag can potentially reduce the performance of your executable.

GPU Driver Hanging Issue

If you have applications with long-running GPU compute workloads in native environments, you must disable the hangcheck timeout period to avoid terminating workloads. See the Installation Guide for your OS for more information.

Language and OpenMP

Other known issues
  • !DIR$ directives are recognized by the front end, but not all are implemented. !DIR$ directives that ifx supports are: IVDEP, VECTOR [NO]DYNAMIC_ALIGN,  VECTOR [NO]VECREMAINDER, DISTRIBUTE POINT, NOFUSION, [NO]UNROLL, [NO]UNROLL_AND_JAM, among others.
  • However, the vectorization enabled/disabled by using !DIR$ VECTOR[NO]VECREMAINDER is not yet implemented in the vectorization phase of the compiler. Replace !DIR$ with the !$OMP SIMD directive.
  • Overall debugging is much improved, except  for deferred shape arrays. This is true for both host and target.

Issue with Static Libraries and Target Offload

Due to a bug, the ifx compiler on Linux* does not support linking library archives using the -l option for libraries that contain target offload code, i.e., offload code for GPU or FPGA.  This article describes the problem and the workaround. This workaround also applies to other Intel LLVM-based compilers, icx, icpx and dpcpp.

Configure Script Reports: "linking to Fortran libraries from C fails"

Symptom

When compiling with ifx, a ./configure script generated by GNU Autconf reports an error message similar to:

    checking for Fortran 77 libraries of ifx...  -loopopt=0 -L/lib/../lib64 -L/lib/../lib64/ -L/usr/lib/../lib64 -L/usr/lib/../lib64/ -L/lib64 -L/lib/ -L/usr/lib64 -L/usr/lib -lifport -lifcoremt -limf -lsvml -lm -lipgo -lirc -lpthread -lirc_s -ldl
    configure: WARNING: FLIBS does not work
    checking for ifx flag to add single underscore to external names... none
    checking for dummy main to link with Fortran 77 libraries... unknown
    configure: error: in `/path/to/build/dir':
    configure: error: linking to Fortran libraries from C fails
    See `config.log' for more details
    make: *** [build/config.status] Error 1

Examining the config.log file shows that the error causing ./configure to exit was:

    ld: cannot find -loopopt=0

Problem 

In trying to determine libraries needed to link Fortran code with C or C++ code, GNU Autoconf 2.69 and earlier mistakenly interprets -loopopt=0 in -mllvm -loopopt=0 in verbose compiler output as a linker flag.  GNU Autoconf then adds -loopopt=0 to the FLIBS variable, which is passed to the linker.  The linker then looks for a non-existent library causing the test to fail.

Solution for Users Downloading Source Code

Please inform the maintainers of packages impacted by this error about the problem and refer them to this release note.  Projects vary in how they handle configure scripts, however, some general rules apply.  Users who need a solution before the package maintainer can respond can update the configure  script themselves.  Difficulty of updating depends on how the package is distributed.

To update, first, install GNU Autoconf-2.70 or newer, as described in Solution for Package Maintainers, below.

After installing the updated autoconf in the user's path, packages that distribute the configure.ac  file along with the configure  script can be updated simply by running:

    autoreconf -if

The resulting configure script should complete without the above error in FLIBS.

It is not uncommon for project maintainers to remove the configure.ac file from a source distribution in a tar or zip archive.  In that case, the user usually needs to download the project from its code repository, and build according to the project's instructions.  Sometimes a version of the configure script is committed to version control and not automatically regenerated.  In that case, either running autoreconf -if as described above, or deleting the configure script often trigger it to be regenerated.  Ideally, documentation for the project will describe how to rebuild the configure script.

Solution for Package Maintainers

To prevent users seeing errors, update to GNU Autoconf to version 2.70 or later and re-generate the project configure  script.  GNU Autoconf-2.70 was released December 8, 2020.  Source code is available via git clone http://git.sv.gnu.org/r/autoconf.git.  GNU Autoconf documentation is available through GNU Autoconf Project Page.

Back to top

Intel Fortran Compiler Release Notes for Previous oneAPI Releases

 

 

Notices and Disclaimers

Intel technologies may require enabled hardware, software or service activation.

No product or component can be absolutely secure.

Your costs and results may vary.

© Intel Corporation. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Other names and brands may be claimed as the property of others.

No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.

The products described may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.

Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.

 

Product and Performance Information

1

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