Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
minLevel1
maxLevel1
outlinefalse
stylenone
typelist
printabletrue

...

What Have We Seen

Note

Although on the login nodes we do have a gcc compiler and the Python language this only caters for a minority of users.

We can see that R is not available, nor most of the applications that researchers will require.

There are:

  • 10s of compilers and languages

  • 100s of applications and utilities.

  • 1000s of underlying libraries and commands.

We can not provide a system that provides everything all at once.

Info

What we need is a method to enable users to find and select that they specifically need, and a method to allow them to configure and setup their sessions/environment to allow them to perform their analysis and research.

...

LMOD: An Environment Module System

...

What do we have available?

Info
  • Compilers and eco systems: GNU family, Intel’s oneAPI, Nvidia’s hpc-sdk

  • Languages: C/C+, Fortran, Go, Java, Julia, Perl, Python, R, Ruby, Rust

  • Scientific libraries and toolkits: Built with a specific compiler: GNU by default

  • Standalone applications and utilities: Installed using:

    • Conda environments.

    • Containers: running Singularity (not Docker).

      • We can create a Singularity image from a Docker image.

    • Linux based Binaries/Executables

Check the MedicineBow Software Page.

...

What is Available?

Info
MedicineBow is a brand new cluster (new OS and relates system libraries), and thus no existing Beartooth software will be automatically available nor transferred over. With this in mind ARCC will be providing a smaller
  • ARCC provides a small set of core compilers , languages, libraries and application, which will be updated on a semi regular basis.

Latest versions have been installed and we
  • When updated, we try and use the latest versions, and typically will not be

supporting
  • support older versions

of compilers
  • .

  • The GNU family of compilers (i.e. gcc)

will be our initial
  • is are primary focus, but we do provide Intel’s oneAPI suite of compilers/libraries as well as NVidia’s hpc-sdk toolset.

  • Please refer to the MedicineBow Software List for what is available and/or use the module spider command to search.

  • ARCC will consider adding to this on a case-by-case basis.

...

What’s available: Using the Module System

Info

Use module list to view the modules you are currently loaded in your session:

Code Block
# GoModules back to your home foldercurrently loaded.
[...]$ module cdlist
~
[~]$ cd intro_to_modules/

# Modules currently loaded.
[]$ ml
Currently Currently Loaded Modules:
  1) slurm/latest (S)   2) arcc/1.0 (S)

# What's available within 
Info

Use module avail to see what modules are currently available that you can be loaded your current session:

Code Block
# What's available within my 'current' environment.
# With respect to what modules I 'currently' have loaded.
[]$ module avail
...

...

Info

Modules have a name and a version: <module-name>/<module-version>

What’s available? Compiler tree

Info

Some software has to be built with respect to a compiler.

By default we build using the GNU family of compilers for C/C++ and Fortran.

Code Block
Note

The two modules slurm/latest and arcc/1.0 are loaded by default at the start of every session by ARCC.

These make available various commands and scripts that ALL users require (such as Slurm commands). If you purge/unload (see later) these you will not be able to use Slurm.

...

What’s available? Compiler tree

Info

Some software has to be built with respect to a compiler.

By default we build using the GNU family of compilers for C/C++ and Fortran.

Info

Some commands have shortcuts. Using ml is the a shortcut to module list.

info
Code Block
[]$ module load purge
[]$ module load gcc/1314.2.0
[]$ ml
Currently Loaded Modules:
  1) slurm/latest (S)   3) gmp/6.2.1  (S)   5) mpc/1.3.1_x86_64
      72) zstdarcc/1.5.50    2) arcc/1.0     (S)   46) mpfrzlib-ng/4.2.01.4_x86_64
  63) zlib-nggmp/6.2.1.4_x86_64        7) zstd/1.5.5_x86_64__programs_True
  84) gccmpfr/134.2.0
_x86_64       8) gcc/14.2.0

The gmp, mpc, mpfr, zlib-ng and zstd are know as dependencies.

Info

There are libraries that need to be loaded for gcc to work.

They are loaded automatically so you don’t have to.

Code Block
[] module avail
# What has 
info
Info

Question What changed?

We can now wee see all the modules available that have been compiled with gcc/1314.2.0

Note

These are only available if/when the gcc/13.2.0 module is loaded.

Change Compiler

Info

Let’s see what happens to our environment if we load a different compiler.

Code Block
[]# module load nvhpc-sdk/24.3 Lmod is automatically replacing "gcc/13.2.0" with "nvhpc-sdk/24.3". # What happened? []$ ml Currently Loaded
Code Block
[]$ module avail
-------------- /apps/s/lmod/mf/opt/linux-rhel9-x86_64/gcc/14.2.0 ---------------
...

------------- /apps/s/lmod/mf/spack/linux-rhel9-x86_64/gcc/14.2.0 --------------
...
Note

These are only available after the gcc/14.2.0 module has been loaded.

...

Change Compiler

Info

Let’s see what happens to our environment if we load a different compiler.

Code Block
[]# module load nvhpc-sdk/24.3
Lmod is automatically replacing "gcc/14.2.0" with "nvhpc-sdk/24.3".
Info

Again, what happened?

Code Block
[]$ ml
Currently Loaded Modules:
  1) slurm/latest (S)   2) arcc/1.0 (S)   3) nvhpc-sdk/24.3

[]$ module avail
# Modules relating to 
Info

Only modules relating to nvhpc-sdk/24.3

are

now

available.

Note

You can only have one module compiler loaded at a time.

Compilers of the same name, but different versions (gcc/1213.2.0 vs gcc/1314.2.0) are considered different.

...

Purge Your Modules

Info

Use the module purge command to reset your environment to the initial defaults.

Code Block
[]$ module purge
The #following modules Whatwere hasnot changed?
[]$ ml
[]$ module avail
Info

Use the purge command to reset your environment to the initial defaults.

Note

The more modules you have loaded, the more dependencies you will have loaded and the more likely you are to forget what you have loaded…

...

unloaded:
  (Use "module --force purge" to unload all):
  1) slurm/latest   2) arcc/1.0
Info

Again, what has changed?

Code Block
[]$ moduleml
purge[]$ The following modules were not unloaded:
  (Use "module --force purge" to unload all):
  1) slurm/latest   2) arcc/1.0

[]$ ml
Currently Loaded Modules:
  1) slurm/latest (S)   2) arcc/1.0 (S)
  Where:
   S:  Module is Sticky, requires --force to unload or purgemodule avail
Info

We are back to having the two modules slurm/latest and arcc/1.0 loaded (by default) and the initial set of available modules.

Note

The more modules you have loaded, the more dependencies you will have loaded and the more likely you are to forget what you have loaded…

Note

As mentioned earlier, do not use the --force option to unload the slurm and arcc modules.

...

Looking for Modules: module spider

Info
  • Remember: module avail only shows what is available to be loaded with respect to your current environment and what you currently have loaded.

  • It does not show you everything.

[]$ module spider
Code Block
Info

If you have performed module load gcc/14.2.0, then module avail will only show openmpi/5.0.5.

Calling module spider will show you other versions with different dependencies.

Code Block
[]$ module spider openmpi
----------------------------------------------------------------------------
  openmpi: openmpi/4.1.6
----------------------------------------------------------------------------
     OtherVersions:
possible modules matches:      openmpi/4.1.6
  nvhpc-openmpi3      You will need to load all module(s) on any one of the lines below before the "openmpi/4.1.6" module is available to load.

      arcc/1.0  gcc/13.2.0
...

Module load/spider: Dependencies

Code Block
[]$ module load openmpi/4.1.6
Lmod has detected the following error: These module(s) or extension(s) exist
but cannot be loaded as requested: "openmpi/4.1.6"
   Try: "module spider openmpi/4.1.6" to see how to load the module(s).

# What dependencies does openmpi have? And what is currently loaded?
[]$ module load gcc/13.2.0
[]$ module load openmpi/4.1.6

# What do you notice?
[]$ ml
[]$ module avail
Info

Due to dependencies, there can be a hierarchy of core modules that need to be loaded to make other libraries and software available.

and what is loaded. For example, some libraries, such as fftw, need to be built with gcc/13.2.0 and use the openmpi/4.1.6 library.

Typically their version number will be prefixed with -ompi.

Try: []$ module spider fftw

What’s different between these command-lines?

Code Block
[]$ module spider python/3.10.6
[]$ module spider python/3.12.0
[]$ module spider python2

What’s different between these command-lines? Dependencies

Code Block
[]$ module spider python/3.10.6
[]$ module spider python/3.12.0
...
    You will need to load all module(s) on any one of the lines below before the "python/3.12.0" module is available to load.
      arcc/1.0  gcc/13.2.0

[]$ module spider python2
-------------------------------------openmpi/5.0.5
     Other possible modules matches:
        nvhpc-openmpi3
----------------------------------------------------------------------------
  To find other possible module matches execute:
      $ module -r spider '.*openmpi.*'
----------------------------------------------------------------------------
  For detailed information about a specific "openmpi" package (including how to load the modules) use the module's full name.
  Note that names that have a trailing (E) are extensions provided by other modules.
  For example:
     $ module spider openmpi/5.0.5
----------------------------------------------------------------------------

...

Module load/spider: Dependencies

Info

If you module spider a specific version it will list the dependencies that are required to first be loaded before it can be used:

Code Block
[]$ module spider openmpi/5.0.5
----------------------------------------------------------------------------
  openmpi: openmpi/5.0.5
----------------------------------------------------------------------------
    You will need to load all module(s) on any one of the lines below before the "openmpi/5.0.5" module is available to load.
      arcc/1.0  gcc/14.2.0
    Help:
      An open source Message Passing Interface implementation. ...
Note

Try loading before loading gcc/14.2.0:

Code Block
[]$ module purge
[]$ module load openmpi/5.0.5
Lmod has detected the following error: These module(s) or extension(s) exist
but cannot be loaded as requested: "openmpi/5.0.5"
   Try: "module spider openmpi/5.0.5" to see how to load the module(s).
Info

Load the required dependencies, then re-try:

Code Block
[]$ module load gcc/14.2.0
[]$ module load openmpi/5.0.5
[]$
Info

Let’s check everything has been loaded successfully:

Code Block
[]$ which mpicc
/apps/u/opt/gcc/14.2.0/openmpi/5.0.5/bin/mpicc

[]$ mpicc --version
gcc (Spack GCC) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

...

OpenMPI Tree: What Do You Notice?

Info

After loading openmpi/5.0.5 what do we notice about what is now loaded and available?

Code Block
[]$ ml
[]$ module avail
Info

Notice we have opened up an additional set of modules:

Code Block
---- /apps/s/lmod/mf/spack/linux-rhel9-x86_64/openmpi/5.0.5-jk3nxsx/gcc/14.2.0 ----
   adios2/2.9.2-ompi                        netcdf-cxx4/4.3.1-ompi
...
   ior/3.3.0-ompi                           wannier90/3.1.0-ompi
   netcdf-c/4.9.2-ompi
...
Info

Due to dependencies, there can be a hierarchy of core modules that need to be loaded to make other libraries and software available.

For example, some libraries, such as fftw, need to be built with gcc/14.2.0 and use the openmpi/5.0.5 library.

Typically their version number will be prefixed with -ompi.

Try: []$ module spider fftw

...

What’s different between these command-lines?

Info

What do we notice about the required dependencies for the following versions of Python?

Code Block
[]$ module spider python/3.10.6
[]$ module spider python/3.12.0
[]$ module spider python2

...

What’s different between these command-lines? Dependencies

Info

The two python/3.x versions have both been installed using both the gcc/13.2.0 and gcc/14.2.0 compilers.

You need to choose which gcc compiler version first before we can use them.

Code Block
[]$ module spider python/3.10.6
[]$ module spider python/3.12.0
...
    You will need to load all module(s) on any one of the lines below before the "python/3.12.0" module is available to load.
      arcc/1.0  gcc/13.2.0
      arcc/1.0  gcc/14.2.0
...      

Even though python/3.10.6 has been built with different compilers, it is still running Python Version 3.10.6. Your related scripts should run with either variant. This is same with python/3.12.0.

We recommend using the variant built with the latest compiler.

Info

The python/2 module has no dependencies, can can be loaded straight away:

Code Block
[]$ module spider python2
----------------------------------------------------------------------------
  python2: python2/2.7.18
----------------------------------------------------------------------------
    You will need to load all module(s) on any one of the lines below before the "python2/2.7.18" module is available to load.
      arcc/1.0

...

More module commands

Info

The module command has lots more sub-commands:

Code Block
[]$ module
Modules based on Lua: Version 8.7  2022-04-16 13:49 -05:00
    by Robert McLay mclay@tacc.utexas.edu

module [options] sub-command [args ...]

Help sub-commands:
---------------------------------------
  python2: python2/2.7.18
--
  help                              prints this message
  help                module [...]  print help message from module(s)

Loading/Unloading sub-commands:
--------------------------------------------------------------------------
    You will need to load all module(s) on any one of the lines below before the "python2/2.7.18" module is available to load.
      arcc/1.0--
  load | add          module [...]  load module(s)
 ...

...

...