Skip to content

Software Available on Savio

Overview

Savio provides a variety of software installed by the system administrators and BRC consultants, including compilers, interpreters, and tools for statistical analysis, data visualization, bioinformatics, computational biology, and other sciences. You can access much of the software available on the Savio cluster using Environment Module commands. These commands allow you to display currently loaded and available software packages as well as to load and unload the packages and their associated runtime environments.

With the Rocky Linux 8 OS upgrade on Savio (July 2024), the Software Module Farm (SMF) is now managed by the Lmod Environment Module system to set the appropriate environmental variables in your shell needed to make use of the individual software packages. In addition to previously available module commands such as module avail, module show, module load, and module unload, a new useful command is now provided, module spider (see below), which helps in finding a software module with instructions on any additional modules that you may need to load before loading a particular module.

The Environment Module system allows users to manage their runtime environments dynamically on the Savio cluster. This is accomplished by loading and unloading modulefiles which contain the application specific information for setting a user’s environment, primarily the shell environment variables, such as PATH, LD_LIBRARY_PATH, etc. The module system is useful in managing potentially conflicting applications, as well as different versions of the same application, especially in a shared computing environment.

In addition to the software provided on the Savio cluster you are welcome to install your own software.

Accessing Software Using Environment Modules

All of the module commands begin with module and are followed by a subcommand. (In this list of commands, a vertical bar (|) means “or”, e.g., module add and module load are equivalent. You'll need to substitute actual modulefile names for modulefile, modulefile1, and modulefile2 in the examples below.)

  • module avail|av - List all available modulefiles in the current MODULEPATH (i.e. available to you).
  • module list - List modules loaded into your environment.
  • module add|loadmodulefile... - Load modulefile(s) into your environment.
  • module rm|unloadmodulefile... - Remove modulefile(s) from your environment.
  • module swap|switch [modulefile1]modulefile2- Switch loaded modulefile1 with modulefile2.
  • module show|displaymodulefile... - Display configuration information about the specified modulefile(s).
  • module overview|ov - Display the number of modules for each name.
  • module whatis [modulefile...] - Display summary information about the specified modulefile(s).
  • module purge - Unload all loaded modulefiles.

For more detailed usage instructions for the module command please run man module on the cluster.

Module Spider

With the Rocky Linux 8 OS upgrade on Savio and the newly configured (as of July 2024) Lmod Environment Module system, a new useful module command is now available to Savio users called module spider, whereby the command module spider SOFTWARE lists the module(s) named SOFTWARE and information on additional modules that you may need to load before SOFTWARE is available to load.

For example:

[username@ln003 ~]$ module spider hdf5

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  hdf5: hdf5/1.14.3
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

      gcc/10.5.0  openmpi/4.1.3
      gcc/10.5.0  openmpi/4.1.6
      gcc/11.4.0  openmpi/4.1.3
      gcc/11.4.0  openmpi/4.1.6
      gcc/13.2.0  openmpi/4.1.3
      gcc/13.2.0  openmpi/4.1.6
      intel-oneapi-compilers/2023.1.0  intel-oneapi-mpi/2021.10.0

    Help:
      HDF5 is a data model, library, and file format for storing and managing
      data. It supports an unlimited variety of datatypes, and is designed for
      flexible and efficient I/O and for high volume and complex data.

This means that you will need to load the appropriate compiler + mpi library combination before being able to load the corresponding hdf5 module. For example, you can do the following:

[username@ln003 ~]$ module load gcc/13.2.0
[username@ln003 ~]$ module load openmpi/4.1.6
[username@ln003 ~]$ module load hdf5
[username@ln003 ~]$ module list

Currently Loaded Modules:
  1) emacs/29.1   2) sq/0.1.0   3) gcc/13.2.0   4) openmpi/4.1.6   5) hdf5/1.14.3

Default Modules

Using module load command without specifying the version number loads the default version of the package. As of November 2022, the default version of a given package will generally be the most recent version that Savio has installed.

We strongly recommend that users explicitly provide the version number following the package name when using module load, e.g.,

module load gcc/13.2.0

This improves reproducibility and (for compiler-related modules) ensures that loaded compilers are compatible wth your code.

Modules Organized in a Hierarchical Structure

Savio uses a hierarchical structure to manage module dependencies, so some modulefiles will only be available after their dependent modulefile is loaded. For example, C libraries will only become available after their parent C compiler has been loaded. Here we can see the modules that are visible only after loading gcc:

[username@ln002 ~]$ module load gcc/13.2.0
[username@ln002 ~]$ module avail

-------------------------------------------------------------------------------- /global/software/rocky-8.x86_64/modfiles/gcc/13.2.0 --------------------------------------------------------------------------------
   antlr/2.7.7    cuda/12.2.1         (D)    geos/3.12.0    intel-oneapi-tbb/2021.10.0    openblas/0.3.24    openmpi/4.1.6  (D)
   cuda/11.8.0    cudnn/8.7.0.84-11.8        gsl/2.7.1      netlib-lapack/3.11.0          openmpi/4.1.3      udunits/2.2.28

---------------------------------------------------------------------------------- /global/software/rocky-8.x86_64/modfiles/langs -----------------------------------------------------------------------------------
   anaconda3/2024.02-1-11.4    java/22.0.1          openjdk/11.0.20.1_1-gcc-11.4.0        perl/5.38.0-gcc-11.4.0       python/3.11.6-gcc-11.4.0 (D)    r/4.4.0-gcc-11.4.0
   intelpython/3.9.19          julia/1.10.2-11.4    openjdk/17.0.8.1_1-gcc-11.4.0  (D)    python/3.10.12-gcc-11.4.0    r-spatial/4.4.0                 rust/1.70.0-gcc-11.4.0

---------------------------------------------------------------------------------- /global/software/rocky-8.x86_64/modfiles/tools -----------------------------------------------------------------------------------
   automake/1.16.5       eigen/3.4.0        gmake/4.4.1             lmdb/0.9.31                      matlab/r2024a            proj/9.2.1                      snappy/1.1.10        texlive/2024
   awscli/1.29.41        emacs/29.1  (L)    gnuplot/6.0.1           m4/1.4.19                        mercurial/6.4.5          protobuf/3.24.3                 spack/0.21.1         tmux/3.3a
   bazel/6.1.1           ffmpeg/6.0         gurobi/10.0.0           mathematica/13.0.1/13.0.1        nano/7.2                 qt/5.15.11                      sq/0.1.0      (L)    unixodbc/2.3.4
   cmake/3.27.7          gdal/3.7.3         imagemagick/7.1.1-11    matlab/r2022a             (D)    ninja/1.11.1             rclone/1.63.1                   swig/4.1.1           vim/9.0.0045
   code-server/4.12.0    glog/0.6.0         leveldb/1.23            matlab/r2023a                    parallel/20220522 (D)    rstudio-server/2024.04.2-764    tcl/8.6.12

-------------------------------------------------------------------------------- /global/software/rocky-8.x86_64/modfiles/compilers ---------------------------------------------------------------------------------
   gcc/10.5.0    gcc/11.4.0 (D)    gcc/13.2.0 (L)    intel-oneapi-compilers/2023.1.0    llvm/17.0.4    nvhpc/23.9


  Where:
   L:  Module is loaded
   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".

To view a list of all modules including those only visible after loading their dependencies enter the following command:

find /global/software/rocky-8.x86_64/modfiles -type d -exec ls -d {} \;
Using this command, in combination with the grep command, can also be used to search for and find individual software modules, as in the following example:

[username@ln002 ~]$ find /global/software/rocky-8.x86_64/modfiles -type d -exec ls -d {} \; | grep hdf5
/global/software/rocky-8.x86_64/modfiles/openmpi/4.1.6-fvizfdj/gcc/13.2.0/hdf5
/global/software/rocky-8.x86_64/modfiles/openmpi/4.1.3-lm66wba/gcc/10.5.0/hdf5
/global/software/rocky-8.x86_64/modfiles/openmpi/4.1.6-xyjyowu/gcc/10.5.0/hdf5
/global/software/rocky-8.x86_64/modfiles/openmpi/4.1.3-o4cey66/gcc/11.4.0/hdf5
/global/software/rocky-8.x86_64/modfiles/openmpi/4.1.3-le36rfg/gcc/13.2.0/hdf5
/global/software/rocky-8.x86_64/modfiles/openmpi/4.1.6-kk4tbvr/gcc/11.4.0/hdf5
/global/software/rocky-8.x86_64/modfiles/intel-oneapi-mpi/2021.10.0-fyiu4qb/oneapi/2023.1.0/hdf5

Compare this with the module spider hdf5 example in an earlier section of this page on the use of the module spider command.

Example Usage

It can be helpful to try out each of the following examples in sequence to more fully understand how environment modules work. Please note that the output here may vary from your own depending on module updates and your particular access privileges.

[casey@n0000 ~]$ module avail
---- /global/software/sl-7.x86_64/modfiles/langs ----  
clang/3.9.1  cuda/8.0  gcc/4.8.5  gcc/6.3.0  java/1.8.0_121  python/2.7  python/3.6  r/3.4.2
---- /global/software/sl-7.x86_64/modfiles/tools ----  
arpack-ng/3.4.0  gflags/2.2.0  gv/3.7.4  lmdb/0.9.19  nano/2.7.4   qt/5.4.2  texlive/2016
---- /global/software/sl-7.x86_64/modfiles/apps ----  
bio/blast/2.6.0  math/octave/current  ml/mxnet/0.9.3-py35  ml/theano/current-py36 
...
[casey@n0000 ~]$ module list
No Modulefiles Currently Loaded.
[casey@n0000 ~]$ module load intel
[casey@n0000 ~]$ module list
Currently Loaded Modulefiles:  
  1) intel/2016.4.072
[casey@n0000 ~]$ module load openmpi mkl
[casey@n0000 ~]$ module list
Currently Loaded Modulefiles:  
  1) intel/2016.4.072   3) mkl/2016.4.072  
  2) openmpi/2.0.2-intel
[casey@n0000 ~]$ module unload openmpi
[casey@n0000 ~]$ module list
Currently Loaded Modulefiles:  
  1) intel/2016.4.072   2) mkl/2016.4.072
[casey@n0000 ~]$ module switch mkl lapack  
[casey@n0000 ~]$ module list
Currently Loaded Modulefiles:  
  1) intel/2016.4.072   2) lapack/3.8.0-intel
[casey@n0000 ~]$ module show mkl
-------------------------------------------------------------------  
/global/software/sl-7.x86_64/modfiles/intel/2016.4.072/mkl/2016.4.072:

module-whatis    This module sets up MKL 2016.4.072 in your environment.  
setenv           MKL_DIR /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl  
setenv           MKLROOT /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl  
prepend-path     CPATH /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/include  
prepend-path     CPATH /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/include/fftw  
prepend-path     FPATH /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/include  
prepend-path     FPATH /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/include/fftw  
prepend-path     INCLUDE /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/include  
prepend-path     INCLUDE /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/include/fftw  
prepend-path     LIBRARY_PATH /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/lib/intel64_lin  
prepend-path     LD_LIBRARY_PATH /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/lib/intel64_lin  
prepend-path     MIC_LIBRARY_PATH /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/lib/intel64_lin_mic  
prepend-path     MIC_LD_LIBRARY_PATH /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/lib/intel64_lin_mic  
prepend-path     SINK_LD_LIBRARY_PATH /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/lib/intel64_lin_mic  
prepend-path     NLSPATH /global/software/sl-7.x86_64/modules/langs/intel/2016.4.072/mkl/lib/intel64_lin/locale/en_US  
-------------------------------------------------------------------`
[casey@n0000 ~]$ module whatis mkl
mkl                  : This module sets up MKL 2016.4.072 in your environment.
[casey@n0000 ~]$ module purge
[casey@n0000 ~]$ module lis
No Modulefiles Currently Loaded.
[casey@n0000 ~]$ module avail
---- /global/software/sl-7.x86_64/modfiles/langs ----  
clang/3.9.1  cuda/8.0  gcc/4.8.5  gcc/6.3.0  java/1.8.0_121  python/2.7  python/3.6  r/3.4.2
---- /global/software/sl-7.x86_64/modfiles/tools ----  
arpack-ng/3.4.0  gflags/2.2.0  gv/3.7.4  lmdb/0.9.19  nano/2.7.4   qt/5.4.2  texlive/2016
---- /global/software/sl-7.x86_64/modfiles/apps ----  
bio/blast/2.6.0  math/octave/current  ml/mxnet/0.9.3-py35  ml/theano/current-py36 

Bioinformatics Software

All Savio users can use the bioinformatics software available system-wide, using the commands discussed in previous sections and looking for bio/XYZ (e.g., bio/bowtie2) in the /global/software/rocky-8.x86_64/modfiles/app set of modules.

Software Provided on Savio

Research IT provides and maintains a set of broadly used and general purpose software modules. Our aim is to provide an ecosystem that most users can rely on to accomplish their research and studies.

For a comprehensive and up-to-date list of software provided on the cluster, run the module avail command as described above, or find /global/software/rocky-8.x86_64/modfiles -type d -exec ls -d {} \;.

Category Application/Library Name
Development Tools
Editor/IDE Emacs, Vim, Nano, cmake, cscope, ctags
SCM Git, Mercurial
Debugger/Profiler/Tracer GDB, gprof, Valgrind, TAU, Allinea DDT
Languages/Platforms GCC, Intel, Perl, Python, Java, Boost, CUDA, UPC, Open MPI, TBB, MPI4Py, Python / IPython, R, MATLAB, Octave, Julia
Math Libraries MKL, ATLAS, FFTW, FFTW3, GSL, LAPACK, ScaLAPACK, NumPy, SciPy, Eigen
IO Libraries HDF5, NetCDF, NCO, NCL
Data processing, Visualization, and Machine Learning Tools
Data Processing/Visualization Gnuplot, Grace, Graphviz, ImageMagick, MATLAB, Octave, ParaView, Python / IPython, R, VisIt, VMD, yt, Matplotlib
Machine Learning Tensorflow, Caffe, H2O, MXNet, Theano, Torch, Scikit-learn
Bioinformatics BLAST, Bowtie, Picard, SAMtools, VCFtools
Typesetting and Publishing Tools
Typesetting TeX Live, Ghostscript, Doxygen

Requesting New Modules or Updates

Software installed within the Environment Module system must meet the requirements specified under "Installing Software". Modules are updated at most biannually, and we request that you install and maintain packages that require more frequent updates yourself.

To request additional software be installed or existing packages to be upgraded please use our Software Request Form. Expect to be contacted regarding your request within three business days (except academic holidays).