Module naming scheme
All modules available on Viking follow the same general naming structure: `category
/name/version[-toolchain][-suffix]
`
(where []
indicates this parameter is not present in all modules):
category
: the (loose) category the software falls under, e.g. `bio`, `chem`, `compiler`, ...name
: the name of the softwareversion
: the version of the softwaretoolchain
: if compiled with a particular toolchain, the name and version of the toolchain used (and automatically loaded)suffix
: a handful of modules contain a suffix, which can indicate:- a particular requirement (e.g. needing Python 2.x)
- specific architecture (e.g. x86_64) - not relevant on Viking since all nodes have the same architecture
- different configurations where software supports it, e.g. MPI/non-MPI versions, or using MKL without intel compilers
Although the category
, name
and version
are required for all modules, not all modules will have a toolchain
or suffix
in the name.
Compatible Toolchains
It is always important that all modules loaded simultaneously were built with compatible toolchains. When considering which modules are compatible:
- ensure that all modules belong to the same "toolchain generation"
- use modules only from one "branch":
- `
foss`: GCCcore, GCC, gompi, foss
- `
intel`: GCCcore, iccifort/intel-compilers, iimpi, intel
- `
fosscuda`: GCCcore, GCC, gcccuda, gompic, fosscuda
- `
- note that modules built with "
GCCcore
" are compatible with all branches - if a module has no
toolchain
component in the name, it should be compatible with any other toolchain. This is usually the case for software provided as a pre-compiled, statically-linked binary.
Toolchain compatibility (CPU-only)
The following table indicates the compatibility of the main toolchains used on Viking (red is used for the "foss", blue for "intel" branches):
Toolchain generation | (sub)toolchain | |||
---|---|---|---|---|
minimal compiler | full compiler | compiler + MPI | compiler, MPI + numerical libraries | |
2021a | GCCcore-10.3.0 | GCC-10.3.0 | gompi-2021a | foss-2021a |
intel-compilers-2021.2.0 | iimpi-2021a | intel-2021a | ||
2020b | GCCcore-10.2.0 | GCC-10.2.0 | gompi-2020b | foss-2020b |
(not installed) | - | - | ||
2020a | GCCcore-9.3.0 | GCC-9.3.0 | gompi-2020a | foss-2020a |
iccifort-2021.1.217 | iimpi-2020a | intel-2020a | ||
2019b | GCCcore-8.3.0 | GCC-8.3.0 | gompi-2019b | foss-2019b |
iccifort-2019.5.281 | iimpi-2019b | intel-2019b | ||
2019a | GCCcore-8.2.0 | GCC-8.2.0-2.31.1 | gompi-2019a | foss-2019a |
iccifort-2019.1.144-GCC-8.2.0-2.31.1 | iimpi-2019a | intel-2019a | ||
2018b | GCCcore-7.3.0 | GCC-7.3.0-2.30 | gompi-2018b | foss-2018b |
iccifort-2018.3.222-GCC-7.3.0-2.30 | iimpi-2018b | intel-2018b |
Toolchain compatibility (with CUDA)
The following table indicates the compatibility of the main toolchains used on Viking (red is used for the CPU-only "foss", yellow for "foss" with CUDA support, blue for "intel" branches):
Common toolchains by components
For modules built without CUDA support:
Toolchain | Compiler(s) | MPI library | Numerical libraries | Notes |
---|---|---|---|---|
GCC | GCC | |||
gompi | GCC | OpenMPI | ||
foss | GCC | OpenMPI | ScaLAPACK | (OpenBLAS via FlexiBLAS from 2021a onwards) |
iccifort / intel-compilers | icc ifort | Intel MPI | renamed to intel-compilers from 2021a onwards due to move to OneAPI | |
iimpi | icc ifort | Intel MPI | ||
intel | icc ifort | Intel MPI | Intel MKL |
for modules with CUDA enabled:
Toolchain | Compiler(s) | MPI library | Numerical libraries | Notes |
---|---|---|---|---|
gcccuda | GCC | |||
gompic | GCC | OpenMPI | ||
fosscuda | GCC | OpenMPI | ScaLAPACK | (OpenBLAS via FlexiBLAS from 2021a onwards) |
iccifort / intel-compilers | icc ifort | Intel MPI | renamed to intel-compilers from 2021a onwards due to move to OneAPI | |
iimpic | icc ifort | Intel MPI | ||
intelcuda | icc ifort | Intel MPI | Intel MKL |