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

Superscalar Programming 101 (Matrix Multiply) Part 1 of 5
By jimdempseyatthecovePosted 05/08/201216
By Jim DempseyThe subject matter of this article is: How to optimally tune a well known algorithm. We will take this well known (small) algorithm, a common approach to parallelizing this algorithm, a better approach to parallelizing this algorithm, and then produce a fully cache sensitized approa...
Intel Composer XE for Linux Silent Installation Guide
By Ronald W Green (Intel)Posted 03/20/20128
Silent and non-interactive installation for Intel Composer XE 2011 (aka version 12.x) and Intel Compiler Professional 11.1
Loop Modifications to Enhance Data-Parallel Performance
By adminPosted 03/05/20121
When confronted with nested loops, the granularity of the computations that are assigned to threads will directly affect performance. Loop transformations such as splitting and merging nested loops can make parallelization easier and more productive.
Granularity and Parallel Performance
By adminPosted 02/01/20121
One key to attaining good parallel performance is choosing the right granularity for the application. Granularity is the amount of real work in the parallel task. If granularity is too fine, then performance can suffer from communication overhead.
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


Internal error (an ICE?) with a parameterized derived type
By FortranFan5
module m implicit none type :: t(n,m) integer, len :: n integer, len :: m real :: x(n) real :: y((m-1)*n) !.. real :: y(m*n - n) compiles ok end type contains subroutine set(this) !.. Argument list type(t(*,*)), intent(inout) :: this this%x = 0.0 this%y = 0.0 return end subroutine set end module m   ------ Build started: Project: p, Configuration: Debug|Win32 ------ Compiling with Intel(R) Visual Fortran Compiler XE 15.0.2.179 [IA-32]... m.f90 C:\..\m.f90(19): internal error: Please visit 'http://www.intel.com/software/products/support' for assistance. type(t(*,*)), intent(inout) :: this ^ [ Aborting due to internal error. ] compilation aborted for C:\..\m.f90 (code 1) 
Implicit length character array and bind(c) subroutine
By Allen Barnett6
We recently updated to IFORT 15.0.2.179. A few of the regression tests for our code system now fail. The basic pattern is calling a function written in C with a slice of a two-dimensional character array; the compiler is not passing a pointer to the correct word in the character array. Here is a reduced example; we declare an interface to the C routine and iterate over the rows of a character array, passing the first column to the C function: module r interface subroutine cprint ( leng, chars ) bind (c) use, intrinsic :: iso_c_binding, only : c_int, c_char integer(kind=c_int) :: leng character(kind=c_char,len=1) :: chars( leng ) end subroutine cprint end interface end module r subroutine b ( leng, chars ) use r integer :: leng, i character(len=*) :: chars( leng, 2 ) do i = 1, 2 call cprint( leng, chars(:,i) ) end do end subroutine b program a integer, parameter :: leng = 23 integer :: i character(len=1) :: chars( leng, 2 ) ...
Unique system identificator choice?
By Alexander G.8
Greetings everyone. My supervisor asked me if it is possible to force an application to run only on specific PC. My first guess is to generate some sort of unique ID for the PC in question and verify it at start of application. The first thing that springs to mind is to use the Windows product ID as such unique identifier, but I've failed to find a way to get the Windows PID without launching a separate application and parsing its' output, for example, "systeminfo" provides such information, but such solution seems a bit amateur. Is there a proper way of getting the Windows PID? Maybe there is some other way to uniquely identify a PC? I've seen here examples of MAC address acquisition, and that would have suit me if only the MAC address could not be changed so easily. Any ideas? Best regards, Alexander Grushin.
Runing external tools with admin rights
By netphilou3115
Dear all, I don't know if this forum is the right place for this question (probably not) but I am looking for a way to run external tools in DeveloperStudio with admin rights. I my project, I generate a dll that needs to be copied into a directory with is located Inside the "Program Files" folder and because of the UAC I need to  enter the admin ID and password. I don't want to remove the UAC feature (because of our internal Policy). Is there a way to do that ? Best regards,  
Libary Integration with Simpack
By Marvin R.4
hey,   i hope someone can help me with my problem regarding a Simpack User Routine. I wanted to create a User Routine (writen in Fortran) wich starts a Matlab Program. However i created a normal Fortran exe and icluded the Matlab Libary .lib Files an everything worked fine. After i created the Simpack User Routine i've got an error regarding the link of those libary Files. Simpack allows to include external .lib libarys through the User Interface. This is the error i got. "engopen" etc.. are the matlab functions. "Linking CXX shared library user.dll    Creating library user.lib and object user.exp uforce20.f.obj : error LNK2019: unresolved external symbol engopen referenced in function uforce20 uforce20.f.obj : error LNK2019: unresolved external symbol engevalstring referenced in function uforce20 uforce20.f.obj : error LNK2019: unresolved external symbol mxcreatedoublematrix730 referenced in function uforce20 uforce20.f.obj : error LNK2019: unresolved external symbol mxgetpr r...
Confusion about latest downloads
By David White3
I need to download for two machines - one using the embedded version of MSVS, the other using a separate version. Do these two downloads refer to the same release of IVF and tools?  Or are the latest version of the tools only available without MSVS?     Intel® Parallel Studio XE Professional Edition for Fortran Windows* (all tools)     Version 2015 (Update 2)    04 Feb 2015     Intel® Parallel Studio XE Composer Edition for Fortran Windows*     Version 2015 (Update 2 Eng/Jpn)    27 Jan 2015 Thanks, David
Seeing Fewer Compilation Cascades
By Jacob Williams8
Was there any special magic added to v2015 (or later) of the compiler to reduce compilation cascades when the source file for a module is changed?  I'm noticing instances where, when making a minor change to a routine inside a module, all the other modules that use it are not being recompiled.  The module in question is within a library that the main program is using.  The other modules within the library are being recompiled, but the modules in the main program that use it are not.  I'm pretty sure that formerly, all modules that used it would be recompiled.  I wanted to check here first to see if it was a new feature, or something I should be worried about.  (If it's a feature, it's a welcome one. I always thought that if the interface to a subroutine didn't change, then the mod file shouldn't change either. But, that's never how the compiler has behaved for me in the past).
Type Paremeter
By amir_4458
Hi there, I read some numbers, as input to my code, from a text file. I want to set them as Parameter type to make sure their value is not being changed. Would that be possible? Thanks!   
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