Intel® Fortran Compiler for oneAPI Release Notes (Beta)

Última atualização:10/20/2020

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 (BETA) (ifort driver) in the Intel® oneAPI HPC Toolkit beta release includes a full implementation of the Fortran 2018 standard, including the REDUCE intrinsic. However, these features are not available when using the ifx compiler driver.

The ifort (BETA) compiler in the Intel® oneAPI HPC Toolkit is the next major release of our Fortran compiler ifort. We are not running a formal beta-test program for ifort in 2020 like we have in past years. This beta10 release is an update to our first reveal that was in beta07. So we invite you to test this new ifort in the Intel® oneAPI HPC Toolkit, try the new features, and give us feedback to help improve our Intel® Fortran Compiler.

The Intel® Fortran Compiler (BETA) (ifx driver) is also included in this Intel® oneAPI HPC Toolkit beta release. "ifx" replaces the use of "ifort -qnextgen" or "ifort /qnextgen".

This software is shipped under a pre-release license and cannot be used for building production software. Please consult the EULA included in the distribution as well as the Disclaimer and Legal Information section of these release notes for details.

Where to Find the Release

Please follow the steps to download the Intel® oneAPI HPC Toolkit and follow the installation instructions. 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 product updates.

Changes in beta10 (Intel® Fortran Compiler for oneAPI 2021.1 beta)

  • Intel® Fortran Compiler Classic (BETA) (ifort)
    • No changes from beta09
  • Intel® Fortran Compiler (BETA) (ifx)
    • Corrections to reported issues

Changes in beta09 (Intel® Fortran Compiler for oneAPI 2021.1 beta)

  • Intel® Fortran Compiler Classic (BETA) (ifort)
    • With the implementation of the REDUCE intrinsic in this release, the Fortran 2018 standard is fully implemented.
    • Corrections to reported issues
  • Intel® Fortran Compiler (BETA) (ifx)
    • New Features
      • Language
        • Alternate entries are now supported
        • CLASS support (F2003)
        • Declaration and calling type-bound procedures
        • Many, but not all, user-defined operators
      • OpenMP Directives
        • DECLARE TARGET (routines and globals)
        • VARIANT DISPATCH
        • OMP LOOP
    • Corrections to reported issues

Changes in beta08 (Intel® Fortran Compiler for oneAPI 2021.1 beta)

  • Corrections to reported issues

Changes since Intel® Fortran Compiler 19.1 (New in Intel® Fortran Compiler for oneAPI 2021.1 beta)

Back to top

System Requirements

Please see Intel® Fortran Compiler System Requirements.

Back to top

How to install the Intel® Fortran Compiler

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.

How to use the Intel® Fortran Compiler

Please refer to

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

Back to top

Documentation

Product documentation is available online

Back to top

Japanese Language Support

Japanese language support is not provided with this release of the product.

Back to top

Technical Support

Access the Intel® Fortran Compiler forum when you need assistance.

Back to top

New and Changed Compiler Features

New features from Fortran 2018

These features are not available when using the ifx compiler driver.

  • Coarray teams have been implemented.
    • The derived type TEAM_TYPE has been added to the ISO_FORTRAN_ENV intrinsic module.
    • The CHANGE TEAM and END TEAM statements have been implemented.
    • The FORM TEAM statement has been implemented.
    • The SYNC TEAM statement has been implemented.
    • The TEAM_NUMBER intrinsic function has been implemented.
    • The GET_TEAM intrinsic function has been implemented.
    • The optional TEAM argument has been added to the intrinsic functions STOPPED_IMAGES, NUM_IMAGES, and IMAGE_STATUS.
    • New forms of the IMAGE_INDEX and NUM_IMAGES allow optional TEAM and TEAM_NUMBER arguments have been implemented.
    • A new form of THIS_IMAGE with a TEAM argument has been implemented.
    • An optional TEAM or TEAM_NUMBER specifier is not permitted in image selectors.
  • Implicit allocation of an unallocated coarray in a variable definition context is now prohibited.
  • Nonpolymorphic pointer arguments to the EXTENDS_TYPE_OF and SAME_TYPE_AS intrinsics no longer need to have defined allocation status.
  • Deallocation during finalization has been clarified and now occurs using the semantics defined in Fortran 2018.
  • Output from the STOP and ERROR_STOP statement may now be conditionally suppressed.
  • STOP and ERROR STOP codes can now be non-constant expressions.
  • Named constants of type LOCK_TYPE are no longer allowed.
  • 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.
  • VALUE dummy arguments to PURE procedures may appear in variable definition contexts.
  • The optional ERRMSG argument has been added to the intrinsic procedures GET_COMMAND_ARGUMENT, GET_ENVIRONMENT_VARIABLE, and GET_COMMAND.
  • The OUT_OF_RANGE intrinsic function has been implemented.
  • The RANDOM_INIT intrinsic subroutine has been implemented.
  • Dummy arguments to defined assignment and operator procedures need not have the INTENT(IN) attribute if they have the VALUE attribute.
  • A dummy argument of PURE procedure may appear in a variable definition context if it has the VALUE attribute.
  • Constant properties of an object can be used in the objects initialization.
  • Polymorphic structure constructor components no longer need to have the same dynamic type as their corresponding structure component.
  • The RANDOM_INIT intrinsic subroutine has been implemented.
  • Several new Fortran 2018 terms have been added to the Glossary in the Developer Guide; for example: current team, ancestor team, parent team, and established coarrays.
  • Non-pointer variables with the PROTECTED attribute may no longer appear as a data-target or as a initial-data-target.
  • VOLATILE variables are now prohibited in PURE procedures and statement functions.
  • The type and kind of an implied DO loop variable TYPE can now be specified in an implied-do loop of array constructors and data statements.
  • Floating point comparisons perform IEEE comareSignaling<relation> operations when -assume ieee_compares or -standard-semantics compiler options are specified.
  • Procedures are not compiled for recursion by default; users wanting this behavior should use the -standard-semantics compiler option or the -assume recursion option.
  • The REDUCE function is implemented.

New and Changed Compiler Options

ifort

These features are not available with the ifx compiler driver.

Please refer to the compiler documentation for details. The following new compiler options are added:

Linux / macOS

  • -assume [no]failed-images
  • -assume [no]ieee_compares
  • -check [no]teams

Windows

  • /assume:[no]failed-images
  • /assume:[no]ieee_compares
  • /check:[no]teams

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 noieee_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

Back to top

Support Deprecated

  • 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. Remember to add compiler option -qopenmp-simd or -qopenmp. When compiling with -O2, -qopenmp-simd is implied.
  • The compiler option -stand f15 (Linux), /stand:f15 (Windows) is deprecated and may be removed in a future release. Use -stand f18 (Linux), /stand:f18 (Windows)
  • IPO support for macOS* 11 “Big Sur”* is deprecated and non-functional in beta10 and will be removed in a future release.
  • Support for 32-bit targets is deprecated in ifort and will be removed in a future release.

Support Removed

  • 32-bit coarray support has been removed.
  • Use of the -qnextgen (Linux), /qnextgen (Windows) compiler option is removed. Use "ifx", instead of "ifort -qnextgen" or "ifort /qnextgen".

Back to top

Known Issues

ifort

IPO on the upcoming macOS* 11

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.

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.

ifx

These are applicable when using the ifx compiler driver.

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

Fortran 77
  • Implementation complete.
Fortran 90/95
  • To determine if the code is using Fortran Standards that are not included in Fortran 90, add the compiler option -stand f90 to the compile line. That option issues warning messages for language elements that are not standard in Fortran 90. There is a similar compiler option for Fortran 95.
Fortran 2003
  • Most of the iso_c_binding features introduced in F2003 (but not those introduced in F2018) are supported.
OpenMP
  • Most of OpenMP 4.5 has been implemented.
  • OMP TARGET, including in combination with PARALLEL DO, or TEAMS, is supported. There are known limitations when passing derived type fields to a TARGET region, particularly when that field is an allocatable array.
Other known issues
  • !DIR$ directives are recognized by the front end, but ifx does not implement them.
  • Support for debugging derived types has been added, but overall debug support continues to be limited.

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.

 

Back to top

Fortran 2008 and Fortran 2018 Feature Summary

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.

Back to top

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.

 

Informações de produto e desempenho

1

Os compiladores da Intel podem ou não otimizar para o mesmo nível de microprocessadores não Intel no caso de otimizações que não são exclusivas para microprocessadores Intel. Essas otimizações incluem os conjuntos de instruções SSE2, SSE3 e SSSE3, e outras otimizações. A Intel não garante a disponibilidade, a funcionalidade ou eficácia de qualquer otimização sobre microprocessadores não fabricados pela Intel. As otimizações que dependem de microprocessadores neste produto são destinadas ao uso com microprocessadores Intel. Algumas otimizações não específicas da microarquitetura Intel são reservadas para os microprocessadores Intel. Consulte os Guias de Usuário e Referência do produto aplicáveis para obter mais informações sobre os conjuntos de instruções específicos cobertos por este aviso.

Revisão do aviso #20110804