Skip to content

Environment and Modules

Environment and Modules

Login shell

After successful login, you end into your personal home directory. The default shell is /bin/bash.

echo $SHELL


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 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
-------------------------------------------------------------------------------- /nvme/h/buildsets/eb_cyclone/modules/all ---------------------------------------------------------------------------------
   ACTC/1.1-GCCcore-8.3.0                                            Ninja/1.10.1-GCCcore-10.2.0                      (D)    gperf/3.1-GCCcore-8.2.0
   ANTLR/2.7.7-GCCcore-8.3.0-Java-11                                 OPARI2/2.0.5-GCCcore-9.3.0                              gperf/3.1-GCCcore-8.3.0
   ANTLR/2.7.7-GCCcore-9.3.0-Java-11                       (D)       OTF2/2.2-GCCcore-9.3.0                                  gperf/3.1-GCCcore-9.3.0
   Anaconda3/5.3.0                                                   OpenBLAS/0.3.5-GCC-8.2.0-2.31.1                         gperf/3.1-GCCcore-10.2.0                             (D)
   Anaconda3/2020.11                                       (D)       OpenBLAS/0.3.7-GCC-8.3.0                                groff/1.22.4-GCCcore-8.3.0
   Autoconf/2.69-GCCcore-8.2.0                                       OpenBLAS/0.3.9-GCC-9.3.0                                groff/1.22.4-GCCcore-9.3.0
   Autoconf/2.69-GCCcore-8.3.0                                       OpenBLAS/0.3.12-GCC-10.2.0                       (D)    groff/1.22.4-GCCcore-10.2.0                          (D)
   Autoconf/2.69-GCCcore-9.3.0                                       OpenFOAM/v2012-foss-2020a                               gzip/1.10-GCCcore-9.3.0
   Autoconf/2.69-GCCcore-10.2.0                                      OpenMM/7.4.1-foss-2019b-Python-3.7.4                    gzip/1.10-GCCcore-10.2.0                             (D)
   Autoconf/2.69                                           (D)       OpenMPI/3.1.4-GCC-8.3.0                                 h5py/2.10.0-fosscuda-2019b-Python-3.7.4
   Automake/1.15                                                     OpenMPI/3.1.4-gcccuda-2019b                             h5py/2.10.0-intel-2020a-Python-3.8.2                 (D)
   Automake/1.16.1-GCCcore-8.2.0                                     OpenMPI/4.0.3-GCC-9.3.0                                 help2man/1.47.4
   Automake/1.16.1-GCCcore-8.3.0                                     OpenMPI/4.0.5-GCC-10.2.0                                help2man/1.47.7-GCCcore-8.2.0
   Automake/1.16.1-GCCcore-9.3.0                                     OpenMPI/4.0.5-gcccuda-2020b                      (D)    help2man/1.47.8-GCCcore-8.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/10.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/10.2.0   2) zlib/1.2.11-GCCcore-10.2.0   3) binutils/2.35-GCCcore-10.2.0   4) GCC/10.2.0

To remove a loaded module type:

module unload GCC/10.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/10.2.0
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:
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,...).")

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.