Using modules

To use software modules, the user just need to use the module load or module add commands to load the required module. When a module is loaded, all required dependencies will also be loaded, making the software ready for the user.

Vision uses a hierarchical module naming scheme (hmns) in which modules availability follows the software hierarchy Core/Compiler/MPI. Core refers to the basic core modules that have to be loaded in order to have access to next levels of software compiled against a specific compiler and a MPI API.

After logging into Vision, the user should execute the command module av (av for available) to list the available core modules:

$ module av

------------------------ /opt/software/modules/all/Core ------------------------
   Anaconda3/2021.05         binutils/2.36.1            (D)
   Bison/3.8.2               cuDNN/8.2.1.32-CUDA-11.3.1
   CUDA/11.3.1               flex/2.6.4
   GCC/10.3.0                foss/2021a
   GCCcore/10.2.0            gettext/0.21
   GCCcore/10.3.0    (D)     gompi/2021a
   Java/11.0.2       (11)    ncurses/6.2
   M4/1.4.19                 pkg-config/0.29.2
   OpenSSL/1.1               zlib/1.2.11
   binutils/2.35

  Where:
   Aliases:  Aliases exist: foo/1.2.3 (1.2) means that "module load foo/1.2" will load foo/1.2.3
   D:        Default Module

In the available modules, you can find the toolchains foss/2021a and gompi/2021a, which you can load to access other modules which are built againts each toolchain, e.g.: module load foss/2021a. After loading the toolchain, you can view the associated modules using running again the comman module av:

$ module load foss/2021a
$ module av

----------- /opt/software/modules/all/MPI/GCC/10.3.0/OpenMPI/4.1.1 -----------
   FFTW/3.3.9                   (L)    h5py/3.2.1
   HDF5/1.10.7                         magma/2.6.1-CUDA-11.3.1
   ScaLAPACK/2.1.0-fb           (L)    matplotlib/3.4.2
   SciPy-bundle/2021.05                scikit-learn/0.24.2
   TensorFlow/2.5.3-CUDA-11.3.1        tensorboard/2.8.0
   TensorFlow/2.6.0-CUDA-11.3.1 (D)

--------------- /opt/software/modules/all/Compiler/GCC/10.3.0 ----------------
   FlexiBLAS/3.0.4 (L)    OpenBLAS/0.3.15 (L)    OpenMPI/4.1.1 (L)

------------- /opt/software/modules/all/Compiler/GCCcore/10.3.0 --------------
   Autoconf/2.71                        cppy/1.1.0
   Automake/1.16.3                      double-conversion/3.1.5
   Autotools/20210128                   expat/2.2.9
   Bazel/3.7.2                          expecttest/0.1.3
   Bison/3.7.6                          flatbuffers-python/2.0
   Brotli/1.0.9                         flatbuffers/2.0.0
   CMake/3.20.1                         flex/2.6.4                 (D)
   DB/18.1.40                           fontconfig/2.13.93
   Eigen/3.3.9                          freetype/2.10.4
   FFmpeg/4.3.2                         gettext/0.21               (D)
   FriBidi/1.0.10                       giflib/5.2.1
   GDRCopy/2.2                          git/2.32.0-nodocs
   GMP/6.2.1                            gperf/3.1
   ICU/69.1                             groff/1.22.4
   JsonCpp/1.9.4                        gzip/1.10
   LAME/3.100                           help2man/1.48.3
   LMDB/0.9.28                          hwloc/2.4.1                (L)
   LibTIFF/4.2.0                        hypothesis/6.13.1
   M4/1.4.18                            intltool/0.51.0
   MPFR/4.1.0                           jbigkit/2.1
   Meson/0.58.0                         libarchive/3.5.1
   NASM/2.15.05                         libevent/2.1.12            (L)
   NCCL/2.10.3-CUDA-11.3.1              libfabric/1.12.1           (L)
   Ninja/1.10.2                         libffi/3.3
   PCRE/8.44                            libjpeg-turbo/2.0.6
   PMIx/3.2.3                  (L)      libpciaccess/0.16          (L)
   Perl/5.32.1-minimal                  libpng/1.6.37
   Perl/5.32.1                 (D)      libreadline/8.1
   Pillow/8.2.0                         libtool/2.4.6
   PyYAML/5.4.1                         libxml2/2.9.10             (L)
   Python/2.7.18-bare                   libyaml/0.2.5
   Python/3.9.5-bare                    lz4/1.9.3
   Python/3.9.5                (D)      makeinfo/6.7-minimal
   Qhull/2020.2                         ncurses/6.2                (D)
   Rust/1.52.1                          nsync/1.24.0
   SQLite/3.35.4                        numactl/2.0.14             (L)
   Szip/2.1.1                           pkg-config/0.29.2          (D)
   Tcl/8.6.11                           pkgconfig/1.5.4-python
   Tk/8.6.11                            protobuf-python/3.17.3
   Tkinter/3.9.5                        protobuf/3.17.3
   UCX-CUDA/1.10.0-CUDA-11.3.1          pybind11/2.6.2
   UCX/1.10.0                  (L)      snappy/1.1.8
   UnZip/6.0                            typing-extensions/3.10.0.0
   X11/20210518                         util-linux/2.36
   XZ/5.2.5                    (L)      x264/20210414
   Yasm/1.3.0                           x265/3.5
   Zip/3.0                              xorg-macros/1.19.3
   binutils/2.36.1             (L,D)    zlib/1.2.11                (L,D)
   bzip2/1.0.8                          zstd/1.4.9
   cURL/7.76.0

----------------------- /opt/software/modules/all/Core -----------------------
   Anaconda3/2021.05          binutils/2.36.1
   Bison/3.8.2       (D)      cuDNN/8.2.1.32-CUDA-11.3.1
   CUDA/11.3.1                flex/2.6.4
   GCC/10.3.0        (L)      foss/2021a                 (L)
   GCCcore/10.2.0             gettext/0.21
   GCCcore/10.3.0    (L,D)    gompi/2021a
   Java/11.0.2       (11)     ncurses/6.2
   M4/1.4.19         (D)      pkg-config/0.29.2
   OpenSSL/1.1       (L)      zlib/1.2.11
   binutils/2.35

  Where:
   L:        Module is loaded
   Aliases:  Aliases exist: foo/1.2.3 (1.2) means that "module load foo/1.2" will load foo/1.2.3
   D:        Default Module

After loading the desired toolchain, the user can load the desired moduled using the module load command. For example, to load TensorFlow, the user can run the following command:

$ module load TensorFlow

To list the modules that are loaded, the user should use the module list command:

$ module list
Currently Loaded Modules:
  1) GCCcore/10.3.0               29) Tcl/8.6.11
  2) zlib/1.2.11                  30) SQLite/3.35.4
  3) binutils/2.36.1              31) GMP/6.2.1
  4) GCC/10.3.0                   32) libffi/3.3
  5) numactl/2.0.14               33) Python/3.9.5
  6) XZ/5.2.5                     34) pybind11/2.6.2
  7) libxml2/2.9.10               35) SciPy-bundle/2021.05
  8) libpciaccess/0.16            36) Szip/2.1.1
  9) hwloc/2.4.1                  37) HDF5/1.10.7
 10) OpenSSL/1.1                  38) h5py/3.2.1
 11) libevent/2.1.12              39) cURL/7.76.0
 12) UCX/1.10.0                   40) double-conversion/3.1.5
 13) libfabric/1.12.1             41) flatbuffers/2.0.0
 14) PMIx/3.2.3                   42) giflib/5.2.1
 15) OpenMPI/4.1.1                43) ICU/69.1
 16) OpenBLAS/0.3.15              44) JsonCpp/1.9.4
 17) FlexiBLAS/3.0.4              45) NASM/2.15.05
 18) FFTW/3.3.9                   46) libjpeg-turbo/2.0.6
 19) ScaLAPACK/2.1.0-fb           47) LMDB/0.9.28
 20) foss/2021a                   48) nsync/1.24.0
 21) CUDA/11.3.1                  49) protobuf/3.17.3
 22) cuDNN/8.2.1.32-CUDA-11.3.1   50) protobuf-python/3.17.3
 23) GDRCopy/2.2                  51) flatbuffers-python/2.0
 24) UCX-CUDA/1.10.0-CUDA-11.3.1  52) typing-extensions/3.10.0.0
 25) NCCL/2.10.3-CUDA-11.3.1      53) libpng/1.6.37
 26) bzip2/1.0.8                  54) snappy/1.1.8
 27) ncurses/6.2                  55) TensorFlow/2.6.0-CUDA-11.3.1
 28) libreadline/8.1

If the user wants to “unload” the loaded modules, he can use the command module purge:

$ module purge
$ module list
No modules loaded