You can use intel compiler(ver 18.0.3) for FORTRAN/C/C++ on OCTOPUS. How to use older version is this.
Compile command
Please be aware that a command name differs according to the language used.
The compiler command for FORTRAN is "ifort", for C is "C", for C++ is "icpc". In the case of using MPI, please add "mpi" to head of the compiler command as mpiifort, mpiicc, mpiicpc.
C | C++ | FORTRAN | |
---|---|---|---|
intel compiler | icc | icpc | ifort |
intelMPI compiler | mpiicc | mpiicpc | mpiifort |
how to use compiler
The following is how to use the compiler. If you use these options below, please specify at [option].
Compilation for serial execution(un-parallelization)
This compilation is very simple and does not parallelize for serial execution.
$ ifort [options] source_file
$ icc [options] source_file
$ icpc [options] source_file
Automatic Parallelization
This is the process whereby the compiler automatically parallelizes the source program, and this is the parallelization for in node(shared-memory parallelization).
$ ifort -parallel [options] source_file
$ icc -parallel [options] source_file
$ icpc -parallel [options] source_file
OpenMP
This is the process whereby the compiler parallelizes by the directive entered into the program, and this is the parallelization for in node. (shared-memory parallelization).
$ ifort -openmp [options] source_file
$ icc -qopenmp [options] source_file
$ icpc -qopenmp [options] source_file
MPI
This is the inter node parallelization by MPI (distributed-memory parallelization).
$ mpiifort [options] source_file
$ mpiicc [options] source_file
$ mpiicpc [options] source_file
MPI and Automatic Parallelization
This is hybrid parallelization. Parallelize inter node by MPI and in addition parallelize in node by automatic parallelization (distributed-memory parallelization and shared-memory parallelization).
$ mpiifort -parallel [options] source_file
$ mpiicc -parallel [options] source_file
$ mpiicpc -parallel [options] source_file
MPI and OpenMP
This is hybrid parallelization. Parallelize inter node by MPI and in addition parallelize in node by OpenMP (distributed-memory parallelization and shared-memory parallelization).
$ mpiifort -openmp [options] source_file
$ mpiicc -qopenmp [options] source_file
$ mpiicpc -qopenmp [options] source_file
Recommend options(* a example of this section is for FORTRAN)
for users running a program first time
- intel compiler optimeze a program on generally level.
$ ifort -O2 source_file
for optimizing a program that user confirmed to ran successfully already
- a program may speed up. In the case, you must check if a result of your program with -O3 option is accurate. By case, your program may slow.
$ ifort -O3 source_file
optimization for CPU nodes
If you chenge from -O2 to -O3, your program may speed up. In the case, you must check if a result of your protram with -O3 option is accurate.
generating AVX-512 foundation instruction and avoidding zmm registers
$ ifort -O2 -xCORE-AVX512 -qopt-zmm-usage=low source_file
generating AVX-512 foundation instruction and using zmm registers without restrictions
$ ifort -O2 -xCORE-AVX512 -qopt-zmm-usage=high source_file
generating AVX-2 foundation instruction and optimizing for skylake processor
$ ifort -O2 -xCORE-AVX2 -mtune=skylake-avx512 source_file
optimization for Xeon Phi
If you chenge from -O2 to -O3, your program may speed up. In the case, you must check if a result of your protram with -O3 option is accurate.
generating intel AVX-512 foundation instructions for MIC
$ ifort -O2 -xMIC-AVX512 source_file
for debug
$ ifort -g -traceback source_file
# outputting informationes for debug and tracebug
$ ifort -check uninit -check bounds source_file
#(checking on runtime whether occurring for uninitialized variables and for array subscript and character substring expressions.)
How to use older version
Intel compilers listed below are available on OCTOPUS.
Execute the following commands before the "ifort", "icc", and "icpc" commands.
version | command |
14.0.2 | source /octfs/apl/Intel/psxece2013u1/bin/ifortvars.sh intel64 source /octfs/apl/Intel/psxece2013u/impi/4.1.3.048/bin64/mpivars.sh |
15.0.1 | source /octfs/apl/Intel/psxece2015u1/bin/ifortvars.sh intel64 source /octfs/apl/Intel/psxece2015u1/impi/5.0.2.044/bin64/mpivars.sh |
17.0.5 | source /octfs/apl/Intel/psxece2017u5/compilers_and_libraries_2017.5.239/linux/bin/ifortvars.sh intel64 source /octfs/apl/Intel/psxece2017u5/compilers_and_libraries_2017.5.239/linux/mpi/bin64/mpivars.sh |
18.0.3 | source /octfs/apl/Intel/psxece2018u3/compilers_and_libraries_2018.3.222/linux/bin/ifortvars.sh intel64 source /octfs/apl/Intel/psxece2018u3/compilers_and_libraries_2018.3.222/linux/mpi/bin64/mpivars.sh |
19.0.5.281 | source /octfs/apl/Intel/psxece2019u5/compilers_and_libraries_2019.5.281/linux/bin/ifortvars.sh intel64 source /octfs/apl/Intel/psxece2019u5/compilers_and_libraries_2019.5.281/linux/mpi/intel64/bin/mpivars.sh |
19.1.0.166 (デフォルト) |
source /octfs/apl/Intel/psxece2020/compilers_and_libraries_2020.0.166/linux/bin/ifortvars.sh intel64 source /octfs/apl/Intel/psxece2020/compilers_and_libraries_2020.0.166/linux/mpi/intel64/bin/mpivars.sh |
Manual
Please see the following page for a manual of intel compiler.
intel compiler manual