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 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 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
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.
There are a number of tools available and others planned to follow. Please get in touch if specific help is required.