Linux Environment Modules: LMOD

Overview

All users on ASL (ASC Standard Linux), Red Hat or Ubuntu, have access to the ASC Environment Modules (LMOD). Environment modules allows users of Linux workstations and the Unity cluster to:

  • Dynamically reconfigure their environment without any installation or configuration of packages
  • Allow seamless switching between versions of software
  • Load a known good software installation on any Linux workstation in the College.
  • Maintain a collection of software that can be loaded onto your computer through one command or upon login.

The modules are maintained by ASCTech. Please request any software that you think should be available on the modules server via a ticket.

Contents

What is an Environment Module

Typically users initialize their environment when they log in by setting environment information for every application they will reference during the session. The Environment Modules package is a tool that simplify shell initialization and lets users easily modify their environment during the session with modulefiles.

Each modulefile contains the information needed to configure the shell for an application. Once the Modules package is initialized, the environment can be modified on a per-module basis using the module command which interprets modulefiles. Typically modulefiles instruct the module command to alter or set shell environment variables such as PATH, MANPATH, etc. modulefiles may be shared by many users on a system and users may have their own collection to supplement or replace the shared modulefiles.

Modules can be loaded and unloaded dynamically and atomically, in an clean fashion. All popular shells are supported, including bash, ksh, zsh, sh, csh, tcsh, fish, cmd as well as some scripting languages such as perl, ruby, tcl, python, cmake and R.

Modules are useful in managing different versions of applications. Modules can also be bundled into metamodules that will load an entire suite of different applications.

Source: https://modules.sourceforge.net/

Using Environment Modules

Seeing Available Modules

In order to load a module, it must have been created at some point by someone within ASCTech and then added to the modules path. There are easy commands to list out the available modules such as:

module avail

---------------------------------------------------------------------------------------------------------------------------------------------------------------------- /opt/modules/modulefiles/Core -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   R/3.5                     chimera/1.13         fastqc/0.11               heasoft/6.30            maple/2018.0              matlab/r2021a               octave/4.4.1                             oneapi/dnnl/3.4.0                     oneapi/oclfpga/2024.1.0        python/3.8.1               super-deduper/2.0          xvista.old/7-12f
   abyss/2.1                 ciao/4.12.1          flash/modified-1.2        heasoft/6.30.1   (D)    maple/2023.0       (D)    matlab/r2023b        (D)    oneapi/advisor/2024.1                    oneapi/dpct/2024.1.0                  oneapi/oneapi/2024.0.0         python/3.9                 supernova/2.1              xvista/7-12f
   apbs/1.5                  ciao/4.14     (D)    flash/1.2          (D)    heasoft/6.33.2   (T)    mathematica/11.3.0        mgltools/1.5.7       (T)    oneapi/ccl/2021.12.0                     oneapi/dpl/2022.5                     oneapi/tbb/2021.12             python/3.12.3              test/1.0
   apptainer/1.2.2           cmake/3.11           framedp/1.2               hhsuite/3.3             mathematica/12.0.0        mkl/17.1                    oneapi/compiler-intel-llvm/2024.1.0      oneapi/ifort/2024.1.0                 oneapi/tbb32/2021.12           rcorrector/1.0             texlive/2019
   autodock-gpu/1.5.3 (T)    cmake/3.16           gcc/4.8                   iSpec/2020.10.01        mathematica/13.0          naccess/2.1.1               oneapi/compiler-intel-llvm32/2024.1.0    oneapi/ifort32/2024.1.0               oneapi/vtune/2024.1            seekr/1.0                  texlive/2020      (D)
   beast/2.5                 cmake/3.24    (D)    gcc/5.4                   idl/8.7.2               mathematica/13.1   (D)    namd-multi-cuda/2.12        oneapi/compiler-rt/2024.1.0              oneapi/intel_ipp_ia32/2021.11         pdb2pqr/2.1                    seqtk/1.2                  texlive/2021
   bfc/1.0                   cope/1.2             gcc/6.1                   idl/8.8.1        (D)    matlab/r2015b             namd-multi-cuda/2.13        oneapi/compiler-rt32/2024.1.0            oneapi/intel_ipp_intel64/2021.11      perl/5.26.3             (D)    skewer/0.2                 vmd/1.9.3
   blender/2.81a             cuda/10.2     (T)    gcc/6.3                   intel/16.3              matlab/r2016b             namd-multi-cuda/2.14 (D)    oneapi/compiler/2024.1.0                 oneapi/intel_ippcp_ia32/2021.11       perl/5.34.1                    skycalc/6.3.1              wcstools/3.9.5
   blender/3.0.1      (D)    ds9/8.1       (D)    gcc/7.3            (D)    intel/17.1              matlab/r2017a             namd-multi/2.12             oneapi/compiler32/2024.1.0               oneapi/intel_ippcp_intel64/2021.11    python/2.7                     sm/2.4.38                  wcstools/3.9.7    (D)
   browndye/1.0              ds9/8.5       (T)    gcc/13.3           (T)    intel/18.2       (D)    matlab/r2017b             namd-multi/2.13             oneapi/dal/2024.0.0                      oneapi/mkl/2024.1                     python/3.6                     source-extractor/2.25.0    xmm-sas/18.0.0
   browndye/2.0       (D)    exonerate/2.2        grace/5.1.25              intel/19.0.5            matlab/r2019a             namd-multi/2.14      (D)    oneapi/debugger/2024.1.0                 oneapi/mkl32/2024.1                   python/3.7                     squashfs-tools/4.6.1       xmm-sas/21.0.0    (T,D)
   cd-hit/4.6                fac/1.1.4            heasoft/6.28              iraf/2.17               matlab/r2020b             novocraft/3.08              oneapi/dev-utilities/2024.0.0            oneapi/mpi/2021.12                    python/3.8              (D)    squashfuse/0.5.0           xplor-nih/3.2

------------------------------------------------------------------------------------------------------------------------------------------------------------------ /usr/share/lmod/lmod/modulefiles/Core -------------------------------------------------------------------------------------------------------------------------------------------------------------------
   lmod    settarg

  Where:
   T:  Testing
   D:  Default Module

If the avail list is too long consider trying:

"module --default avail" or "ml -d av" to just list the default modules.
"module overview" or "ml ov" to display the number of modules for each name.

Use "module spider" to find all possible modules and extensions.
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".

Additional commands for listing out modules include

module overview

which gives a more compact view

module spider

which is a more complex readout and also allows for the retrieval of information specific to a module such as

module spider idl

 

Loading an Environment Module

Modules can be loaded with the following command provided they are available

module load (MODULENAME)

and modules can be unloaded with the command

module unload (MODULENAME)

In order to see modules currently loaded into the environment, please use

module list

 

Useful tips and tricks

The ml alias

The command mlis a useful alias for much of the module command's functionality. Please consult the LMOD documentation for more info.

Dependencies

Often, modules can have dependencies on other modules. For instance, if

module load heasoft

is invoked and then the module list command is used, you would notice that multiple modules are now loaded.

Currently Loaded Modules:
  1) gcc/7.3   2) perl/5.26.3   3) heasoft/6.30.1

In this case, these specific versions of GCC and Perl are critical to the functionality of HEASoft.

Collections

The module save command allows you to save the currently loaded environment. module save can be invoked to save as a default collection or you can provide a title for the collection.

More Information

More information can be found on the LMOD User Guide found here: User Guide for Lmod

Requesting Help with Modules

Please email asctech@osu.edu with questions, or issues encountered with using modules.

Requesting Modules

If you would like to request an addition or a different version of an existing module, please contact asctech@osu.edu. Prepending the subject line of your email with LMOD can assist with routing your request. You may be asked to provide links to the software you are requesting.

Some software may have optional features that need to be enabled at compile time. This could include functionality using newer CPU instruction sets for additional performance such as AVX, AVX2, or AVX512. It could also include parallel processing options such as OpenMPI or MPICH.

Additionally, many programs have options to compile GPU-Accelerated functions that can be invoked on machines with graphics cards. CUDA, ROCm, and OpenCL are often examples of this.

Please specify in your request to ASCTech of any additional functionality needed.