Development environment

The development environment on SCW is designed to maximise the usage of the system. We have a number of compilers and development libraries available.

Compilers

Compilers are available in the module system and can be accessed like any other module.

$ module load compiler/intel/2018

This will load the Intel compilers ifort, icc, icpc.

Suggestions for compiler flags are:

-xHost : maximise optimisation for CPU being compiled on
-xCORE-AVX512 : tune just for AVX-512 processors such as Skylake on SCW.
-axCORE-AVX2,CORE-AVX512 : compile for multiple architectures and tune for each processor.

Other compilers are available, please check using
$ module av compiler

For certain features there is a dependency between Intel Compiler and the currently available GCC (GNU Compiler Collection) compiler in the environment. For example, this is could be due to Intel C++ compiler using the GCC C++ library to maintain compatibility between Intel compiled C++ code and GCC. Therefore if newer features in C++ are required (maybe an updated standard) then you need to load a compatible GCC version with the required C++ standard supported. At time of writing Intel Compilers support GCC between version 4.3 and 6.3.

To load a GCC compiler to use with Intel compiler just load the GCC module first.

$ module load compiler/gnu/5
$ module load compiler/intel/2018

MPI

MPI libraries can be loaded using for example

$ module load mpi/intel/2018

This will provide the mpif90, mpicc and mpic++ (and Intel versions mpiifort, mpiicc, mpiicpc)

Be careful about using OpenMP and MPI together. Recent versions of Intel MPI library now use the multi-threaded libraries by default but depending on MPI implementation you might need to check what you want. Threading behaviour changes the response from MPI_Init_Thread.

Other MPI libraries are available, please check using

$ module av mpi

CUDA

To maximise the use of the NVIDIA GPU nodes available in SCW we can use the CUDA library. This can be loaded using

$ module load CUDA

The NVIDIA compiler is then added to your PATH and you can compile using nvcc.

Other tools

There are a number of tools available and others planned to follow. Please get in touch if specific help is required.