Intel® Fortran Compiler 17.0 Developer Guide and Reference
The major new features for this release are as follows:
One Intel compiler for IA-32 and Intel® 64 architectures
There is now one Intel compiler, hosted on Intel® 64 architecture, which will generate code for either IA-32 or Intel® 64 architecture. For more information, see the [Q]m32 and [Q]m64 compiler options.
CODE_ALIGN directive
Specifies the byte alignment for a loop. For more information, see CODE_ALIGN.
ATTRIBUTES CODE_ALIGN directive
Specifies the byte alignment for a procedure. The LINEAR clause on OMP DECLARE SIMD has been extended with the VAL, UVAL, and REF modifiers to specify whether dummy arguments are treated as sequential values or sequential addresses for vectorization. ATTRIBUTES CODE_ALIGN.
PROCESSOR clause
Tells the compiler to create a vector version of the routine for the specified processor. In addition to adding new cpuids to the ATTRIBUTES VECTOR: PROCESSOR clause, there is an Intel® language extension to allow the PROCESSOR clause in the OMP DECLARE SIMD directive. For more information, see PROCESSOR Clause.
FOR_GET_HBW_AVAILABILITY
Returns the availability of High Bandwidth (HBW) memory for a program. For more information, see FOR_GET_HBW_AVAILABILITY.
FOR_GET_HBW_SIZE
Returns the available free high bandwidth memory and the total high bandwidth memory that is available on a node of the High Bandwidth Memory partition. For more information, see FOR_GET_HBW_SIZE.
FOR_SET_FASTMEM_POLICY
Sets or gets the value of the Fortran Run-Time Library (RTL) FASTMEM policy mode, which is the desired action to occur when an ALLOCATE statement requests FASTMEM/HBW memory, but it is not available to the program or node. For more information, see FOR_SET_FASTMEM_POLICY.
The following are new OpenMP* features:
LINEAR clause in OpenMP* directive DECLARE SIMD
The LINEAR clause on OMP DECLARE SIMD has been extended with the VAL, UVAL, and REF modifiers to specify whether dummy arguments are treated as sequential values or sequential addresses for vectorization. For more information, see LINEAR.
TASKLOOP directive (OpenMP* API)
Specifies that the iterations of one or more associated DO loops should be executed in parallel using OpenMP* tasks. The iterations are distributed across tasks that are created by the construct and scheduled to be executed. For more information, see TASKLOOP.
TASKLOOP SIMD directive (OpenMP* API)
Specifies a loop that can be executed concurrently using SIMD instructions and that those iterations will also be executed in parallel using OpenMP* tasks. For more information, see TASKLOOP SIMD.
PRIORITY clause in OpenMP* directive TASK
Specifies that the generated tasks have the indicated priority for execution. For more information, see PRIORITY.
TARGET PARALLEL directive (OpenMP* API)
Creates a device data environment in a parallel region and executes the construct on that device. This directive only applies to Intel® MIC Architecture. For more information, see TARGET PARALLEL.
TARGET PARALLEL DO directive (OpenMP* API)
Provides an abbreviated way to specify a TARGET directive containing a PARALLEL DO directive and no other statements. For more information, see TARGET PARALLEL DO.
TARGET PARALLEL DO SIMD directive (OpenMP* API)
Specifies a TARGET construct that contains a PARALLEL DO SIMD construct and no other statement. For more information, see TARGET PARALLEL DO SIMD.
TARGET SIMD directive (OpenMP* API)
Specifies a TARGET construct that contains a SIMD construct and no other statement. For more information, see TARGET SIMD.
Extension to the OpenMP* IF clause
You can now specify a directive-name-modifier for the IF clause. For more details, see IF clause.
Extension to the OpenMP TARGET directive
You can now specify a PRIVATE or FIRSTPRIVATE clause or new clauses IS_DEVICE_PTR and DEFAULTMAP in a TARGET directive. For more information, see TARGET.
Extension to the OpenMP TARGET DATA directive
You can now specify new clause USE_DEVICE_PTR in a TARGET DATA directive. For more information, see TARGET DATA.
Extension to the DECLARE TARGET directive
You can now specify another form for the DECLARE TARGET directive that accepts clauses TO and LINK. For more information, see DECLARE TARGET.
Extension to the OpenMP DISTRIBUTE directive
You can now specify a LASTPRIVATE clause in a DISTRIBUTE directive. For more information, see DISTRIBUTE.
Extension to the OpenMP DO directive
You can now specify new clauses ORDERED and LINEAR in a DO directive. You can now specify the new modifiers MONOTONIC, NONMONOTONIC, and SIMD in the SCHEDULE clause in a DO directive. For more information, see DO.
Extension to the OpenMP ORDERED directive
You can now specify a DEPEND clause with keywords SOURCE and SINK on an ORDERED directive. For more information, see ORDERED.
Extension to the MAP clause
You can now specify a new map-type-modifier (ALWAYS) and new map-types (DELETE and RELEASE) for the MAP clause. For more information, see MAP clause.
Language features specific to the Fortran 2008 Standard are not supported with OpenMP directives. The following Fortran 2003 Standard features are not supported with OpenMP directives:
Certain IEEE arithmetic issues, controlling IEEE exceptions, and IEEE class values
Parameterized derived types
The PASS attribute
Procedures bound to a type as operators
Overriding a type-bound procedure
Polymorphic entities
SELECT TYPE construct
Deferred bindings and abstract types
For a summary of Fortran 2003 features, see Fortran 2003 Features.
For a summary of new Fortran 2008 features, see Fortran 2008 Features.
For a summary of new draft Fortran 2015 features, see Draft Fortran 2015 Features.
For information on new compiler options in this release, see New Options in the Compiler Options reference.
For information about the Fortran standards, visit the Fortran standards technical committee website at http://j3-fortran.org/.
For information about the OpenMP* standards, see the OpenMP website at http://www.openmp.org/.