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

Nessun contenuto trovato

More Tech Articles

Load Balance and Parallel Performance
Di adminPubblicato il 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
Di Antonio Valles (Intel)Pubblicato il 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
Di Steve Lionel (Intel)Pubblicato il 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
Di Seung-Woo Kim (Intel)Pubblicato il 08/25/20091
Workarounds and solutions for the Short Data Section Overflow error condition on IA-64 are discussed.
Iscriversi a Articoli Intel Developer Zone

Supplemental Documentation

Nessun contenuto trovato
Iscriversi a Articoli Intel Developer Zone

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


Random reading of an unformatted file?
Di michaelgreen7
Hi All, I have a large file of geographic information created thus: open(1,file=trim(shapefile),status='replace',form='unformatted',iostat=ios, &    err=1000,recl=128,recordtype='stream') I read the whole file and display its information on screen. The user clicks somewhere on screen and from that I know I have to re-sample a small part of the file starting at some byte N. Is there some Fortran way I can get at that byte number immediately without having to start from the beginning of the file? Many thanks Mike  
Can't access GetMenuInfo function from USER32.f90
Di Russell G.1
  I'm using Intel Visual Fortran 2013, with MSVS 2010.  I want to access the GetMenuInfo function which is in the USER32.f90 library. However I'm not able to access this function.   I've tried to create a minimal test case:   SUBROUTINE updatemenu(hWnd)   USE IFWINTY   USE USER32 IMPLICIT NONE   INTEGER(HANDLE)  :: hWnd   INTEGER(HANDLE)  :: ghMenu   INTEGER(HANDLE)  :: submenu   INTEGER(DWORD)   :: ignor   TYPE(T_MENUINFO) :: minfo   ghMenu  = GetMenu(hWnd)   submenu = GetSubMenu(ghMenu, 1)   ignor   = getMenuInfo(submenu, minfo)       END SUBROUTINE updatemenu  When I attempt to compile this, I get the following error: error #6404: This name does not have a type, and must have an explicit type.   [GETMENUINFO]What's going on here?   Thanks
Unresolved externals
Di Ken W.6
I'm using the 30-day trial of the Intel Visual Studio 2015 with C++ and FORTRAN compilers. I'm evaluating for purchase and need some help please. When trying to build a simple mixed language project with a C++ main calling a FORTRAN subroutine I get LNK2019, unresolved external symbol for "_sqrtf in function _G6".  The code is as follows: --- C++ code --- #included <cstdlib> extern "C" void _cdecl G6(); using namespace std; int main( void ) {     G6();     return 0; } --- FORTRAN code ---        SUBROUTINE G6        IMPLICIT NONE        REAL SUM        REAL ROOTSUM        SUM = 1 + 2.5        ROOTSUM = SQRT(SUM)        END --------------------------------------------- The FORTRAN code is compiled as a static library and linked into the C++ project. Relevant information: 1. When compiled as a Release version the code compiles and executes properly.  When compiled as a Debug version the unresolved error occurs. 2. I think I'm linking in the Intel libraries correctly in the proje...
Pause program to wait for external signal
Di Scott B.4
For a fortran program are there any extensions (or even possible with Fortran standard) that can pause a program during execution and wait for a signal from an external source to resume execution.   My assumption is that the EXECUTE_COMMAND_LINE could work for running a separate program, but I would ideally like to have two separate programs that run in parallel and pause to communicate with each other when there is a needed information exchange. I could do binary files that one program waits for the other to update, but is there any way to send an electronic signal or even pass arrays within memory (RAM) or does that only work with subordinate programs compiled as dll?
Compatibility VS2008 and IMSL7
Di fortrino12
Hello everybody, I'm using intel visual fortran implemented in the visual studio software VS2008 (specifications' details are joined below). My problem is that I need some mathematical functions which are not supported by the MKL library. So I would like to have access to IMSL library. My questions are: 1. Is VS2008 compatible with IMSL7 library? 2. If YES, how can I upload it and install it? Is it free of charge? 3. If NOT, what shall I do? Do I have to upgrade VS version? I can provide, if necessary, my login ID or my serial code. Thank you by advance. ******************************************************************************* Microsoft Visual Studio 2008 Version 9.0.21022.8 RTM Microsoft .NET Framework Version 3.5 SP1 Installed Edition: IDE Standard Intel(R) Visual Fortran Compiler Integration     Package ID: w_cprof_p_11.1.072 Intel(R) Visual Fortran Compiler Integration for Microsoft Visual Studio* 2008, 11.1.3471.2008, Copyright (C) 2002-2010 Intel Corporation ************...
Support for passing internal procedures fails in parallel environment (not thread safe)
Di Andrew Smith2
Fortran 2008 allows passing internal procedures as actual arguments and Intel Fortran supports this. A passed internal procedure can see host data so it makes it easier to write generic functions like a function integrator. In this test the host data is an element of an allocatable array. I passed the host data to my function integrator so that I could compare to see if it was the same data that could be seen by host association. The test shows the data often does not match when using OpenMP. Try a break point on the continue statement. Also note the access violation at the end which I don't understand. module someFairlyOrdinaryCode    implicit none    contains subroutine integrator(k, answer)    use omp_lib    real, intent(in) :: k    real, intent(out) :: answer       !Normally host association would be used to obtain additional data required by f(x)    !Passing k for test purposes    call integrateAnyFunction(f, k, 0.0, 1.0, answer)    contains    real function f(x, kPassedValu...
Optional OpenMP-Directives
Di Benedikt R.3
Hi I want to put OpenMP-directives and OpenACC-directives in one program. In the OpenACC-program some OpenMP-directives shall be ignored (when there is an equivalent OpenACC-directive) but others shall be used (when the code has to run on CPU) In the non-OpenAcc-program all OpenMP-directives shall be used. I tried to opt out OpenMP by a define. The following example is minimalist: #ifndef _OPENACC #define MYOMP !$OMP #else #define MYOMP C #endif PROGRAM MAIN OPTION EXPLICIT INTEGER a(1000),i MYOMP PARALLEL DO DO I=1,1000 a(i) = 0 END DO MYOMP END PARALLEL DO END Compile with ifort 15 on Windows: ifort test.for /openmp /fpp The compiler/preprocessor removes the !$OMP-directive. Obviously its treats as a comment. Any Advice? Benedikt Output of compiler: Intel(R) Visual Fortran Compiler XE for applications running on IA-32, Version 15.0.0.108 Build 20140726 Copyright (C) 1985-2014 Intel Corporation. All rights reserved. test.for(1...
attempt to compare Qparallel vs. Qopenmp compilation (15.0.2)
Di Tim Prince3
I thought I remembered that it used to be possible to compile an OpenMP source file with /Qparallel, omitting /Qopenmp.   Now I get an immediate ICE when I try it.  I don't recall seeing any advice about new procedures needed, e.g. to prevent the compiler from seeing OpenMP specific stuff. I would have kept quiet here and simply submitted it to premier.intel.com if that site were accepting submissions.
Iscriversi a Forum

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


Downcast function result without copy
Di Ferdinand T.19
Problem: A subprogram 'make_child' returns a variable of type 'child' which is an extension of the 'parent' type. 'make_child' itself gets the 'child' from a generic factory, which produces the 'child', but declares it as 'parent' type. (Note: this is not about human genetic engineering, it's a Fortran question...) Question 1 (Fortran Standard): How can 'make_child' downcast the 'parent'-type into the result declared as 'child', without creating a copy (large data!) ? What I tried so far: Sourced allocation within a select-type environment -> no solution (must copy the data & leave the select-type-env. in order to return from 'make_child') move_alloc works in ifort 14.0.3 and ifort 15, but is not standard-conforming (same kind of 'from' and 'to'). Question 2 (Intel): In case I use move_alloc nevertheless (if there is no better answer to Question 1), will this non-conforming code compile and work correctly on all future version with ifort? Code: Here, make_child is a subrout...
OpenMP &amp; Shared derived array
Di criswu2
type :: zmplx2d complex*16,pointer:: val1(:,:),val2(:,:) end type type(zmplx2d),dimension(:),allocatable:: acamats !$omp parallel do private(ilo,jlo,snedges,fnedges, & ies,ief) shared(acamats) & schedule(guided) do j = Levindx(i), Levindx(i+1)-1 ilo = edgeips(2,j) jlo = edgeips(1,j) snedges = igall(jlo+1)-igall(jlo) fnedges = igall(ilo+1)-igall(ilo) ies = igall(jlo) ief = igall(ilo) call farboxInteraction2(snedges,fnedges,acacomps(j), & acamats(j)%val1, & acamats(j)%val2,ztmp1(ief),ztmp2(ies)) enddo I want to parallelize the do-loop using OpenMP.   the result of the codes is not correct.  It seems OpenMP don't support derived types. Anyone knows why and how to solve this problem ?   
Another catastrophic error: **Internal compiler error
Di hiroshi-murakami3
$ ifort -v ifort version 15.0.0 $ ifort -c -fast -openmp test.F90 test.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 test.F90 (code 1)   Note, If you undefine the macro flag "BUG_OCCUR", the compiler error disappears. OS: CentOS-6.x
EOF Question
Di bhvj5
Hi    I was trying to implement the EOF function, in order to read until end of the input file, as DO WHILE (.NOT. EOF(unit number of open file)) It gives the following error: forrtl: severe (24): end-of-file during read, unit 121, Attached herewith is the test code and input file. Any suggestions in this regard would be greatly helpful. Thank you.
source the ifortvars.sh or ifortvars.csh file to properly set the user environment
Di iodine l.2
in the old version like fortran 11.1.046, after the compilers are installed, it is necessary to source the ifortvars.sh or ifortvars.csh file to properly set the user environment to use the Intel compilers. but now I install a new version (Intel® Parallel Studio XE 2015 Professional Edition for Linux) I fail to find out when the ifortvars.sh is, can anybody give me the path of it? the compliers is installed under /opt/intel
Implementing Table Lookup
Di bhvj3
Hi,     Please disregard my previous posts in this regard. Attached herewith is a modified draft program (including the input file) where I have tried to create a subroutine called "fetchvalue" I am having trouble with the driver program, when I am trying to call this subroutine. I am getting an error while compiling saying that the "fetchvalue" hasn't been declared. Any suggestions of pointers in this regard will be greatly helpful. Thank you.  
Limitations on array slice bounds checking
Di Brian1
I recently ran into an issue with assignment of incompatible array sections to an allocatable array that was not caught by the Intel Fortran compiler's bounds checking.  A reduced example is: subroutine sub1(array) implicit none real, intent(inout) :: array(42) real, allocatable :: send(:) allocate(send(1)) send(:) = array(9:10) end subroutine ! subroutine sub2(array) ! implicit none ! ! real, intent(inout) :: array(42) ! real :: send(1) ! ! send(:) = array(9:10) ! end subroutine program bug implicit none real :: array(42) array = 0.0 call sub1(array) ! call sub2(array) end program Subroutines sub1 and sub2 assign an array section of size two into an array section of size one.  Obviously, this is illegal.  The version in sub2, which assigns to an ordinary array, is diagnosed at compile time when bounds checking is on.  The version in sub1, which assigns to an allocatable array, is not caught at compile time or at run time. Is this the expected ...
getarg does not work?
Di vincenzo s.8
Hi, i'm porting some programs from 32 bit linux suse to 64 bit linux suse. in 32 bit  version i use fortran compiler XE 12.0 update 2 for linux in 64 bit version i use XE 13.1 for linux function getarg seems not work in 64 bit version. test.f90:     program test     implicit none     integer*4 ::iarg     character(len=64)::string,string1,string2     iarg = iargc()     write(*,*) iarg     call getarg(1,string )     write(*,*) 'test --- ',string     pause     read(string,*)string1     write(*,*)'string1= ',string1 !     call getarg(2,string)     read(string,*)string2     write(*,*)'string2= ',string2 !     stop ' ok'     end program test ------------------------------------------------------------- ifort -g -c -traceback -noalign -integer-size 16 -double-size 64 -132 -O0 -assume dummy_aliases -assume byterecl -warn noalignments test.f90 ifort -o test.out test.o ------------------------------------------------------------------------ EXEC in 64 bit: ./test.out str1 str2 ...
Iscriversi a Forum