Intel C++ Compilers

Overview

The Intel Compilers are highly optimizing Fortran, C and C++ compilers that are suitable for both Intel and AMD processors. They include features such as OpenMP and auto vectorisation which allow programmers to easily take advantage of modern, multi-core processors. The compilers are supplied with the Intel Math Kernel Libraries which are highly optimized versions of the BLAS and LAPACK linear algebra libraries.

Restrictions on use/License information

The University has a license for the Intel compiler suite. The Intel compilers are available to any student or member of staff of the University of Manchester for the purpose of the normal business of the University. Such use includes research, personal development and administration and management of the university. The software may not be used for research, consultancy or services leading to commercial exploitation of the software.

Versions installed

Intel compiler version HTCondor ClassAd
11.1 HAS_INTEL_11_1
15.0.3 HAS_INTEL_15_0

Set up procedure on submit node

You will need to load the module file for the version of the Intel compilers you wish to use whenever you want to compile code or run executables you’ve compiled. To load the module file:

module load intel_compilers/11.1.075

or

module load intel_compilers/15.0.3

Running the application

Running programs compiled using the Intel compiler suite is simply a matter of submitting the job file with a suitable submit file.

Universe = vanilla

Requirements = (Target.Opsys == "LINUX" && Target.Arch == "X86_64" && <HTCondor ClassAd>=?=True)
Request_Memory = 1000

Log = intel.log
Output = intel.out
Error = intel.error
Notification = Error

Should_Transfer_Files = Yes
When_To_Transfer_Output = On_Exit

Executable = <intel_executable>
Transfer_Executable = True
Transfer_Input_Files = <optional input files>

Queue

If your submit file is called submit.txt then your job can be submitted to HTCondor using the command condor_submit submit.txt.

AVX vectorisation

A significant number of the compute nodes in Condor use either the Intel Sandybridge or the Intel Ivybridge architecture, both of which support the AVX instruction set. This allows your code to make use of the 256-bit wide floating-point vector instructions supported by the Intel hardware.

The Haswell and Broadwell nodes support the AVX2 vector instructions. These promote the 128-bit wide integer vector instructions found in AVX hardware to 256-bit wide integer instructions.

Compiling your code to take advantage of AVX vectorisation

If your code is Fortran, C or C++, you can ask the Intel Compilers to attempt to take advantage of AVX (or AVX2/AVX512) using the following compiler flags:

-msse4.2 -axCORE-AVX2,AVX

The -ax flag instructs the compiler to generate multiple, processor-specific auto-dispatch code paths if there is a benefit to doing so. The code will be compiled in to a single executable.

The Condor pool is made up of many different machines and not all of them support AVX vectorisation. Those that do contain the Condor class-ad HAS_AVX so, if you want to only target AVX capable machines, add this to the list of requirements in your condor-submit script.

Sample Intel compiler suite HTCondor jobs

  1. C++ code for printing “Hello World”, the current working directory and the GNU compiler version.
  2. C, C++ and Fortran codes for calculating Pi using n terms of the Gregory series.

Last modified on February 21, 2025 at 11:59 am by Chris Paul