Environment and Modules
Login shell¶
After successful login, you end into your personal home directory. The default shell is /bin/bash.
echo $SHELL
/bin/bash
Environment Variables¶
On each cluster the variable $HOME points to the user's home directory.
On Cyclone where users get access based on their active projects and allocations, there are three environment variables ta point to the directories a user has access to:
$HOME
(/nvme/h/<username>
) is the home directory of a user. Users should store their source code and build executables here. The home directory is limited in size.$DATA_<projectid>
(/nvme/h/<username>/data_<projectid>
) is the data directory of a user within the project shared directory. Users must change to this directory in their batch scripts to run their jobs. The data directory has a total maximum quota as allocated to each project.$SCRATCH
(/nvme/scratch/<username>
) is a temporary storage directory for data to reside. Month old contents of scratch directory are purged during the monthly maintenance windows.
Note: NO BACKUPS are taken of any directory
Users can type the env
command to see the environment variables in their login shell.
Modules¶
Modules are used to provide a uniform mechanism for accessing different revisions of software such as application packages, compilers, communication libraries, tools, and math libraries. Modules manage environment variables such as PATH, LD_LIBRARY_PATH and MANPATH, enabling the use of application/library profiles and their dependencies.
To list all available modules in the cluster use the module avail
command:
module avail
-------------------------------------------------------------------------------- /eb/modules/all ---------------------------------------------------------------------------------
ANTLR/2.7.7-GCCcore-8.3.0-Java-11 Mako/1.1.0-GCCcore-8.3.0 Zip/3.0-GCCcore-11.2.0
ATK/2.38.0-GCCcore-11.3.0 Mako/1.1.4-GCCcore-11.2.0 archspec/0.1.3-GCCcore-11.2.0
AmberTools/22.3-foss-2021b Mako/1.2.0-GCCcore-11.3.0 binutils/2.32-GCCcore-8.3.0
Anaconda3/2021.11 Mako/1.2.4-GCCcore-12.2.0 (D) binutils/2.32
Autoconf/2.69-GCCcore-8.3.0 Mesa/19.1.7-GCCcore-8.3.0 binutils/2.37-GCCcore-11.2.0
Autoconf/2.71-GCCcore-11.2.0 Mesa/21.1.7-GCCcore-11.2.0 binutils/2.37
Autoconf/2.71-GCCcore-11.3.0 Mesa/22.0.3-GCCcore-11.3.0 binutils/2.38-GCCcore-11.3.0
Autoconf/2.71-GCCcore-12.2.0 (D) Mesa/22.2.4-GCCcore-12.2.0 (D) binutils/2.38
Automake/1.16.1-GCCcore-8.3.0 Meson/0.58.2-GCCcore-11.2.0 binutils/2.39-GCCcore-12.2.0
Automake/1.16.4-GCCcore-11.2.0 Meson/0.59.1-GCCcore-8.3.0-Python-3.7.4 binutils/2.39
Automake/1.16.5-GCCcore-11.3.0 Meson/0.62.1-GCCcore-11.3.0 bzip2/1.0.8-GCCcore-8.3.0
Automake/1.16.5-GCCcore-12.2.0 (D) Meson/0.64.0-GCCcore-12.2.0 (D) bzip2/1.0.8-GCCcore-11.2.0
Autotools/20180311-GCCcore-8.3.0 NASM/2.14.02-GCCcore-8.3.0 bzip2/1.0.8-GCCcore-11.3.0
...
To start using a module you need to load it. For example to use a GCC module you need to type:
module load GCC/11.2.0
If you don't specify the version of the module, the default one is being loaded. The default modules are the ones with the (D) flag in the list of available modules.
To check the currently loaded modules use the module list
command:
module list
Currently Loaded Modules:
1) GCCcore/11.2.0 2) zlib/1.2.11-GCCcore-11.2.0 3) binutils/2.37-GCCcore-11.2.0 4) GCC/11.2.0
To remove a loaded module type:
module unload GCC/11.2.0
To remove all loaded modules use the module purge
command:
module purge
To view more details for a specific module including all environment changes the module show
command is used:
module show GCC/11.2.0
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/eb/modules/all/GCC/11.2.0.lua:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
help([[
Description
===========
The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada,
as well as libraries for these languages (libstdc++, libgcj,...).
More information
================
- Homepage: https://gcc.gnu.org/
]])
whatis("Description: The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada,
as well as libraries for these languages (libstdc++, libgcj,...).")
whatis("Homepage: https://gcc.gnu.org/")
whatis("URL: https://gcc.gnu.org/")
conflict("GCC")
setenv("EBROOTGCC","/nvme/h/buildsets/eb_cyclone_rl/software/GCCcore/11.2.0")
setenv("EBVERSIONGCC","11.2.0")
setenv("EBDEVELGCC","/nvme/h/buildsets/eb_cyclone_rl/software/GCC/11.2.0/easybuild/GCC-11.2.0-easybuild-devel")
The table below lists the most commonly used module commands:
Command | Description |
---|---|
module avail |
list available modules |
module load <name> |
load a specific module |
module unload <name> |
unload a specific module |
module list |
list loaded modules |
module help <name> |
help on a specific module |
module whatis <name> |
brief description of a specific module |
module display <name> |
display changes by a given module |
module purge |
unload all loaded modules |
You can also use the $EB* variables to refer to paths for a specific module. For example if you need to refer to the OpenMPI path you don’t need to write the whole path, you just need to use the environment variable for that which is $EBROOTOPENMPI. All environment variables for a specific module can be listed using the module show
command.