Compilers and Libraries
Describes how to use the compiler and libraries on a Large-Scale Parallel Computing Server.
Compiler
Following compilers are available on the supercomputer.
Compiler | Version | Notes |
---|---|---|
Cray Compiler Fortran/C/C++ | 8.7.10 8.6.5 | default: 8.6.5 |
Intel Compiler Fortran/C/C++ | 19.1.3.304 19.1.0.166 19.0.2.187 18.0.2.199 17.0.4.196 | default: 18.0.2.199 |
PGI Compiler Fortran/C/C++ | 19.1-0 18.5-0 | default: 19.1-0 |
GNU Compiler Fortran/C/C++ | 4.9.3 5.3.0 6.1.0 7.3.0 8.3.0 | default: 7.3.0 |
Programming environment
Command
The command names of the Fortran, C, C ++ compiler are unified to ftn, cc, and CC.
The compiler called by the command will switch automatically by switching the programming environment.
Compiler | Command | Cray Compiler | Intel Compiler | PGI Compiler | gnu compiler |
---|---|---|---|---|---|
Fortran | ftn | crayftn | ifort | pgf90 | gfortran |
C | cc | craycc | icc | pgcc | gcc |
C++ | CC | crayCC | icpc | pgc++ | g++ |
Important
Use ftn, cc, CC command in the case compiling MPI programs.MPI libraries are linked automatically.
Switching programming environment
The module files is as follows.
Cray compiler | Intel compiler | PGI compiler | gnu compiler |
---|---|---|---|
PrgEnv-cray | PrgEnv-Intel | PrgEnv-pgi | PrgEnv-gnu |
Switch the programming environment with the module switch command.
PrgEnv-cray is default.
To switch to the Intel compiler, execute as follows.
$ module switch PrgEnv-cray PrgEnv-intel
Common options
The following options are common to all programming environments.
Option | Description |
---|---|
-craype-verbose | Display set options. |
-static | Set static linking. |
-dynamic | Set dynamic linking. |
-shared | Make shared library. |
-help | Display available options in the loaded programming environment. |
Cray Compiler
Setting of program environment
Cray compiler is the default one on super.
If you want to change the compiling environment to other, execute a following command.
・Example change to the environment of Intel compiler.
$ module switch PrgEnv-intel PrgEnv-cray
If you want to change the compiler version, execute a following command.
・Example change the compiler version
$ module avail cce cce/8.6.5(default) cce/8.7.10 $ module switch cce cce/8.7.10
Compile Options
・Optimization Options
Option | Description |
---|---|
-o outfile | Set output file. If ‘-o’ option is not specified, the default output file is a.out. |
-llibrary_name | Specify libraries to be linked. |
-Llibrary_path | Specify paths to be searched for the libraries. |
-h autothread | Enables auto threading (default: disabled) |
-h omp/noomp | Enable / disables OpenMP directives. (default: enabled) |
-h thread[0-3] | Specify optimization level of OpenMP (3:Full optimization, default is 2) |
-O [0-3] | Specify automatic threading level. (3:Highest level, default is 2) |
-h ipa[0-5] | Specify the level of interprocedural optimization. |
・Options for Fortran
Option | Description |
---|---|
-e0 | Initialize undefined local stack variables to 0. |
-ev | Assign variables to stack (There are exceptions.) |
-ez | Initialize the memory allocated by allocate() statements to zero. |
-f [free|fixed] | Set the format of source files. |
・Options for C
Option | Description |
---|---|
-h c99 | Compile with C99 standard manner. |
-h noc99 | Compile without C99 standard manner. |
-h zero | Initialize undefined local stack variables to 0. |
・Debugging options
Option | Description |
---|---|
-g | Output debugging information. |
-G [0-2] | Manage debugging information. (0: Most detailed. -G0=-g) |
-K trap=… | Trap exception handling. [fp | divz | denorm | ... ] |
Example
・Make the execution module ’hello.out’ from the Fortran source file ’hello.f.’ in fixed form.
$ ftn -f fixed -o hello.out hello.f
・Make the execution module ’hello.out’ from the Fortran source file ‘hello.f90’ in free form.
$ ftn -f free -o hello.out hello.f90
・Make the execution module 'hello.out' auto-threaded from the Fortran source file 'hello.f' in fixed form.
$ ftn -h autothread -f fixed -o hello.out hello.f
・Make the execution module 'hello.out' auto-threaded from the Fortran source file 'hello.f90' in free form.
$ ftn -h autothread -f free -o hello.out hello.f90
・Make the execution module 'hello.out' from the C source file 'hello.c'.
$ cc hello.c -o hello.out
・Make the execution module 'hello.out' auto-threaded from the C source file 'hello.c'.
$ cc -h autothread hello.c -o hello.out
・Make the execution module 'hello.out' from the C++ source file 'hello.cpp'.
$ CC hello.cpp -o hello.out
・Make the execution module 'hello.out' auto-threaded from the C++ source file 'hello.cpp'.
$ CC -h autothread hello.cpp -o hello.out
Intel Compiler
Setting of program environment
Change the program environment by the following line, because Cray compiler is default on super.
・Example change to the environment of Intel compiler.
$ module switch PrgEnv-cray PrgEnv-intel
If you want to change the compiler version, execute a following command.
・Example change the compiler version
$ module avail intel intel/17.0.4.196 intel/18.0.2.199(default) intel/19.0.2.187 intel/19.1.0.166 $ module switch intel intel/19.0.2.187
Compile Options
・Optimization options and others
Option | Description |
---|---|
-o outfile | Set output file. If ‘-o’ option is not specified, the default output file is a.out. |
-llibrary_name | Specify libraries to be linked. |
-Llibrary_path | Specify paths to be searched for the libraries. |
-O0|-O1|-O2|-O3 | Set optimizing options. -O2 is default. |
-fast | Set the whole program execution speed maximum. The following options are set automatically. -ipo、-O3、-no-prec-div、-static、-fp-model fast=2、-xHost |
-parallel | Compile the input source file enabling auto-threading. |
-openmp | Compile the input source file enabling OpenMP. |
・Options for Fortran
Option | Description |
---|---|
-free|-fixed | Set the format of source files. |
・Debugging Options
Option | Description |
---|---|
-g | Output debugging information. |
-traceback | Output traceback when an error occurs. |
-fpe[0-3] | Trap exception handling. (-fpe0 is most detailed) |
Example
・Make the execution module 'hello.out' from Fortran source file 'hello.f' in fixed form.
$ ftn -fixed -o hello.out hello.f
・Make the execution module ’hello.out’ from the Fortran source file ‘hello.f90’ in free form.
$ ftn -free -o hello.out hello.f90
・Make the execution module 'hello.out' auto-threaded from the Fortran source file 'hello.f' in free form.
$ ftn -fixed -parallel -o hello.out hello.f
・Make the execution module 'hello.out' auto-threaded from the Fortran source file 'hello.f90' in free form.
$ ftn -free -parallel -o hello.out hello.f90
・Make the execution module 'hello.out' from C source file 'hello.c'.
$ cc -o hello.out hello.c
・Make the execution module 'hello.out' auto-threaded from C source file 'hello.c'.
$ cc -parallel -o hello.out hello.c
・Make the execution module 'hello.out' from the C++ source file 'hello.cpp'.
$ CC -o hello.out hello.cpp
・Make the execution module 'hello.out' auto-threaded from the C++ source file 'hello.cpp'.
$ CC -parallel -o hello.out hello.cpp
PGI Compiler
Setting of program environment
Change the environment by the following line, because Cray compiler is default on super.
・Example change from environment of Cray compiler
$ module switch PrgEnv-cray PrgEnv-pgi
If you want to change the compiler version, execute a following command.
・Example change the compiler version
$ module avail pgi pgi/18.5 pgi/19.1(default) $ module switch pgi pgi/18.5
Compile Options
・Optimization Options and Others
Option | Description |
---|---|
-o outfile | Set output file. If ‘-o’ option is not specified, the default output file is a.out. |
-llibrary_name | Specify libraries to be linked. |
-Llibrary_path | Specify paths to be searched for the libraries. |
-O0|-O1|-O2|-O3|-O4 | Set optimizing options. -O2 is default. |
-fast | Enable general optimization flag. |
-Mconcur | Compile the input source file enabling auto threading. |
-mp | Compile the input source file enabling OpenMP. |
・Option for Fortran
Option | Description |
---|---|
-Mfree|-Mfixed | Set Specify program format of free or fixed. |
・Debugging options
Option | Description |
---|---|
-g|-gopt | Output debugging information. |
Example
・make the execution module 'hello.out' from the Fortran source file 'hello.f' in fixed form.
$ ftn -Mfixed -o hello.out hello.f
・make the execution module 'hello.out' which is autothreaded from the Fortran source file 'hello.f' in fixed form.
$ ftn -Mfixed -Mconcur -o hello.out hello.f
・make the execution module 'hello.out' using OpenMP from the Fortran source file 'hello.f' in fixed form.
$ ftn -mp -Mfixed -o hello.out hello.f
・Make the execution module ’hello.out’ from the Fortran source file ‘hello.f90’ in free form.
$ ftn -Mfree -o hello.out hello.f90
・Make the execution module 'hello.out' auto threaded from the Fortran source file 'hello.f90' in free form.
$ ftn -Mfree -Mconcur -o hello.out hello.f90
・Make the execution module 'hello.out' using OpenMP from the Fortran source file 'hello.f90' in free form.
$ ftn -mp -Mfree -o hello.out hello.f90
・Make the execution module 'hello.out' from C source file 'hello.c'.
$ cc -o hello.out hello.c
・Make the execution module 'hello.out' which is auto-threaded from C source file 'hello.c'.
$ cc -Mconcur -o hello.out hello.c
・Make the execution module 'hello.out' using OpenMP from C source file 'hello.c'.
$ cc -mp -o hello.out hello.c
・Make the execution module 'hello.out' from the C++ source file 'hello.cpp'
$ CC -o hello.out hello.cpp
・Make the execution module 'hello.out' auto threaded from the C++ source file 'hello.cpp'.
$ CC -Mconcur -o hello.out hello.cpp
・Make the execution module 'hello.out' using OpenMP from the C++ source file 'hello.cpp'.
$ CC -mp -o hello.out hello.cpp
GNU Compiler
Setting of program environment
Change the program environment by the following line, because Cray compiler is default on super.
・Example change to the environment of Intel compiler.
$ module switch PrgEnv-cray PrgEnv-gnu
If you want to change the compiler version, execute a following command.
・Example change the compiler version
$ module avail gcc gcc/4.9.3 gcc/5.3.0 gcc/6.1.0 gcc/7.3.0(default) gcc/8.3.0 $ module switch gcc gcc/8.3.0
Compile Options
・Optimization options and others
Option | Description |
---|---|
-o outfile | Set output file. If ‘-o’ option is not specified, the default output file is a.out. |
-llibrary_name | Specify libraries to be linked. |
-Llibrary_path | Specify paths to be searched for the libraries. |
-O0|-O1|-O2|-O3|-O4 | Set optimizing options. -O2 is default. |
-fopenmp | Compile the input source file enabling OpenMP. |
・Options for Fortran
Option | Description |
---|---|
-ffree-form|-ffixed-form | Set the format of source files. |
・Debugging options
Option | Description |
---|---|
-g | Output debugging information. |
-g0|-g1|-g2|-g3 | Manage debugging information.(-g2 = -g) |
Example
・Make the execution module 'hello.out' from Fortran source file 'hello.f' in fixed form.
$ ftn -ffixed-form -o hello.out hello.f
・Make the execution module ’hello.out’ from the Fortran source file ‘hello.f90’ in free form.
$ ftn -ffree-form -o hello.out hello.f90
・Make the execution module 'hello.out' from C source file 'hello.c'.
$ cc -o hello.out hello.c
・Make the execution module 'hello.out' from the C++ source file 'hello.cpp'.
$ CC -o hello.out hello.cpp
Libraries
Following libraries are available for compiling and linking.
Library | Version | Compiler |
---|---|---|
CSML(Cray Scientific and Math Libraries) | 19.05.5 18.03.1 | all compilers |
Intel MKL (Intel Math Kernel Library) | 19.1.3.304 19.1.0.166 19.0.2.187 18.0.2.199 17.0.4.196 | Intel compiler |
Third Party Products | - | all compilers |
CSML(Cray Scientific and Math Libraries)
CSML (Cray Scientific and Math Libraries) is a set of libraries provide by Cray.
Following libraries are available.
Library | Description | Included libraries | Module | Option |
---|---|---|---|---|
Cray LibSci | Scientific library optimized for XC50 system Default | BLAS, LAPACK, BLACS, ScaLAPCK, IRT, etc | cray-libsci | |
Cray PETSc(Portable, Extensible Toolkit for Scientific Computation) | Linear / nonlinear equation parallel solver library | MUMPS, SuperLU, SuperLU_dist, ParMETIS, HYPRE, etc | cray-petsc | |
Cray Trilinos Packages | Object-oriented interface of scientific library Load cray-petsc in advance. | PETSc, Metis/ParMetis, SuperLU, Aztec, BLAS, LAPACK | cray-trilinos | |
TPSL(Third Party Scientific Libraries) | Math library available with PETSc/Trilinos | MUMPS, Super_LU, Super_LU_dist, ParMetis, Hypre, Sumdials, Scotch, etc | cray-tpsl | |
FFTW3.3 Library | FFTW version 3.3 | FFTW3.3 | cray-fftw | -lfftw3 (MPI parallel) -lfftw3_mpi (thread parallel) -lfftw3_threads |
FFTW2.1 Library | FFTW version2.1 Library name depends on single precision and double precision. | FFTW2.1 | fftw | (single precision) -lsrfftw_mpi -lsfftw_mpi -lsrfftw -lsfftw (double precision) -ldrfftw_mpi -ldfftw_mpi -ldrfftw -ldfftw |
Setting of program environment
Change the program environment by the following line, because Cray compiler is default on super.
・Example change to environment of Intel compiler.
$ module switch PrgEnv-cray PrgEnv-intel
Example
・ex1: Using FFTW 3.3 Library from MPI parallel program with Cray compiler
$ module load cray-fftw $ cc main.c -L${FFTW_DIR} -lfftw3_mpi -lfftw3
・ex2: Using FFTW 3.3 Library from MPI and thread parallel program with Intel compiler
$ module switch PrgEnv-cray PrgEnv-intel $ module load cray-fftw $ cc -qopenmp main.c -L${FFTW_DIR} -lfftw3_mpi -lfftw3_threads -lfftw3
・ex3: Using FFTW 2.1 Library with single precision
$ module load fftw $ cc main.c -lsrfftw_mpi -lsfftw_mpi -lsrfftw -lsfftw
・ex4: Using FFTW 2.1 Library with double precision
$ module load fftw $ cc main.c -ldrfftw_mpi -ldfftw_mpi -ldrfftw -ldfftw
Intel MKL
Intel MKL (Intel Math Kernel Library) contains BLAS, LAPACK, SparseBLAS, PARDISO, Iterative Sparse Solver, FFT, random number generation and so on.
Setting of program environment
In order to use Intel MKL, it is necessary to load the Intel program environment(PrgEnv-intel) and unload the Cray-libsci to avoid contention.
・Example change from environment of Intel compiler.
$ module switch PrgEnv-cray PrgEnv-intel $ module unload cray-libsci
Example
・Make the execution module 'hello.out' from the Fortran source file 'hello.f' using BLAS in fixed form.
$ ftn -mkl -o hello.out -fixed hello.f
・Make the execution module 'hello.out' from C source file 'hello.c' using BLAS.
$ cc -mkl -o hello.out hello.c
Third Party Products
The following libraries are available.
Library | Module | Note |
---|---|---|
NetCDF(Unidata’s Network Common Data Format) Library | cray-netcdf | serial version |
cray-parallel-netcdf | parallel version | |
HDF5(Hierarchical Data Format 5) Libraries & Utilities | cray-hdf5 | serial version |
cray-hdf5-parallel | parallel version |