Last Updated:01/12/2021
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® Fortran Compiler Classic (ifort driver) in the Intel® oneAPI HPC Toolkit includes a full implementation of the Fortran 2018 standard.
The Intel® Fortran Compiler (Beta) (ifx driver) is also included in the Intel® oneAPI HPC Toolkit. The Intel® Fortran Compiler (Beta) (ifx) is a new compiler based on the Intel® Fortran Compiler Classic (ifort) frontend and runtime libraries, using LLVM backend technology. At this time ifx supports features of the Fortran 95 language and most of the OpenMP 4.5 directives and offloading features. 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). Both compilers use the ifort runtime libraries. ifx is released as a Beta version for users interested in trying GPU offloading, which ifort does not support. Other Fortran users should continue to use ifort.
Intel® Fortran Compiler (Beta) (the “Materials”) are licensed to you under the Free User Type as defined in the enclosed Intel End User License Agreement for Developer Tools (Version October 2020) (“EULA”). The Materials are “Pre-Release Materials” as set forth in Section 4.2 of the EULA.
The following restrictions for these Pre-Release Materials in Section 4.2 of the EULA are hereby waived: (i) to not modify or incorporate the Pre-Release Materials into Your Product, (ii) to not continue to use the Pre-Release Materials once a commercial version is released, and (iii) to not disclose to any third party any benchmarks, performance results, or other information relating to the Pre-Release Materials.
If You decide to use these Pre-Release Materials, You acknowledge and agree that (a) the Pre-Release Materials have only been validated to beta quality level, may not be error free, and may require more frequent updates; (b) the current performance may not be representative of the performance of the final production version; and (c) You are fully responsible for any issues that result from the use of these Pre-Release Materials.
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.
This section highlights important changes from the previous product version and changes in product updates.
Changes since Intel® Fortran Compiler 19.1
Please see Intel® Fortran Compiler System Requirements.
Installation instructions are shipped with all Intel® Software Development Products as part of the documentation. Installation guide for the latest Intel® oneAPI HPC toolkit version is also available online. Please check Intel® oneAPI page for installation guides.
Please refer to
for details on how to use the Intel® Fortran Compiler.
Product documentation is available online
Access the Intel® Fortran Compiler forum when you need assistance. If you have Commercial Support, create a support ticket.
Known Issue
This issue is fixed in the Fortran component patch release 2021.1.2. Compiler option --version on Linux* and macOS* returns an incorrect version string ifort (IFORT) 2021.1 Beta 20201112. The word "Beta" is incorrect; this is a production compiler. Use the compiler option -V for the correct version string, Intel(R) Fortran Intel(R) 64 Compiler Classic for applications running on Intel(R) 64, Version 2021.1 Build 20201112_000000. The string returned by compiler option --version will be corrected in a future update. This ifort compiler option is not available on Windows*.
These features are not available when using the ifx compiler driver.
Known Issue
This issue is fixed in the Fortran component patch release 2021.1.2. In Microsoft* Visual Studio the name for Intel® Fortran Compiler (Beta) is listed incorrectly as Intel(R) Fortran Compiler. This is a Beta LLVM-based Fortran compiler; it should not be used in production. See additional information at the beginning of this Release Note regarding Intel® Fortran Compiler (Beta) and its use.
Read this supplemental article for more information about the implementaion of Fortran 2003, Fortran 2008, OpenMP 4.5 and OpenMP 5.0 features.
These features are available with the ifort compiler driver only.
Please refer to the compiler documentation for details. The following new compiler options are added:
Linux / macOS
Windows
assume [no]failed-images
Tells the runtime system to check for failed images on a team of images when executing an image control statement without a STAT= specifier or a call to MOVE_ALLOC or an atomic or collective subroutine without a STAT argument. Default nofailed_images.
assume [no]ieee_compares
Tells the compiler to generate IEEE compareSignaling<relation> operations for floating point comparisons, as required by the Fortran 2018 standard. Default assume ieee_compares.
check [no]teams
Tells the runtime system to detect non-standard usage of coarray team features. Examples are the use of a TEAM variable in the NUM_IMAGES intrinsic that does not describe the current team or an ancestor of the current team, or the use of TEAM_NUMBER=-1 in an image selector to indicate the initial team. Default noteams.
For a complete list of deprecated compiler options, see the Compiler Options section of the documentation. Newly deprecated compiler options are listed below.
Please refer to the compiler documentation for details. The following new compiler options are added:
assume [no]ieee_compares
Tells the compiler to generate IEEE compareSignaling<relation> operations for floating point comparisons, as required by the Fortran 2018 standard. By default ifx assume NaNs are not going to be operands in floating point comparisons and does not generate that check for NaNs. To get ifort behavior in floating point comparisons, ifx users should specify assume nan_compares.
fp-model, fp -- Compile Option Difference
-fp-model fast=1 or -fp-model fast=2
The behavior with the fp-model|fp fast=1 or 2 option is different between ifort and ifx with respect to floating point compares. To get ifort behavior when using the fp-model|fp fast option with ifx, assume nan_compares should be specified on the ifx command line.
This issue is fixed in the Fortran component patch release 2021.1.2. Compiler option --version on Linux* and macOS* returns an incorrect version string ifort (IFORT) 2021.1 Beta 20201112. The word "Beta" is incorrect; this is a production compiler. Use the compiler option -V for the correct version string, Intel(R) Fortran Intel(R) 64 Compiler Classic for applications running on Intel(R) 64, Version 2021.1 Build 20201112_000000. The string returned by compiler option --version will be corrected in a future update. This ifort compiler option is not available on Windows*.
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
fredist.txt file for the Fortran compiler (ifort) is available online only for 2021.1.1 (Gold) release and will be part of compiler packages in future releases.
Use of IPO ( -ipo ) for Intel® oneAPI Fortran Compilers Classic available in the Intel® oneAPI HPC Toolkit on macOS 11 causes a link-time error. Please remove -ipo from your compiler options for macOS* 11.
This link error does not affect Linux* or Windows* compilers. It does not affect current macOS* 10.x users, only the new macOS 11 “Big Sur”* operating system.
IPO support for macOS* 11 “Big Sur”* is deprecated and non-functional in beta10 and will be removed in a future release.
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
If you are running
your program did not handle the exception as intended.
The solution is to add legacy_x86_flt_exceptions.lib to your link command.
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 will not complete successfully and give little information about the failure.
These are applicable when using the ifx compiler driver.
This issue is fixed in the Fortran component patch release 2021.1.2. For more information, go here.
OpenMP offload may not work for icx and ifx with this initial release, oneAPI 2021.1.1. Behavior you may see when reaching a TARGET directive is that the application may hang. Use Ctrl+C to abort.
Workaround
Use the OpenCL driver for offload by setting the environment variable LIBOMPTARGET_PLUGIN.
This will allow the TARGET region to offload successfully.
This issue is fixed in the Fortran component patch release 2021.1.2. In Microsoft* Visual Studio the name for Intel® Fortran Compiler (Beta) is listed incorrectly as Intel(R) Fortran Compiler. This is a Beta LLVM-based Fortran compiler; it should not be used in production. See additional information at the beginning of this Release Note regarding Intel® Fortran Compiler (Beta) and its use.
fredist.txt file for the Fortran compiler (ifx) is available online only for 2021.1.1 (Gold) release and will be part of compiler packages in future releases.
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.
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.
The failure using Link Time Optimization (LTO) is a linker failure. To successfully link, be sure to use at least these versions of binutils for your OS, except for RHEL 7. With RHEL 7, LTO is not supported.
OS | Status |
---|---|
OpenSUSE 15.2 | Fixed in binutils 2.35 |
SLES 15 SP2 | Reported, https://bugzilla.suse.com/show_bug.cgi?id=1177442 |
RHEL 7 | Closed/Won't Fix |
RHEL 8 | Fixed in binutils-2.30-82.el8 |
Fedora 32 | Fixed in binutils-2.34-6.fc32 |
Ubuntu 20.04 LTS | Reported, https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/1902760 |
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.
The Intel® Fortran Compiler Classic (ifort) supports the full Fortran 2008 standard and the full Fortran 2018 standard. New Fortran 2018 features supported by the current version are listed in the 'New features from Fortran 2018' section.
Please refer to the Fortran 2008 Standard (PDF) and the Fortran 2018 Standard (PDF) as needed.
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.
Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.