Available Software

CCR maintains a suite of software programs, libraries, and toolchains, called "Standard Software Environments", for use on our clusters.

The HPC clusters can execute most software that runs under Linux. In many cases, the software you need will already be installed and available to you on the compute nodes. You access the software using what's called a "module". If the software you need is not available as a module or a container, you can ask our staff to install it for you or do it yourself.

Watch this virtual workshop to learn more about using software on CCR's HPC systems:

Using Modules

Modules are simply configuration files that dynamically change your environment allowing you to run a particular application or provide access to a particular library. The module system allows CCR to provide multiple versions of software concurrently and enables users to easily switch between different versions without conflicts. Users can also build and maintain their own modules for more fine grained control over your groups environment.

Modules are managed using a tool called Lmod developed by the Texas Advanced Computing Center (TACC). For a more comprehensive overview of Lmod you can read the Lmod user guide.

To see what software modules are available, ssh into the login node and run:

$ module avail

This will return a list of modules available to load into your environment.

Note

If a module has dependencies you may not see the module listed until dependencies are loaded. For example, software compiled with the gcc toolchain will not be shown until you load gcc or foss modules. See the hierarchical modules section for more information.

If you cannot load a module because of dependencies, you can use the module spider command to find what dependencies you need to load the module:

module spider some_module

# For example, openmpi requires gcc:
$ module spider openmpi
    You will need to load all module(s) on any one of the lines below before 
    the "openmpi/4.1.1" module is available to load.

      gcc/11.2.0

To load your chosen modules into the environment run:

$ module load some_module_name

# For example:
$ module load python

You can specify the version of the software by appending a / with the version number:

module load some_module/version 

# For example:
$ module load python/3.9.5

Hierarchical Modules

CCR uses a hierarchical module naming convention to support programs built with specific compiler, library, and CPU architecture requirements. For example, when you run module avail on an Intel Skylake compute node (avx512), you will see three hierarchical levels of modules that look like this:

---------------------------- MPI-dependent avx512 modules -----------------------------

-------------------------- Compiler-dependent avx512 modules --------------------------

------------------------------------ Core modules -------------------------------------
Core modules
compiler and architecture independent
Compiler-dependent modules
depend on a specific CPU architecture and compiler toolchain
MPI-dependent modules
depend on a specific CPU architecture, compiler toolchain, and MPI library

Only core modules are shown by default

When you run module avail only the core modules are shown by default. To see modules for a specific compiler toolchain you will need to first load the module for the specific compiler toolchain of interest.

CCR supports the following compiler toolchains:

Toolchain Included compilers and libraries
intel Intel compilers, Intel MPI, and Intel MKL
foss GCC, OpenMPI, FlexiBLAS, OpenBLAS, LAPACK, ScaLAPACK, FFTW
GCC GCC compiler only

In addition to the compiler toolchains, the hierarchical module system is also "CPU architecture" aware. The module system will auto-detect what type of CPU you're running on and display modules built for that specific architecture.

CCR supports the following CPU architectures:

Architecture Supported CPUs
x86-64-v3 (formerly avx2) Intel Haswell, Broadwell
x86-64-v4 (formerly avx512) Intel Cascade Lake-SP, Ice Lake-SP, Sapphire Rapids-SP, Emerald Rapids-SP, AMD Zen4
neoverse-v2 ARMv9.0-A NVIDIA Gracehopper

For specific software environment and compiler versions, see CCR's software releases page.

Loading Modules in a Job Script

Modules in a job script can be loaded after your #SBATCH directives and before your actual executable is called. A sample job script that loads Python into the environment is shown below:

#!bin/bash -l
#SBATCH --nodes=1
#SBATCH --time=00:01:00
#SBATCH --ntasks=1
#SBATCH --job-name=test-job

# Optionally load a specific software environment
module load ccrsoft/xxxx.yy

# Load your modules here
module load some_module

python3 test-program.py

For more information, see the Running Jobs section.

Application Specific Notes

CCR maintains a repository of examples for use in the HPC environment. This includes example Slurm scripts for a variety of use cases, some application-specific usage examples, and examples on using containers. This repository will be updated over time so check back frequently for updates.

Abaqus

See CCR's Abaqus container documentation for an example of running Abaqus with Apptainer.

AlphaFold

See CCR's AlphaFold container documentation for an example of running AlphaFold2.

Anaconda Python

CCR does not support running Anaconda natively in the HPC environment. Please do not install it in your home or project directory. We are aware of the fact that Anaconda is widely used in several domains and is useful for easy installations on a single-user laptop. However, Anaconda is not well suited for multi-user HPC clusters for the following reasons:

  • Makes wrong assumptions about the OS configuration and location of various system libraries
  • Not meant to keep several versions of the same package on the system
  • Distributes pre-compiled binaries and uses pre-configured compilation options which are often not optimal for the processor architectures we have on our cluster
  • Uses the $HOME directory for its installation and generates a huge number of files
  • Modifies the $HOME/.bashrc file, which can easily cause conflicts
  • May not be free for all users. Please refer to the Anaconda terms of service documentation

As an alternative, we suggest one of the following options for using and installing Python packages:
1. Use CCR's modules that already include many popular python packages
2. Create your own custom python module bundles using Easybuild.
3. Use a container with conda installed. We provide a simple Conda container example of building and customizing a container for conda in our ccr-examples repository. For more information about using containers on CCR's systems, see CCR's container documentation.

For more details please refer to our Python documentation or check out the "Using Python at CCR" course in UB Learns.

LS-DYNA

See CCR's LS-DYNA container documentation for an example of using LS-DYNA.

Perl

We provide a perl module which includes many pre-built CPAN modules. To see the complete list run:

$ module spider perl

Installing additional packages from CPAN can be done using the cpan tool, which must first be initialized correctly in order to install them in your home or projects space.

During the first execution of the command cpan the utility will ask you if you want to allow it to configure the majority of settings automatically. Respond yes.

$ module load gcc perl
$ cpan
...
Would you like me to configure as much as possible automatically? [yes]
...
What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
 [local::lib]
...

The cpan utility will offer to append a variety of environment variable settings to your .bashrc file, which you can agree to or set these manually. Before installing any Perl modules you will need to restart your shell for these new settings to take effect (logout/login).

Now you can use cpan to install packages:

$ module load gcc perl
$ cpan

cpan shell -- CPAN exploration and modules installation (v2.28)
Enter 'h' for help.

cpan[1]> install Chess
....

If you require other specific perl modules, we recommend you ask CCR to build them or create your own perl module bundles with easybuild.

Python

Several python modules are available for use. We encourage users to checkout these modules as they include lots of common scientific python packages.

module Included python packages
python-bare Bare python3 interpreter only
python python3 interpreter plus many commonly used modules
scipy-bundle beniget, Bottleneck, deap, gast, mpi4py, mpmath, numexpr, numpy, pandas, ply, pythran, scipy
tensorflow TensorFlow
pytorch PyTorch

If you require other python libraries not included within CCR's python modules, you can install them yourself but you MUST be careful in doing so. Instructions you may find online for installing python packages may not work the same in CCR's HPC environment. We provide extensive documentation and training guides for Python to ensure you have a successful experience. Which method you use will depend on your workflow and your needs. We have some suggestions:

R - The statistical computing and graphics application

Software Modules

ccrsoft/2023.01
Two R modules are provided in ccrsoft/2023.01: r and r-bundle-bioconductor, both of which include many pre-built R libraries. To see a complete list of R libraries and packages included with each module run the spider command:

$ module spider r
$ module spider r-bundle-bioconductor

ccrsoft/2024.04
Two R modules are provided in ccrsoft/2024.04: r and r-bundle-cran, both of which include many pre-built R libraries. To see a complete list of R libraries and packages included with each module run the spider command:

$ module spider r
$ module spider r-bundle-cran
$ R

You can install packages from CRAN using install.packages while running an interactive R session. For example:

> install.packages("ggplot2", repos="http://cran.r-project.org",
                   lib = "/projects/academic/yourgroup/$USER/software/$CCR_VERSION/rlibs")

To install a package that you downloaded, outside of the R environment, run:

$ R CMD INSTALL -l /projects/academic/[YourGroupName]/$USER/software/$CCR_VERSION/rlibs readr_2.1.3.tar.gz  

Don't want to specify the location each time?

Create a file named .Renviron in your home directory (or edit an existing one) and point R to use your alternate directory. Include the line (editing for your use case): R_LIBS_USER="/projects/academic/[YourGroupName]/[CCRusername]/software/[CCR_VERSION]/rlibs" Each time R starts it will use this library directory for installations and to search for existing installations.

Sometimes R library installations will fail with errors such as installation of package ‘library_name’ had non-zero exit status or similar. This is a result of the software trying to save temporary files where you do not have permission to write files. As a workaround, create a temporary directory within your home or project directory and point the R library installation to use it. As an example:

$ mkdir ~/tmp  
$ module load gcc openmpi r  
$ R 
> Sys.setenv(TMPDIR="/user/$USER/tmp")  
> install.packages("ggplot2", repos="http://cran.r-project.org", lib = "/projects/academic/[YourGroupName]/$USER/software/$CCR_VERSION/rlibs")  

If your research group requires many R libraries not already available in one of CCR's R installations, we recommend you ask CCR to build them or create your own custom R bundle with easybuild.

Bioconductor Containers

CCR provides 4 containers from Docker Hub that include R, RStudio, and Bioconductor libraries. These containers can be used on the command line in interactive or batch jobs. They can be found here:

/util/software/containers/x86_64
They are named the same as on Docker Hub and relate to Bioconductor's naming convention - starting with either tidyverse or ml-verse. These are available in the RStudio app in OnDemand as well.

RStudio

Multiple versions of RStudio are available within the available R installations and containers. In order to launch the RStudio GUI, you must do so using the RStudio app in OnDemand.

SAS

See here for an example of running SAS using Apptainer.