Skip to main content

How to find Software (introduction to the module system)

A "module" system called Lmod is used on ACRES, which allows users to conveniently search for available software, and then "load" / "unload" software modules. A software module is basically a collection of environment settings that allows you to use the software. In many cases, loading a module simply appends the software's directories to the PATH and LD_LIBRARY_PATH environment variables, so that you have convenient access to its commands and libraries. Sometimes loading the module may also set any variables needed for licensing, and establish other necessary settings.

This sort of module system allows multiple versions of the same software to co-exist on ACRES, and yet give users convenient access to whichever versions they need. The module system also can prevent you from loading conflicting software modules, such as two different versions of gnu compiler. The next section of this article is a step-by-step guide on how to use the Lmod system to list currently loaded modules, search for modules, or load modules.

You may also refer to the Lmod documentation for more information: https://lmod.readthedocs.io/en/latest/010_user.html

Step-by-step guide

  1. Once you login to the system, you should load packages needed by your codes. Commands to load packages can also be placed in your job script. 

    If you load packages in your job script, you do not have to load it through the terminal in advance.

  2. Use module spider to find all possible modules. Use module load to load any software, such as a gnu8 compiler, shown below:

    [user@acres-head0 ~]$ module load gnu8/8.3.0
    [user@acres-head0 ~]$ module load gnu8/8.3.0

    With that, the Fortran compiler gortran and C/C++ compiler gcc will be available to use.

  3. Use module list to see currently loaded modules.

    [user@acres-head0 ~]$ module list

    Currently Loaded Modules:
    1) autotools 2) prun/1.3 3) gnu8/8.3.0 4) openmpi3/3.1.4 5) ohpc
    [user@acres-head0 ~]$ module list

    Currently Loaded Modules:
    1) autotools 2) prun/1.3 3) gnu8/8.3.0 4) openmpi3/3.1.4 5) ohpc
  4. Running the "module spider" command, without any more arguments, will report all modules

    [user@acres-head0 ~]$ module spider

    ----------------------------------------------------------------------------
    The following is a list of the modules currently available:
    ----------------------------------------------------------------------------
    Anaconda3: Anaconda3/2020.02
    Built to complement the rich, open source Python community, the
    Anaconda platform provides an enterprise-ready data analytics platform
    that empowers companies to adopt a modern open data science analytics
    architecture.

    cp2k: cp2k/7.1.0
    Quantum chemistry and solid state physics software package

    dimemas: dimemas/5.4.1
    Dimemas tool
    [user@acres-head0 ~]$ module spider

    ----------------------------------------------------------------------------
    The following is a list of the modules currently available:
    ----------------------------------------------------------------------------
    Anaconda3: Anaconda3/2020.02
    Built to complement the rich, open source Python community, the
    Anaconda platform provides an enterprise-ready data analytics platform
    that empowers companies to adopt a modern open data science analytics
    architecture.

    cp2k: cp2k/7.1.0
    Quantum chemistry and solid state physics software package

    dimemas: dimemas/5.4.1
    Dimemas tool

    This output shows the name of the module followed by a list of the full names of the modules. If there are more modules then can fit on one line, the the list is truncated.

  5. To search for modules with a specific name, add the name (or part of the name) as the next argument of the module spider command:

    module spider

    Example:

    [user@acres-head0 ~]$module spider metis

    -----------------------------------------------------------------------------------------------------
    **  metis:**
    -----------------------------------------------------------------------------------------------------
    **    Description:**
    **      Metis development files **

    **     Versions:**
    **        metis/5.1.0**
    **     Other possible modules matches:**
    **        METIS  ParMETIS**

    -----------------------------------------------------------------------------------------------------
    **  To find other possible module matches execute:**

    **      $ module -r spider '.*metis.*'**

    -----------------------------------------------------------------------------------------------------
    **  For detailed information about a specific "metis" module (including how to load the modules) use the module's full name.**
    **  For example:**

    **     $ module spider metis/5.1.0**
    -----------------------------------------------------------------------------------------------------

    As the output says, you can run "module spider /" to get specific information about a specific module. This is important because some modules require other modules to be loaded first, and the detailed information will tell you which ones. An example is below. It tells us that to load METIS library, we have to load a gnu module in advance.

    [user@acres-head0 ~]$ module spider metis/5.1.0

    ----------------------------------------------------------------------------
    metis: metis/5.1.0
    ----------------------------------------------------------------------------
    Description:
    Metis development files


    You will need to load all module(s) on any one of the lines below before the "metis/5.1.0" module is available to load.

    gnu/5.4.0
    gnu8/8.3.0

    Help:

    This module loads the METIS library built with the gnu8 compiler toolchain.

    Version 5.1.0
    [user@acres-head0 ~]$ module spider metis/5.1.0

    ----------------------------------------------------------------------------
    metis: metis/5.1.0
    ----------------------------------------------------------------------------
    Description:
    Metis development files


    You will need to load all module(s) on any one of the lines below before the "metis/5.1.0" module is available to load.

    gnu/5.4.0
    gnu8/8.3.0

    Help:

    This module loads the METIS library built with the gnu8 compiler toolchain.

    Version 5.1.0

Error rendering macro 'contentbylabel'

parameters should not be empty