---
title: PSI Modules 
#tags:
keywords: Pmodules, software, stable, unstable, deprecated, overlay, overlays, release stage, module, package, packages, library, libraries
last_updated: 07 September 2022
#summary: ""
sidebar: merlin7_sidebar
permalink: /merlin7/pmodules.html
---

## PSI Environment Modules

On top of the operating system stack we provide different software using the PSI developed PModule system. 

PModules is the official supported way and each package is deployed by a specific expert. Usually, in PModules
software which is used by many people will be found.

If you miss any package/versions or a software with a specific missing feature, contact us. We will study if is feasible or not to install it.

### Module Release Stages

  To ensure proper software lifecycle management, PModules uses three release stages: unstable, stable, and deprecated.

  1. **Unstable Release Stage:**
     * Contains experimental or under-development software versions.
     * Not visible to users by default. Use explicitly:

     ```bash
     module use unstable
     ```
     * Software is promoted to **stable** after validation.
  2. **Stable Release Stage:**
     * Default stage, containing fully tested and supported software versions.
     * Recommended for all production workloads.

  3. **Deprecated Release Stage:**
     * Contains software versions that are outdated or discontinued.
     * These versions are hidden by default but can be explicitly accessed:

     ```bash
     module use deprecated
     ```
     * Deprecated software can still be loaded directly without additional configuration to ensure user transparency.

## PModules commands

Below is listed a summary of common `module` commands:

```bash
module use                       # show all available PModule Software Groups as well as Release Stages
module avail                     # to see the list of available software packages provided via pmodules
module use unstable              # to get access to a set of packages not fully tested by the community
module load <package>/<version>  # to load specific software package with a specific version
module search <string>           # to search for a specific software package and its dependencies.
module list                      # to list which software is loaded in your environment
module purge                     # unload all loaded packages and cleanup the environment
```

Please refer to the **external [PSI Modules](https://pmodules.gitpages.psi.ch/chap3.html) document** for
detailed information about the `module` command. 

### module use/unuse

Without any parameter, `use` **lists** all available PModule **Software Groups and Release Stages**.

```bash
module use
```

When followed by a parameter, `use`/`unuse` invokes/uninvokes a PModule **Software Group** or **Release Stage**.

```bash
module use EM         # Invokes the 'EM' software group
module unuse EM       # Uninvokes the 'EM' software group
module use unstable   # Invokes the 'unstable' Release stable
module unuse unstable # Uninvokes the 'unstable' Release stable
```

### module avail

This option **lists** all available PModule **Software Groups and their packages**.

Please run `module avail --help` for further listing options.

### module search

This is used to **search** for **software packages**. By default, if no **Release Stage** or **Software Group** is specified
in the options of the `module search` command, it will search from the already invoked *Software Groups* and *Release Stages*. 
Direct package dependencies will be also showed.

```bash
🔥 [caubet_m@login001:~]# module search openmpi

Module        Rel.stage  Group        Overlay      Requires
--------------------------------------------------------------------------------
openmpi/4.1.6 stable     Compiler     Alps         gcc/12.3.0
openmpi/4.1.6 stable     Compiler     Alps         gcc/13.3.0
openmpi/4.1.6 stable     Compiler     Alps         gcc/14.2.0
openmpi/4.1.6 stable     Compiler     Alps         intelcc/22.2
openmpi/5.0.5 stable     Compiler     Alps         gcc/8.5.0
openmpi/5.0.5 stable     Compiler     Alps         gcc/12.3.0
openmpi/5.0.5 stable     Compiler     Alps         gcc/14.2.0
openmpi/5.0.5 stable     Compiler     Alps         intelcc/22.2
```

Please run `module search --help` for further search options.

### module load/unload

This loads/unloads specific software packages. Packages might have direct dependencies that need to be loaded first. Other dependencies
will be automatically loaded.

In the example below, the ``openmpi/5.0.5`` package will be loaded, however ``gcc/14.2.0`` must be loaded as well as this is a strict dependency. Direct dependencies must be loaded in advance. Users can load multiple packages one by one or at once. This can be useful for instance when loading a package with direct dependencies.

```bash
# Single line
module load gcc/14.2.0 openmpi/5.0.5

# Multiple line
module load gcc/14.2.0
module load openmpi/5.0.5
```

#### module purge

This command is an alternative to `module unload`, which can be used to unload **all** loaded module files.

```bash
module purge
```

## Requesting New PModules Packages

The PModules system is designed to accommodate the diverse software needs of Merlin7 users. Below are guidelines for requesting new software or versions to be added to PModules.

### Requesting Missing Software

If a specific software package is not available in PModules and there is interest from multiple users:
* **[Contact Support](/merlin7/contact.html):** Let us know about the software, and we will assess its feasibility for deployment.
* **Deployment Timeline:** Adding new software to PModules typically takes a few days, depending on complexity and compatibility.
* **User Involvement:** If you are interested in maintaining the software package, please inform us. Collaborative maintenance helps
ensure timely updates and support.

### Requesting a Missing Version
If the currently available versions of a package do not meet your requirements:
* **New Versions:** Requests for newer versions are generally supported, especially if there is interest from multiple users.
* **Intermediate Versions:** Installation of intermediate versions (e.g., versions between the current stable and deprecated versions)
can be considered if there is a strong justification, such as specific features or compatibility requirements.

### General Notes
* New packages or versions are prioritized based on their relevance and usage.
* For any request, providing detailed information about the required software or version (e.g., name, version, features) will help
expedite the process.
