Search A-Z index Help
University of Cambridge Home Chemistry Dept Home CUC3 home
University of Cambridge > Department of Chemistry > Theoretical Chemistry > Computer Support

Intel Compiler 8.x

Description

The Intel Fortran compiler 8.x (ifort) is a highly optimizing Fortran 90/95 compiler for Intel CPUs. Code produced by this compiler may also be run on compatible CPUs but Intel do not support this.

Availability

All workstations and clusters

Source

The compiler is downloadable from Intel's web site.

Licence details

This is commercial licence-managed software. However Intel allows students to register for a free single-user single-machine licence. This cannot cover everyone in the sector. We therefore have purchased an academic network licence for the Theory sector. This allows anyone to use the compiler provided the licence server is available and has a free licence. You do not need the licence in order to run the binaries that the compiler produces, only to compile. You may redistribute the binaries produced, and you may also redistribute with them certain runtime libraries from the compiler suite. A full list of redistributable files may be found in the licenses/fredist.txt file in the compiler's install directory.

Instructions for users

If you are using the modules environment then you just need to load the appropriate module. It may be loaded for you already. The name of the compiler program (and of the module) is ifort.

There are usually multiple versions of the compiler installed on any given machine, as Intel release a new one every few weeks. If you use modules you can easily switch between different versions (see the modules documentation). If not, then you need to set things up by hand.

The compiler is installed in one of two places, depending on what kind of machine you're on. Workstations have it in the /usr/local/shared NFS filesystem, and servers have it in /usr/local. Each version is installed in its own directory, usually named intel_fc_version. To set up your environment to use a particular version you need to source the appropriate file from the bin subdirectory of the compiler's install directory. This is ifortvars.sh for bash users and ifortvars.csh for csh users. You will know if you are a csh user. Once the file is sourced you can type ifort and you should get your chosen compiler version.

You should never need to fiddle with the licence settings, because all versions of the compiler use the same licence server, and this is set up by the system login scripts. However for reference, the way to point the compiler at its licence server is to set LM_LICENSE_FILE to be 28518@por.ch.private.cam.ac.uk.

Documentation

The compiler comes with manpages. You may need to load the module to make the manpage available. However most of the documentation is in HTML and PDF form in the doc subdirectory of the compiler's install directory. You will have to use a web browser or PDF reader to view it. A good place to start is the file fcompindex.html.

Admin notes

The Intel compiler comes as RPMs. It also comes with an installer script. You cannot just install the RPMs because the installer script fixes up a few things that the RPMs should do but don't. It also checks that your licence is valid before installing (but has been known to get this completely wrong when using a network licence) and uninstalls the previous version of the compiler. All in all it is better not to use the install script but to read it through and do the various steps by hand. Here's how I do it by hand, but the install script changes every so often so it pays to check what it's doing:

  • Unpack the Intel tarball in a temporary directory, and then select the appropriate compiler RPM. Unpack that with
    # rpm2cpio filename.rpm | cpio -i --make-directories
    
    This unpacks the compiler relative to the current working directory. It usually goes into opt/intel_fc_80. Move the intel_fc_80 directory to /usr/local/intel_fc_version.
  • Edit the ifort, ifc, ifortvars.sh, ifortvars.csh, ifort.cfg, ifc.cfg files in /usr/local/intel_fc_version/bin to have the correct installation directory where they currently have INSTALLDIR.
  • Edit ifc.cfg and ifort.cfg to set rpath for the compiler appropriately, to avoid the need for LD_LIBRARY_PATH.
  • On systems with modules add a test in the ifort and ifc compiler scripts for the MKLPATH environment variable. If it is is set you need to add the MKLPATH to rpath and the appropriate -L option to the compiler command. Also make a module for the new compiler. See the modules documentation.
  • Find the package ID from the compiler install script by grepping it for PACKAGEID. Insert this string into the doc/fsupport file in the appropriate place.

More recently I've changed the way this works. I still edit the .cfg files to set rpath, but in the compiler driver script I now insert this into the compiler command line:

${LIBRARY_PATH:+-Xlinker -rpath -Xlinker $LIBRARY_PATH}
The module that are for libraries should set LIBRARY_PATH and CPATH, so this justs adds the contents of LIBRARY_PATH to the rpath if it's set. CPATH and LIBRARY_PATH are used by the compilers to find includes and libraries at compile/link time. rpath then finds libs at runtime. This system comes in with the SuSE 10.1 workstation image. If it works OK there I'll put it on clusters.

Because it got tedious to do all the above by hand the SuSE 10.1 image has a script that does it: /usr/local/shared/sbin/install-intel-compiler.sh which will fix up both the Fortran and C compiler installs. You still need to unpack the rpms and make a module by hand, although the module files have been written so as to need the minimum of changes between compiler versions.