Intel Compiler

Version System A System B System C Notes
2021.3.0 + + Installed in September, 2021
2021.1.1 + + Installed in March, 2021
19.1.3 + + Installed in March, 2021
19.1.2 + + + Installed in September, 2020
19.1.0 + + + Installed in March, 2020
19.0.5 + + + Installed in October, 2019
19.0.3 + + + Installed in March, 2019
18.0.5 +(default) +(default) +(default) Installed in March, 2019
18.0.3 + + + Installed in October, 2018
18.0.2 + + + Installed in March, 2018
18.0.0 + + + Installed in October, 2017
17.0.6 + + + Installed in March, 2018
17.0.5 + + + Installed in October, 2017
17.0.2 + + + Installed in March, 2017
17.0.1 + + + Installed in November, 2016
16.0.4 + + Installed in December, 2016
16.0.3 + Installed in October, 2016
15.0.7 + Installed in April, 2016

+ : Available for all users.
– : Not available for use

Version Modulefile Name
2021.3.0 intel/2021.3.0
2021.1.1 intel/2021.1.1
19.1.3 intel/19.1.3.304
19.1.2 intel/19.1.2.254
19.1.0 intel/19.1.0.166
19.0.5 intel/19.0.5.281
19.0.3 intel/19.0.3.199
18.0.5 intel/18.0.5.274
18.0.3 intel/18.0.3.222
18.0.2 intel/18.0.2.256
18.0.0 intel/18.0.0.128
17.0.6 intel/17.0.6.199
17.0.5 intel/17.0.5.239
17.0.2 intel/17.0.2.174
17.0.1 intel/17.0.1.132
16.0.4 intel/16.0.4.258
16.0.3 intel/16.0.3.210
15.0.7 intel/15.0.7.235

When logging in to the System A, Cray Compiler is set as default. Thus, switch the compiler to the Intel Compiler using the following module command:

$ module switch PrgEnv-cray PrgEnv-intel

When logging in to the System B, C, Intel Compiler is set as default.

$ module list
Currently Loaded Modulefiles:  
 x) intel/13.1.3   x) PrgEnv-intel/1.0

The default version of Intel Compiler is as listed above.
To switch the version of Intel Compiler to another, execute the module command with the PrgEnv-cray loaded as below:

$ module switch intel/13.1.3 intel/12.1.6

To automatically execute a command when logging in to the System, specify such command in the login shell startup-file by following Setting Up System.
For details on the module command, see Modules.

  • The System A

    Language Command Operands
    Fortran ftn ftn [sequence_of_options] sequence_of_files
    C cc cc [sequence_of_options] sequence_of_files
    C++ CC CC [sequence_of_options] sequence_of_files
  • The System B and C

    Language Command Operands
    Fortran ifort $ ifort [sequence_of_options] sequence_of_files
    C icc $ icc [sequence_of_options] sequence_of_files
    C++ icpc $ icpc [sequence_of_options] sequence_of_files

  • Main options (e.g., parallelization, optimization)

    Option Purpose
    -o FILENAME Specifies the name of the object file.
    -mcmodel=medium Supports more than 2 GB memory. (for System A and E)
    -shared-intel Supports more than 2 GB memory. (for System B and C)
    -fpic Creates non location-relative code.
    -qopenmp Enables compiler recognition of OpenMP directives.
    NOTE: the option -openmp is to be unavailable.
    -parallel Enables autothreading.
    -O0/-O1/-O2/-O3 Performs general optimization at four levels. (The default is 2.)
    -fast Optimizes to maximize the speed of programs. The -fast option adds the following options (e.g. ver.17):
    -ipo, -O3, -no-prec-div, -static, -fp-model fast=2 -xHost
    NOTE: on system A, -xHOST overrides AVX512 with lower efficient AVX2, so specify -fast -xMIC-AVX512
    -xHost Generates the code corresponded to the most significant instruction set which available in a processor. NOTE: on system A, this option is not be recommended as -xHOST overrides AVX512 with lower efficient AVX2.
    -xmic-avx512/-xavx2/-xavx/-xsse4.2/-xsse3 IntelGenerates the optimized code corresponded to the specified instruction set, for Intel processor. ( -xmic-avx512 is available only on system A)
    -ip Optimizes the process between subroutines in a single file.
    -ipo Optimizes the process between subroutines in multiple files.
    -qopt-report Displays all information of optimizations.
    NOTE: the option -opt-report is to be unavailable.
    -qopt-report -qopt-report-phase=par Displays the information of autothreadings.
    NOTE: the option -par-report is no longer available from ver.16.
    -qopt-report -qopt-report-phase=vec Displays the information of vectorizations.
    NOTE: the option -par-report is no longer available from ver.16.
  • Fortran language options

    Option Purpose
    -nofree Specifies that Fortran source programs are written in fixed source form.
    -free Specifies that Fortran source programs are written in free source form.
    -std Generates messages when nonstandard usage of Fortran is encountered.
    -warn declarations Warns of the IMPLICIT type statement.
    -warn all Displays all warning messages.
    -CB Performs bounds checking.
    -CU Detects uninitialized variables.
    -C Performs run-time diagnostics.
    -convert big_endian Supports the big-endian file.
  • Options only for System A

    Option Purpose
    -dynamic Links dynamic libraries rather than static libraries

When using the Intel compiler in the System A, the -xmic-avx512 option will be added by default. If using the other -x options, a warning about overriding will be issued (not affect compilation).

When you compile a program using more than 2GB memory, specify options in the following.

System Option
A -mcmodel=medium -shared-intel -fpic -dynamic
B,C -mcmodel=medium -shared-intel.

$ ftn test.f90  # For Fortran
$ cc test.c      # For C
$ CC test.cpp   # For C++
$ tssrun ./a.out  # Execution

$ ifort test.f90  # For Fortran
$ icc test.c      # For C
$ icpc test.cpp   # For C++
$ tssrun ./a.out  # Execution

We describe examples for system B hereafter. To use these examples on other system, read compilation commands (e.g. ifort) with appropriate ones.

$ ifort -parallel test.f90
$ tssrun -A p=1:t=4:c=4 ./a.out # The number of parallels = 4

$ icc -openmp test.c
$ tssrun -A p=1:t=8:c=8 ./a.out # The number of parallels = 8

Intel Fortran compiler outputs messages, that indicate important information or programming error, in the format below.

File name (Line number) : XXX #YYY: Message body
Details of the relevant line in source code
--------------^
  • XXX : Type of message(error/warning)
  • YYY : Message serial number
  • Pointer(―-^) : The exact point of that an error was found at the relevant line in source code.

sample.f90(26): error #5560: Subscript #2 of the array C has value 20 which is greater than the upper bound of 2
  print *, c(1,1),",", c(1,20)
-----------------------^
compilation aborted for sample.f90 (code 1)

Intel C/C++ compiler outputs messages in the following format when indicating important information or programming errors:
bc. File name (Line number) : XXX #YYY: Message body
Details of the relevant line in source code ^

  • XXX : Type of message(error/warning)
  • YYY : Message serial number
  • Pointer(^) : The exact point of that an error was found at the relevant line in source code.

sample.c(27): warning #175: subscript out of range
    printf(" %d , %d\n",c[1][0],c[1][10]);
                                    ^

  • Q-1: The following error message appears when compiling a program.

    sample.f90:(.text+0x43f): relocation truncated to fit: R_X86_64_32S against `.bss'
    sample.f90:(.text+0x448): additional relocation overflows omitted from the output
  • A-1: This message indicates that the memory usage of the program may exceed 2GB. When compiling, specify the -mcmodel=medium -shared-intel -fpic -dynamic option in the System A, D and E, or specify the -mcmodel=medium -shared-intel option in the System B and C.

Cray MPI library is available in the System A and E, and Intel MPI library is available in the System B and C. How to compile, link, and run MPI programs, see Cray MPI Library or Intel MPI Library.

System Library
A Cray MPI Library
B and C Intel MPI Library

The following numerical libraries are available when using Intel compiler. For details on how to use each library, see each page of the libraries.

Library System A System B and C
Cray LibSci Library + +
Intel Math Kernel Library + +
NAG Library AU
IMSL Library AU

+ : Available for all users.
AU : Available for academic users only.
― : Not available for use.

When you perform a parallel processing with Intel Compiler, the binding of threads to CPU cores is controlled using the “KMP_AFFINITY” environment variable that automatically defines when executing jobs.
When you use Hyper-Threading(in preparation) in the System B, Intel Compiler binds threads to virtual cores.

For details of environment variables, see Intel compiler manual.

(In ordinary usage)
 KMP_AFFINITY="compact,1"
(In occupying nodes by adjusting the amount of memory per process)
 KMP_AFFINITY="scatter,1"
(In hyper-threading)
 KMP_AFFINITY="compact,0"


Copyright © Academic Center for Computing and Media Studies, Kyoto University, All Rights Reserved.