Skip to main content

Module System

A large number of popular software packages are installed on Palmetto and can be used without any setup or configuration. These include:

  • Compilers (such as gcc, Intel)
  • Libraries (such as OpenMPI, HDF5, Boost)
  • Programming languages (such as Python, MATLAB, R)
  • Scientific applications (such as LAMMPS, ANSYS)
  • Others (e.g., Git, )

Module Commands

These packages are available as modules on Palmetto. The following commands can be used to inspect, activate and deactivate modules:

CommandPurpose
module availList all packages available (on current system)
module spider packageList all packages with package in the name
module load package/versionAdd a package to your current shell environment
module listList packages you have loaded
module rm package/versionRemove a currently loaded package
module purgeRemove all currently loaded packages

Example usage of module spider

For example, to see what versions of Matlab are installed, you can use the command:

$ module spider matlab

------------------------------------
matlab:
------------------------------------
Versions:
matlab/2022a
matlab/2023a
matlab/2023b

Example usage of module load

To load the GCC (v12.3.0) and OpenMPI (v4.1.6) modules, you can use the command:

module load gcc/12.3.0 openmpi/4.1.6

Then, check the version of gcc:

$ gcc --version

gcc (GCC) 12.3.0
Copyright (C) 2013 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.

Example usage of module list

To view all the modules you have loaded:

$ module list

Currently Loaded Modules:
1) gcc/12.3.0 2) openmpi/4.1.6

Optimized Modules

On Palmetto 2, we have introduced a new module system that provides optimized software packages based on compute node architecture. This ensures that users can access software that is tailored to the specific capabilities of the node they are working on, resulting in improved performance and efficiency.

Important

The corresponding compiler module must be loaded first before you will see optimized modules appear in module avail.

Below is a list of compilers for each platform that have optimized modules:

PlatformCorresponding Compiler Module
AMDaocc
NVIDIAcuda
caution

Users cannot load two packages that are optimized for different architectures simultaneously.

Example of accessing AMD CPU optimized modules

For nodes equipped with AMD CPUs, the following steps should be taken:

  1. Load the AOCC compiler from the core modules:

    module load aocc/4.1.0
  2. Check the available optimized packages for AMD CPU nodes:

    module avail

This command will display all the packages that are optimized for AMD CPU nodes.

Example of loading CUDA optimized version of OpenMPI

  1. Load the CUDA module:

    module load cuda/12.3.0
  2. Check the CUDA modules:

    module avail
  3. Load the CUDA Aware OpenMPI module:

    module load openmpi/5.0.1

Example of output from module avail with optimized modules

Once you have loaded the compiler, you will see a new heading for the optimized modules in module avail:

$ module avail
------------------------------ AOCC (AMD) Modules ------------------------------
example_program/2.3
--------------------------------- Core Modules ---------------------------------
example_program/2.3
another_one/1.2
------------------------- Commercial/External Modules --------------------------
paid_calculator/4.4

Module Dependencies

Some modules when loaded, implicitly load other modules as well. If you use some modules to compile/install some software, then you will probably have to load them when running that software as well, otherwise you may see errors about missing libraries/headers. Modules do not remain loaded when you log out and log back in, i.e., they are active only for the current session - so you will need to load them for every session.

As an exercise, examine the environment variables PATH, LIBRARY_PATH, etc., before and after loading some module:

echo $PATH
module add anaconda3/2023.09-0
echo $PATH

You can also look at the module files in /software/ModuleFiles to understand what happens when you add a module.