Intel® Fortran Compilers

Performance without compromise on Windows*, Linux* and OS X*

  • Broad support for current and previous Fortran standards, plus popular extensions
  • Intel® Math Kernel Library included in suites
  • Optional Rogue Wave* IMSL* Fortran Numerical Library on Windows

Try & Buy Intel® Fortran Compiler in:

Intel® Parallel Studio XE

A complete Fortran development environment for Windows*

  • Works with Microsoft* Visual Studio* 2010, 2012 and 2013
  • Don't have Visual Studio? No problem - a Fortran development environment based on Microsoft Visual Studio 2010 Shell is included - nothing else to buy!
  • Develop, build, debug and run from the familiar Visual Studio IDE, or build and run from the command line - your choice!
  • 32-bit and 64-bit development included - no extra charge!
  • Create traditional console applications or advanced graphical interfaces with QuickWin, OpenGL* and Windows API support
  • COM (Component Object Model) and .NET interoperability provided
  • Build mixed-language applications with C++, Visual Basic*, Microsoft C# and more! (requires Microsoft Visual Studio)
  • Tens of thousands of declarations of routines, types and constants for Windows API, OpenGL, POSIX, dialogs, multi-byte character support and more!

Intel Fortran integration into Microsoft Visual Studio

  1. Fortran project and source files in Visual Studio
  2. Fortran-aware text editor with context-sensitive help, Go To Definition, templates, coloring and more
  3. Debug Fortran code with full access to Fortran types and arrays
  4. Build and debug mixed-language programs in a single Visual Studio solution
  5. Set breakpoints at Fortran source lines, with optional conditions


Broad support for current and previous Fortran standards, plus popular extensions

  • Full language Fortran 95, full Fortran 2003, plus significant Fortran 2008 features
    • Coarrays
    • DO CONCURRENT
    • 31 array dimensions (standard specifies 15)
    • NEWUNIT in OPEN
    • Much more - see release notes for details
  • Also supports FORTRAN IV (FORTRAN-66), FORTRAN 77 and Fortran 90
  • Extensive OpenMP 4.0* support
  • Source compatible with Compaq Visual Fortran* - most projects just need a rebuild

Performance without compromise

  • Industry leading performance on Intel and AMD* processors.  Take a look at the benchmarks below that were run by Polyhedron* for independent confirmation.


Geomean time in seconds - lower is better
As published 3/10/2014 at http://www.polyhedron.com

  • Extensive optimizations for the latest Intel processors, including Intel® Xeon Phi™ coprocessor
  • Take advantage of multicore, manycore and multiprocessor systems with OpenMP, automatic parallelism, DO CONCURRENT, coarrays and Intel Xeon Phi coprocessor support
  • Patented automatic CPU dispatch feature gets you code optimized for the current running processor

Intel® Math Kernel Library

  • Included in Fortran suites that adds advanced math processing
  • Vectorized and threaded for highest performance on all Intel and compatible processors
  • De facto standard APIs for simple code integration
  • Compatible with all C, C++ and Fortran compilers
  • Royalty-free, per developer licensing for low cost deployment
  • Click here for more information.

Rogue Wave* IMSL* 7 Fortran Numerical Library

  • Optional add-on to the suites that include Intel Visual Fortran compiler
  • Superior accuracy and reliability through 40 years of refinement
  • A comprehensive set of 1000+ algorithms
  • Supporting parallel processing architectures since 1990
  • Evolves easily with software and hardware upgrades
  • Click here for more information and pricing

Outstanding support

  • One year of support included with purchase – gives you access to all product updates and new versions released in the support period plus access to Intel® Premier Support
  • Active user forums for help from experienced users and Intel engineers

Works with your familiar development environment

  • Uses gcc tools, including gdb debugger
  • Link compatible with C and C++ from gcc
  • 32-bit and 64-bit compilers included – no extra charge!

Broad support for current and previous Fortran standards, plus popular extensions

  • Full language Fortran 95, Full Fortran 2003, plus significant Fortran 2008 features
    • Coarrays
    • DO CONCURRENT
    • 31 array dimensions (standard specifies 15)
    • NEWUNIT in OPEN
    • BLOCK
    • Much more - see release notes for details
  • Also supports FORTRAN IV (FORTRAN-66), FORTRAN 77 and Fortran 90
  • Extensive OpenMP 4.0* support

Performance without compromise

  • Industry leading performance on Intel and AMD processors. Take a look at the benchmarks below that were run by Polyhedron for independent confirmation.


Geomean time in seconds - lower is better
As published 3/10/2014 at http://www.polyhedron.com

  • Extensive optimizations for the latest Intel processors including Intel® Xeon Phi™ coprocessor
  • Take advantage of multicore, manycore and multiprocessor systems with OpenMP, automatic parallelism, DO CONCURRENT, coarrays and Intel Xeon Phi coprocessor support
  • Patented automatic CPU dispatch feature gets you code optimized for the current running processor

Intel® Math Kernel Library

  • Included in Fortran suites that adds advanced math processing
  • Vectorized and threaded for highest performance on all Intel and compatible processors
  • De facto standard APIs for simple code integration
  • Compatible with all C, C++ and Fortran compilers
  • Royalty-free, per developer licensing for low cost deployment
  • Click here for more information

Outstanding support

  • One year of support included with purchase – gives you access to all product updates and new versions released in the support period plus access to Intel® Premier Support
  • Active user forums for help from experienced users and Intel engineers

Works with your familiar development environment

  • Build from command line or use Xcode integration (limited feature)
  • Link compatible with C and C++ from gcc
  • 32-bit and 64-bit compilers included – no extra charge!

Broad support for current and previous Fortran standards, plus popular extensions

  • Full language Fortran 95, full Fortran 2003, plus significant Fortran 2008 features
    • DO CONCURRENT
    • 31 array dimensions (standard specifies 15)
    • NEWUNIT in OPEN
    • BLOCK
    • Much more - see release notes for details
  • Also supports FORTRAN IV (FORTRAN-66), FORTRAN 77 and Fortran 90
  • Extensive OpenMP 4.0* support

Performance without compromise

  • Industry leading performance
  • Extensive optimizations for the latest Intel processors
  • Take advantage of multicore, manycore and multiprocessor systems with OpenMP, automatic parallelism, DO CONCURRENT
  • Patented automatic CPU dispatch feature gets you code optimized for the current running processor

Intel® Math Kernel Library

  • Vectorized and threaded for highest performance on all Intel and compatible processors
  • De facto standard APIs for simple code integration
  • Compatible with all C, C++ and Fortran compilers
  • Royalty-free, per developer licensing for low cost deployment
  • Included in Intel® Fortran Composer XE
  • Click here for more information

Outstanding support

  • One year of support included with purchase – gives you access to all product updates and new versions released in the support period plus access to Intel® Premier Support
  • Active user forums for help from experienced users and Intel engineers

Videos to help you get started.

  • Introduction to Intel® Visual Fortran in the Microsoft* Visual Studio* Development Environment
  • Optimizing your application with Intel® C++ and Fortran Compilers for Windows* and Linux*

Register for future Webinars


Previously recorded Webinars:

  • Update Now: What’s New in Intel® Compilers and Libraries
  • An Introduction to Intel® Visual Fortran Development on Intel® Xeon Phi™ coprocessor
  • OpenMP 4.0 for SIMD and Affinity Features with Intel® Xeon® Processors and Intel® Xeon Phi™ Coprocessor
  • Learn to be an Intel® Visual Fortran Power User
  • Optimizing and Compilation for Intel® Xeon Phi™ Coprocessor

Featured Articles

No Content Found

More Tech Articles

Load Balance and Parallel Performance
By adminPosted 01/19/20100
Load balancing an application workload among threads is critical to performance. The key objective for load balancing is to minimize idle time on threads.
Performance Insights to Intel® Hyper-Threading Technology
By Antonio Valles (Intel)Posted 11/20/200917
This paper explains how Intel HT Technology works and shows a variety of performance results across several classes of software running on clients, workstations, and servers. Methods for assessing Intel HT Technology performance are introduced, and analysis of performance degradations are include...
Intel C++ or Fortran Compiler for Windows Silent Installation Guide
By Steve Lionel (Intel)Posted 09/01/20094
A guide to installing Intel C++ or Fortran Compiler for Windows using a non-interactive (silent) installation.
Short Data Segment Overflow Error on Linux* 64 on Itanium® Architecture
By Seung-Woo Kim (Intel)Posted 08/25/20091
Workarounds and solutions for the Short Data Section Overflow error condition on IA-64 are discussed.
Subscribe to Intel Developer Zone Articles

Supplemental Documentation

No Content Found
Subscribe to Intel Developer Zone Articles

You can reply to any of the forum topics below by clicking on the title. Please do not include private information such as your email address or product serial number in your posts. If you need to share private information with an Intel employee, they can start a private thread for you.

New topic    Search within this forum     Subscribe to this forum


Massive performance issue with code on Haswell-EP (E5-1650v3)
By Johannes6
Dear all, it's maybe off topic, but I know no other place to address this issue to. And it is Fortran related. I got a new workstation (E5-1650v3, 64GB ram, SSD, Win7 64 bits) from a big global player vendor two days ago and was happy to have a new toy. Unfortunately not long... After installing all drivers up to date, I installed VS and the Intel Compilers in version 15.0.1. Happy with fast installing on a SSD, I tested compiling my Fortran tools and was confused. All my code runs even slower than on my old workhorse (E5620). Not believing that I tested other programs and on another new E5-1650v3 workstation of a colleague. The same results. Then I tested the same executable with the same inputs on an IvyBride-EP (E5-1650v2) and got expected results (attached file: Performance_test_5810_custom_Fortran_code.pdf). My compiler options are: main code: /nologo /O3 /Qparallel /Qopt-matmul /fpp /I"D:\aux_lib\x64\Release" /I"D:\geo_lib\x64\Release" /arch:SSE3 /Qopenmp /Qvec-report1 /warn:a...
What does /Qvec do except vectorizing loops?
By Nikita Tropin1
Hello, I'm trying to optimize some scientific code, where Fortran DLL is called from C#. When I compile my Fortran DLL in Release with /O1 option or below, it works fine, but when I compile the DLL with /O2 or higher, I have an error during the runtime, right at the line that  calls Fortran DLL subroutine from C#: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt.". So, following this thread, I found that the problem is in vectorization, i.e. when I disable it and build my DLL with /O2 and /Qvec-, it works fine.  Then I decided to find out, which loop is causing problems, so with vectorization enabled I used vectorization report (/Qvec-report1) that showed me, which loops were vectorized. So I started to put a directive !DEC$ NOVECTOR before each such loop, rebuild the code and see it if works or not. I expected that after disabling vectorization of some specific loop, the program will start to work without errors. However surpris...
Debugging with external process
By Ted Lillys, PE4
I'm trying to debug a console app on Windows that it called by a VC++/VB UI via a batch file.   I've tried pointing to the batch file as the Command on the Debugging Properties tab along with the arguments passed to the batch from the UI.  VS balked - the Command is required to be an EXE.  I also determined what the arguments were, pointed to the target with the arguments but that fails as the console app asks for process ids from the UI, so the UI has to be active. I've tried attaching to the UI process and then manipulating the UI to launch the console app (which it does by making a system call to the same batch file mentioned above).  I thought I made sure the target was placed in the location where the UI was expecting to find it however a break point at the entry point was reached - I have to verify that the image I want the UI to access is the one I compiled. I've never attempted to debug this way - I just attached to the process of the UI and nothing more - there were no debu...
Double precision SIN and COS slower in 15.0 vs 12.1 (not using SSE2)
By Stefan P.4
I'm compiling the following sample program with compiler versions 15.0 Update 1 and 12.1 Update 5, with this command line: ifort /debug /O2 /arch:ia32 costest.f90     program costest     implicit none     real*8 a,b         read *, a     b = cos(a)     print *, b         end program costest  They both call the _cos library function in libmmt.lib, where an auto-dispatcher selects different implementations depending on CPU features. The test CPU is Xeon X5675, which supports SSE2. In 12.1, the dispatcher calls _cos.N, which uses SSE2 instructions. In 15.0, the dispatcher calls _cos.O, which uses SSE instructions, even though _cos.N is also available. The new code seems to have the CPU feature tests done in the wrong order. Similar code is in the implementation of _sin. There is a speed difference between the two implementations (the SSE2 version seems to be ~2x faster; for _sin the difference is larger). Our application is built with /arch:ia32 and we are seeing a significant perfo...
fatal error LNK1104: cannot open file 'LIBCMTD.lib'
By John V.4
Using Visual Studio Professional 2012 and Intel Visual Fortran Composer XE 2013 SP1, I get "fatal error LNK1104:  cannot open file 'LIBCMTD.lib'" when trying to build a solution. I have 'LIBCMTD.lib' in directory C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64 and the x64 Libraries has "$(VCInstallDir)lib\amd64" where $(VCInstallDir) has value C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC. What am I missing?   Thanks, John
Assignment overloading for intrinsic types?
By Jacob Williams3
Consider the following toy example: module test_module implicit none type :: myint integer :: i = 0 contains generic :: assignment(=) => int_to_myint procedure :: int_to_myint end type myint contains subroutine int_to_myint(me,i) !myint = integer assignment implicit none class(myint),intent(inout) :: me integer,intent(in) :: i me%i = i end subroutine int_to_myint end module test_moduleThe type(myint)=integer assignment works great.  My question is this: is it possible to have the reverse assignment (integer=type(myint)) work as well?  This would be like overloading the assignment operator for the integer type, I guess?  Is such a thing possible?
A gap in interface checking for procedures? Can it be filled?
By FortranFan17
This is based on a discussion at comp.lang.fortran: https://groups.google.com/forum/#!topic/comp.lang.fortran/nzq3Sad_zQE The following code generates no compiler warnings with /warn:interfaces or /warn:all: MODULE m !.. IMPLICIT NONE !.. PRIVATE !.. PUBLIC :: s1_intent_in CONTAINS SUBROUTINE s1_intent_in(ia) INTEGER,INTENT(IN) :: ia CALL s2_intent_in(ia) RETURN END SUBROUTINE s1_intent_in SUBROUTINE s2_intent_in(ia) INTEGER :: ia ! Missing INTENT attribute ia = 2 ! Dummy argument should be subject to limitations of actual argument ! i.e., it cannot be redefined; shouldn't the compiler be able to catch ! this and issue some warning? END SUBROUTINE s2_intent_in END MODULE m Intel Fortran documentation summarizes the standard nicely: "If no INTENT attribute is specified for a dummy argument, its use is subject to the limitations of the...
How to use FORTRAN compiler "Data Options" together with a batch file
By Reza M.2
Hi Intel developers, The FORTRAN language prohibits changing the definition status of an argument associated with a constant or expression. My application needs to do so; therefore, I need to specify the /assume:noprotect_constants option. I use the following MSC.Marc batch scripts and its options: run_marc.bat -j job_name -u user_subroutine I wonder how I should add "-assume noprotect_constants" option? As you may know the default is "-assume protect_constants". Thank you in advance for your assistance.  Reza
Subscribe to Forums

You can reply to any of the forum topics below by clicking on the title. Please do not include private information such as your email address or product serial number in your posts. If you need to share private information with an Intel employee, they can start a private thread for you.

New topic    Search within this forum     Subscribe to this forum


OOP fortran: can not make a subroutine execute different objects
By luis.gc.rego4
I need some help please. In this code I create two objects (MM and FF) that extend an abstract object (MF). Then I have a subroutine (execute_MM_or_FF) that is supposed to handle both objects (MM and FF). I tried several ways of doing it but none worked; this is an example for which I get the error message error #8169: The specified interface is not declared.   [OUTPUT] What is the problem with this code? thanks !=================================== module Abstract_class_m     implicit none     private     type , abstract , public :: MF     contains         procedure (output_info) , deferred :: output     end type     abstract interface         subroutine output_info( me , iter)             import :: MF             class(MF) , intent(in) :: me             Integer   , intent(in) :: iter         end subroutine     end interface end module Abstract_class_m !=================================== module MM_class_m     use Abstract_class_m      implicit none     private    ...
Porblem/Bug for GET_ENVIRONMENT_VARIABLE with MPI
By bpichon6
Dear Fortran !! In the following (a hello world kind) program, I try to read the processor's name where images are running. Each process can read the processor's name with a EXECUTE_COMMAND_LINE("echo $HOSTNAME") but with GET_ENVIRONMENT_VARIABLE(...), nothing is read (ios /=0) Note that a single image works well  (mpiexec.hydra -genvuser ./Hello_world_mpi.exe  is Ok) Executable is made with : ifort -I/softs/intel/impi/5.0.1.035/intel64/include/ Hello_world_mpi.f90 -o Hello_world_mpi.exe -L/softs/intel/impi/5.0.1.035/intel64/l ib/ -lmpifort -lmpi We have ifort 15.0.0 and mpi 5.0 (as shown above) We use mpiexec.hydra with OAR Bernard ==========================   source code ============================== Program WHERE_I_AM    USE mpi    USE ISO_FORTRAN_ENV, Only: Output => Output_unit    Implicit None    Integer :: nb_procs, rank, code, ios = 1    Character(Len=20) :: env_name, env_value    !    Call MPI_INIT(code)    Call MPI_COMM_SIZE ( MPI_COMM_WORLD , nb_procs , code ...
array temporary
By Lin L.1
when I'm calling ZGEMV using the interface ZGEMV_f95, the following warning appears: forrtl: warning (406): fort: (1): In call to ZGEMV, an array temporary was created for argument #5 forrtl: warning (406): fort: (1): In call to ZGEMV, an array temporary was created for argument #7   How to avoid this warning?
Uniary operator following arithmetic operator
By hiroshi-murakami3
! (ifort version 15.0.0 or earier) !  I think it is a bad idea to extend the grammer of the arithmetic expression ! in Fortran langurage as the followings. ! Such functionality might look convenient at first, however it would enhance !possibilities to make the compiler to silently ignore  possible human-errors ! such as mis-types especially in lengthy expressions.   ifort accepts the source code below without errors nor warnings. --------------------------- program to_be_avoided implicit none real a, b, c, d, e, f, g, x, y, z, w    a = --3.0    b = ++3.0    c = -+3.0    d = +-3.0    e = 2.0 +-3.0    f = 2.0 *- 3.0    g = 2.0 *+ 3.0    x = 2.0 *- 3.0    y = 2.0 /- 3.0    z = 2.0 +-+ 3.0    w = 2.0 +-+----- 3.0    !----    a =  2.0 ++ a / x    b = --y    c = +-w    d = y *- x    e = z /+-a    f = -- y ++ a /- x    g = -- y ++ a / -----x    x = -a **-x    y = -+a **--x    z = --a **+ x ** y    w = sin(++2.0) -- sin(x--y) ! integer expressions as well (omitt...
Automatic allocation of arrays in fortran is not working
By dhirajhazra3
Hello,     I am using ifort 15.0.1. I know that the automatic allocation works in fortran 2008. I got it working with gfortran. But it seems ifort is not able to compile such programs appropriately. Below is a simple program : program testing implicit none real,allocatable,dimension (:):: a,b allocate(a(10)) a = 1.0 b = a print*,size(b) end program   The array "b" should get the allocation of array "a" along with its values. When I compile with gfortran, the program prints 10, but for ifort it prints 0. Is this feature of F2008 supported yet in ifort ? Regards, Dhiraj               
Help with Intel Fortran on OS X
By Teresa de Jesús C.1
  Hello everyone! I am new in Intel Parallel Studio, and Trying to install and tune the 2015 version in a MacBook pro running Yosemite OS, for now the trial version. The dmg package is already installed and the environmental program executed. How ever running a simple program the following printout appears: ifort: error #10401: error running 'xcrun -find ld' I saw in the forums but not reports on such an error. What is missing in my installation? Some advices? In advance I thank your answer.   Best, Tere            
catastrophic error: **Internal compiler error: segmentation violation signal raised**
By hiroshi-murakami1
With FFLAGS="-C -openmp" # THIS DOES NOT MAKE COMPILATION ERROR.   ifort -c $FFLAGS sub1.f90 sub2.f90 # THIS ALSO DOES NOT MAKE COMPILATION ERROR.   cat   sub1.f90   sub2.f90   >   combined.f90   ifort -c $FFLAGS   combined.f90 # THIS "DOES" MAKE COMPILATION ERROR.   cat   sub2.f90   sub1.f90   >   combined-r.f90   ifort -c $FFLAGS   combined-r.f90 The error message is: combined-r.f90: catastrophic error: **Internal compiler error: segmentation violation signal raised** Please report this error along with the circumstances in which it occurred in a Software Problem Report.   Note: File and line given may not be explicit cause of this error. compilation aborted for combined-r.f90 (code 1) % ifort -v ifort version 15.0.0 The Operating system, Linux (Cent-OS 7.0, or Fedora16 etc.) You can do the above experiment by using my script "compile.sh".  
Differences between !$OMP SIMD and !DIR$ SIMD
By Fiona R.3
Hi Folks,  Can anyone explain the difference(s) between !DIR$ SIMD and !$OMP SIMD please or point me towards where I can find this out? I should add, I've already read through the thread at https://software.intel.com/en-us/forums/topic/509157 but this didn't fully explain the differences.  As I understand !DIR$ SIMD is an Intel specific directive but !$OMP SIMD is part of the OpenMP 4.0 standard, however, many of the clauses that can be added and the use cases appear to be identical for both directives.  Thanks in advance.  Fiona  
Subscribe to Forums