Intel Fortran Compiler
Encyclopedia
Intel Fortran Compiler, also known as IFORT, is a Fortran
compiler
developed by Intel. It generates code for IA-32
, Intel 64 processors. Compilers are available for Linux
, Microsoft Windows
and Mac OS X
. On Windows, it is known as Intel Visual Fortran. On Linux and Mac OS X, it is known as Intel Fortran.
Intel Fortran supports compilation for its IA-32
and Intel 64 processors and certain non-Intel but compatible processors, such as certain AMD processors. Itanium
support was dropped starting from version 12.0. The Intel Fortran Compiler for IA-32 and Intel 64 features an automatic vectorizer that can generate SSE
, SSE2
, SSE3
, SSSE3
, SSE4
and AVX
SIMD
instructions. It supports both OpenMP
3.1, automatic parallelization
for symmetric multiprocessing
and supports almost all of the Fortran 2003 standard and much of the Fotran 2008 standard including Coarray Fortran. With the add-on capability Cluster OpenMP, the compiler can also automatically generate Message Passing Interface
calls for distributed memory
multiprocessing
from OpenMP directives.
The Intel Fortran compiler represents the merging of the Compaq Visual Fortran frontend with the Intel backend. The compiler is also notable for being widely used for SPEC CPU Benchmarks of IA-32, x86-64, and Itanium 2 architectures.
The Intel Fortran Compiler is available in various packages from Intel. It is part of the Intel Parallel Studio XE package (available in Windows and Linux versions), Intel Fortran Composer XE package (available in Windows, Linux and Mac OS X versions), the Intel Composer XE (available in Windows and Linux versions) and the Intel Cluster Suite (available in Windows and Linux). The Intel Software Products site provides more information.
(IPO), profile-guided optimization
(PGO), and high-level optimizations (HLO).
Profile-guided optimization refers to a mode of optimization where the compiler is able to access data from a sample run of the program across a representative input set. The data would indicate which areas of the program are executed more frequently, and which areas are executed less frequently. All optimizations benefit from profile-guided feedback because they are less reliant on heuristics when making compilation decisions.
High-level optimizations are optimizations performed on a version of the program that more closely represents the source code. This includes loop interchange, loop fusion, loop unrolling, loop distribution, data prefetch, and more. These optimizations are usually very aggressive and may take considerable compilation time, unless run on Intel's latest generation processors, such as the Core i7, in which case the compilation time with HLO enabled is significantly shortened.
Interprocedural optimization applies typical compiler optimizations (such as constant propagation) but using a broader scope that may include multiple procedures, multiple files, or the entire program.
The compilers include the Intel Math Kernel Library, which has a number of thread-safe and threaded functions.
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...
developed by Intel. It generates code for IA-32
IA-32
IA-32 , also known as x86-32, i386 or x86, is the CISC instruction-set architecture of Intel's most commercially successful microprocessors, and was first implemented in the Intel 80386 as a 32-bit extension of x86 architecture...
, Intel 64 processors. Compilers are available for Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
, Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
and Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...
. On Windows, it is known as Intel Visual Fortran. On Linux and Mac OS X, it is known as Intel Fortran.
Intel Fortran supports compilation for its IA-32
IA-32
IA-32 , also known as x86-32, i386 or x86, is the CISC instruction-set architecture of Intel's most commercially successful microprocessors, and was first implemented in the Intel 80386 as a 32-bit extension of x86 architecture...
and Intel 64 processors and certain non-Intel but compatible processors, such as certain AMD processors. Itanium
Itanium
Itanium is a family of 64-bit Intel microprocessors that implement the Intel Itanium architecture . Intel markets the processors for enterprise servers and high-performance computing systems...
support was dropped starting from version 12.0. The Intel Fortran Compiler for IA-32 and Intel 64 features an automatic vectorizer that can generate SSE
Streaming SIMD Extensions
In computing, Streaming SIMD Extensions is a SIMD instruction set extension to the x86 architecture, designed by Intel and introduced in 1999 in their Pentium III series processors as a reply to AMD's 3DNow! . SSE contains 70 new instructions, most of which work on single precision floating point...
, SSE2
SSE2
SSE2, Streaming SIMD Extensions 2, is one of the Intel SIMD processor supplementary instruction sets first introduced by Intel with the initial version of the Pentium 4 in 2001. It extends the earlier SSE instruction set, and is intended to fully supplant MMX. Intel extended SSE2 to create SSE3...
, SSE3
SSE3
SSE3, Streaming SIMD Extensions 3, also known by its Intel code name Prescott New Instructions , is the third iteration of the SSE instruction set for the IA-32 architecture. Intel introduced SSE3 in early 2004 with the Prescott revision of their Pentium 4 CPU...
, SSSE3
SSSE3
Supplemental Streaming SIMD Extensions 3 is a SIMD instruction set created by Intel and is the fourth iteration of the SSE technology.- History :...
, SSE4
SSE4
SSE4 is a CPU instruction set used in the Intel Core microarchitecture and AMD K10 . It was announced on 27 September 2006 at the Fall 2006 Intel Developer Forum, with vague details in a white paper; more precise details of 47 instructions became available at the Spring 2007 Intel Developer Forum...
and AVX
Advanced Vector Extensions
Advanced Vector Extensions is an extension to the x86 instruction set architecture for microprocessors from Intel and AMD proposed by Intel in March 2008 and first supported by Intel with the Westmere processor shipping in Q1 2011 and now by AMD with the Bulldozer processor shipping in Q3 2011.AVX...
SIMD
SIMD
Single instruction, multiple data , is a class of parallel computers in Flynn's taxonomy. It describes computers with multiple processing elements that perform the same operation on multiple data simultaneously...
instructions. It supports both OpenMP
OpenMP
OpenMP is an API that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most processor architectures and operating systems, including Linux, Unix, AIX, Solaris, Mac OS X, and Microsoft Windows platforms...
3.1, automatic parallelization
Automatic parallelization
Automatic parallelization, also auto parallelization, autoparallelization, or parallelization, the last one of which implies automation when used in context, refers to converting sequential code into multi-threaded or vectorized code in order to utilize multiple processors simultaneously in a...
for symmetric multiprocessing
Symmetric multiprocessing
In computing, symmetric multiprocessing involves a multiprocessor computer hardware architecture where two or more identical processors are connected to a single shared main memory and are controlled by a single OS instance. Most common multiprocessor systems today use an SMP architecture...
and supports almost all of the Fortran 2003 standard and much of the Fotran 2008 standard including Coarray Fortran. With the add-on capability Cluster OpenMP, the compiler can also automatically generate Message Passing Interface
Message Passing Interface
Message Passing Interface is a standardized and portable message-passing system designed by a group of researchers from academia and industry to function on a wide variety of parallel computers...
calls for distributed memory
Distributed memory
In computer science, distributed memory refers to a multiple-processor computer system in which each processor has its own private memory. Computational tasks can only operate on local data, and if remote data is required, the computational task must communicate with one or more remote processors...
multiprocessing
Multiprocessing
Multiprocessing is the use of two or more central processing units within a single computer system. The term also refers to the ability of a system to support more than one processor and/or the ability to allocate tasks between them...
from OpenMP directives.
The Intel Fortran compiler represents the merging of the Compaq Visual Fortran frontend with the Intel backend. The compiler is also notable for being widely used for SPEC CPU Benchmarks of IA-32, x86-64, and Itanium 2 architectures.
The Intel Fortran Compiler is available in various packages from Intel. It is part of the Intel Parallel Studio XE package (available in Windows and Linux versions), Intel Fortran Composer XE package (available in Windows, Linux and Mac OS X versions), the Intel Composer XE (available in Windows and Linux versions) and the Intel Cluster Suite (available in Windows and Linux). The Intel Software Products site provides more information.
Optimizations
Intel tunes its compilers to optimize for its hardware platforms to minimize stalls and to produce code that executes in the smallest number of cycles. The Intel Fortran Compilers support three separate high-level techniques for optimizing the compiled program: interprocedural optimizationInterprocedural optimization
Interprocedural optimization is a collection of compiler techniques used in computer programming to improve performance in programs containing many frequently used functions of small or medium length...
(IPO), profile-guided optimization
Profile-guided optimization
Profile-guided optimization is a compiler optimization technique in computer programming to improve program runtime performance. In contrast to traditional optimization techniques that solely use the source code, PGO uses the results of test runs of the instrumented program to optimize the final...
(PGO), and high-level optimizations (HLO).
Profile-guided optimization refers to a mode of optimization where the compiler is able to access data from a sample run of the program across a representative input set. The data would indicate which areas of the program are executed more frequently, and which areas are executed less frequently. All optimizations benefit from profile-guided feedback because they are less reliant on heuristics when making compilation decisions.
High-level optimizations are optimizations performed on a version of the program that more closely represents the source code. This includes loop interchange, loop fusion, loop unrolling, loop distribution, data prefetch, and more. These optimizations are usually very aggressive and may take considerable compilation time, unless run on Intel's latest generation processors, such as the Core i7, in which case the compilation time with HLO enabled is significantly shortened.
Interprocedural optimization applies typical compiler optimizations (such as constant propagation) but using a broader scope that may include multiple procedures, multiple files, or the entire program.
The compilers include the Intel Math Kernel Library, which has a number of thread-safe and threaded functions.
Manuals
Documentation can be found at the Intel Software Technical Documentation site.Architectures
- IA-32IA-32IA-32 , also known as x86-32, i386 or x86, is the CISC instruction-set architecture of Intel's most commercially successful microprocessors, and was first implemented in the Intel 80386 as a 32-bit extension of x86 architecture...
- x86-64X86-64x86-64 is an extension of the x86 instruction set. It supports vastly larger virtual and physical address spaces than are possible on x86, thereby allowing programmers to conveniently work with much larger data sets. x86-64 also provides 64-bit general purpose registers and numerous other...
(Intel 64 and AMD64) - IA-64 i.e. the "ItaniumItaniumItanium is a family of 64-bit Intel microprocessors that implement the Intel Itanium architecture . Intel markets the processors for enterprise servers and high-performance computing systems...
"
Versions
The following versions of Intel Fortran Compiler have been released:Compiler version | Release date | Major New Features |
---|---|---|
Intel Fortran Composer XE 2011 Update 6 and above (compiler 12.1) | Sep 8, 2011 | OpenMP 3.1, additional 2003 (ALLOCATE with SOURCE=, polymorphic source) and 2008 standards support, Windows version ships with Visual Studio 2010. |
Intel Fortran Composer XE 2011 up to Update 5 (compiler 12.0) | Nov 7, 2010 | Coarray Fortran, additional 2003 (FINAL subroutines, GENERIC keyword, ...) and 2008 (Coarrays, CODIMENSION, SYNC ALL, SYNC IMAGES, SYNC MEMORY, CRITICAL, LOCK, ERROR STOP, ALLOCATE/DEALLOCATE), ...) standards support. |
Intel Fortran Compiler 11.1 | June 23, 2009 | Support for latest Intel SSE SSE4.2, AVX and AES instructions. More Fortran 2003 support. Support for latest Intel MKL release (included in compiler products). Commercial licenses for Windows version include Microsoft Visual Studio Microsoft Visual Studio Microsoft Visual Studio is an integrated development environment from Microsoft. It is used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all... 2008 Shell and libraries. |
Intel Fortran Compiler 11.0 | November 2008 | More Fortran 2003 support. Support for OpenMP 3.0. Source Checker for static memory/parallel diagnostics. Commercial licenses for Windows version include Microsoft Visual Studio Microsoft Visual Studio Microsoft Visual Studio is an integrated development environment from Microsoft. It is used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all... 2005 Premier Partner Edition. |
Intel Fortran Compiler 10.1 | November 7, 2007 | New OpenMP* compatibility runtime library. To use the new libraries, you need to use the new option "-Qopenmp /Qopenmp-lib:compat" on Windows, and "-openmp -openmp-lib:compat" on Linux. This version of the Intel compiler supports more intrinsics from Microsoft Visual Studio Microsoft Visual Studio Microsoft Visual Studio is an integrated development environment from Microsoft. It is used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all... 2005. VS2008 support - command line only in this release. |
Intel Fortran Compiler 10.0 | June 5, 2007 | Improved parallelizer and vectorizer, Streaming SIMD Extensions 4 (SSE4 SSE4 SSE4 is a CPU instruction set used in the Intel Core microarchitecture and AMD K10 . It was announced on 27 September 2006 at the Fall 2006 Intel Developer Forum, with vague details in a white paper; more precise details of 47 instructions became available at the Spring 2007 Intel Developer Forum... ), new and enhanced optimization reports for advanced loop transformations, new optimized exception handling implementation. |
Intel Fortran Compiler 9.0 | June 14, 2005 | AMD64 architecture (for Windows), software-based speculative pre-computation (SSP) optimization, improved loop optimization reports. |
Intel Fortran Compiler 8.1 | September, 2004 | AMD64 architecture (for Linux). |
Intel Fortran Compiler 8.0 | December 15, 2003 | Precompiled headers, code-coverage tools. [ftp://download.intel.com/support/performancetools/c/linux/v8/c8lin_relnotes.pdf] |
Intel Fortran Compiler 7.1 | March, 2003 | Partial support for the Intel Pentium 4 Pentium 4 Pentium 4 was a line of single-core desktop and laptop central processing units , introduced by Intel on November 20, 2000 and shipped through August 8, 2008. They had a 7th-generation x86 microarchitecture, called NetBurst, which was the company's first all-new design since the introduction of the... with Streaming SIMD Extensions 3 (SSE3 SSE3 SSE3, Streaming SIMD Extensions 3, also known by its Intel code name Prescott New Instructions , is the third iteration of the SSE instruction set for the IA-32 architecture. Intel introduced SSE3 in early 2004 with the Prescott revision of their Pentium 4 CPU... ). [ftp://download.intel.com/support/performancetools/c/linux/v7/c71Lin_relnotes.pdf] |
Intel Fortran Compiler 7.0 | November 25, 2002 | [ftp://download.intel.com/support/performancetools/c/linux/v7/c71Lin_relnotes.pdf] |
Intel Fortran Compiler 6.0 | April 24, 2002 | [ftp://download.intel.com/support/performancetools/c/linux/v6/c_ug_lnx60.pdf] |