Modules

Modules

Software on IDUN is installed using the Easybuild software installation tool. Easybuild is configured to use the Lmod modules tool to change the environment via modulefiles. The module naming scheme is chosen to give a hierarchically organized modules setup. This means when logging into IDUN listing the available modules will show the ‘Core’ modules including the compilers and in addition software packages not dependent on any other installed software (e.g. Matlab):

$ module available

---------------------------------------- /share/apps/modules/all/Core -----------------------------------------
   FLUENT/18.0       GCC/5.4.0-2.26 (L)    Java/1.8.0_92    foss/2016a    foss/2017a (D)
   GCC/4.9.3-2.25    GCC/6.3.0-2.27 (D)    MATLAB/2016b     foss/2016b

Default modules, i.e. modules that will be loaded if no version number is specified, is marked (D). To see software built with a specific compiler, load the compiler module and again list available modules, e.g.:

$ module load GCC/5.4.0-2.26
$ module available

------------------------------ /share/apps/modules/all/Compiler/GCC/5.4.0-2.26 --------------------------------
   CMake/3.5.2 (D)    GSL/2.3    METIS/5.1.0    OpenBLAS/0.2.18-LAPACK-3.6.1    OpenMPI/1.10.3 (L)
 
---------------------------------------- /share/apps/modules/all/Core -----------------------------------------
   FLUENT/18.0       GCC/5.4.0-2.26 (L)    Java/1.8.0_92    foss/2016a    foss/2017a (D)
   GCC/4.9.3-2.25    GCC/6.3.0-2.27 (D)    MATLAB/2016b     foss/2016b


Loaded modules are marked (L). As a third step, load the OpenMPI module to see software built with the specific compiler and MPI versions:

$ module load OpenMPI/1.10.3
$ module available

-------------------------- /share/apps/modules/all/MPI/GCC/5.4.0-2.26/OpenMPI/1.10.3 --------------------------
   Boost/1.63.0-Python-2.7.12    HDF5/1.8.17     ParMETIS/4.0.3    ScaLAPACK/2.0.2-OpenBLAS-0.2.18-LAPACK-3.6.1
   FFTW/3.3.4                    Hypre/2.11.1    Python/2.7.12     h5py/2.6.0-Python-2.7.12-HDF5-1.8.17
   GDAL/2.1.0                    PROJ/4.9.2      R/3.3.1           etc.

------------------------------ /share/apps/modules/all/Compiler/GCC/5.4.0-2.26 --------------------------------
   CMake/3.5.2 (D)    GSL/2.3    METIS/5.1.0    OpenBLAS/0.2.18-LAPACK-3.6.1    OpenMPI/1.10.3 (L)

---------------------------------------- /share/apps/modules/all/Core -----------------------------------------
   FLUENT/18.0       GCC/5.4.0-2.26 (L)    Java/1.8.0_92    foss/2016a    foss/2017a (D)
   GCC/4.9.3-2.25    GCC/6.3.0-2.27 (D)    MATLAB/2016b     foss/2016b

EasyBuild Toolchains

As an alternative to the above chain of 'module load' commands one can load a toolchain module listed under the ‘Core’ modules directly. A toolchain is a bundle of a compiler and frequently used libraries which is needed for building a software package/application. The toolchains installed on Idun include the so-called common toolchains foss (short for “Free and Open Source Software”) and intel, and in addition the iomkl toolchain. The available toolchains on Idun with the components that comprise the toolchain is listed below

Toolchain Compilers MPI stack Included libraries
foss GCC OpenMPI OpenBLAS/LAPACK, ScaLAPACK, FFTW
intel icc, ifort Intel MPI Intel MKL
iomkl icc, ifort OpenMPI Intel MKL

E.g. loading the foss/2016b toolchain module directly and issuing the module available command will show the output listed above with modules loaded marked with (L).

Using the module spider command

To see a full list of available modules installed on the system enter command

$ module spider

and adding a specific module file will show detailed information about that package, e.g. what module files to load to use the software, e.g.

$ module spider HDF5/1.8.17
...
You will need to load all module(s) on any one of the lines below before the "netCDF/4.4.1" module is available to load.
      GCC/5.4.0-2.26  OpenMPI/1.10.3
...

Further Information

Creating Python virtual environments

With the use of ‘virtualenv’ a user can create his/her own virtual Python environment based on a loaded Python version:

$ module load intel/2018b
  $ module load Python/3.6.6
  $ module list
  Currently Loaded Modules:
    1) GCCcore/.7.3.0                    5) impi/2018.3.222   9) zlib/.1.2.11      13) GMP/.6.1.2
    2) binutils/.2.30                    6) imkl/2018.3.222  10) ncurses/.6.1      14) libffi/.3.2.1
    3) icc/2018.3.222-GCC-7.3.0-2.30     7) intel/2018b      11) libreadline/.7.0  15) Python/3.6.6
    4) ifort/2018.3.222-GCC-7.3.0-2.30   8) bzip2/.1.0.6     12) XZ/.5.2.4
  $ type virtualenv
  virtualenv is /share/apps/software/MPI/intel/2018.3.222-GCC-7.3.0-2.30/impi/2018.3.222/Python/3.6.6/bin/virtualenv
  $ virtualenv datasci
  Using base prefix '/share/apps/software/MPI/intel/2018.3.222-GCC-7.3.0-2.30/impi/2018.3.222/Python/3.6.6'
  New python executable in /lustre1/work/bjornlin/pythonenvs/datasci/bin/python
  Installing setuptools, pip, wheel...done.
  $ ls
   datasci
  $ source datasci/bin/activate
  (datasci)$ pip install scipy numpy scikit-learn pandas matplotlib
 
# To exit at virtual environment do deactivate
 
(datasci)$ deactivate

Virtualenv documented