Loading Software¶
You do not install software on the clusters the same way you would on a local system. Instead, the cluster provides software as self-contained packages called modules, which you can load and unload. The clusters already offer a wide variety of modules, but you (or Research Computing) can add more. If you need specific software, send an email to researchcomputing@boisestate.edu with the software name, the required version, and the reason you need it.
On a more technical side, modules manipulate environment variables. An environment variable is a shell variable that stores information. For example, the PATH variable stores directory paths to executables, while LD_LIBRARY_PATH stores directory paths to library files. When you load a module, it adds relevant file paths to these variables, which allows the system to locate and run the software in that module.
Use these commands for the module system:
module load (name of module)– Load a module into your environment.module unload (name of module)– Unload a module from your environment.module av– List all available modules.module li– List all currently loaded modules.module purge– Unload all currently loaded modules.
Sometimes, you build software in your home or scratch space for convenience. When Research Computing receives your software request, we work with you to build a solution that meets your needs.
BSURC-Provided Canonical Builds of Software¶
Starting in 2022, Boise State University Research Computing began providing canonical builds of commonly used software packages, including compilers, MPI stacks, libraries, and applications. Older software installations remain available, but you should use the canonical builds going forward because they include newer versions and maintain consistent linking, especially for software with large dependency graphs.
The cluster provides these canonical builds through meta-modules (modules that make other modules available) in the following categories:
base¶
The base module set includes compilers, MPI stacks built with those compilers, and tools for building software (e.g., CMake). These versions are significantly newer than those provided by the operating system. Always use these for non-trivial builds. If you plan to build an HPC package, start by loading the base modules.
libraries¶
The libraries module set provides optimized builds of commonly used libraries, such as FFTW, HDF5, and NETCDF, in a hierarchical format:
<library>/<version>/<mpi>/<mpi-version>/<compiler>/<compiler-version>
applications¶
The applications in this set typically build on top of the libraries module and use tools in the base module. They use RPATH to locate their dependencies, which means LD_LIBRARY_PATH cannot override them (by design). However, advanced users can pre-empt these settings with the LD_PRELOAD mechanism.
misc¶
Not all software fits neatly into other categories, so this set captures everything else. Research Computing still builds these packages as consistently as possible against the same dependencies.
Using the Canonical Builds¶
First, load the meta-module to see which builds are available. On Borah, these modules have names like borah-base or borah-libraries.
For example, to find GROMACS on Borah, you might run:
module load borah-applications
module avail gromacs
------------------ /cm/shared/software/modules/borah-applications -------------------
gromacs/2021.5/openmpi/4.1.3/gcc/12.1.0 gromacs/2022.3/openmpi/4.1.3/gcc/12.1.0
gromacs/2022.3/mpich/3.4.3/gcc/12.1.0
module load gromacs/2022.3/openmpi/4.1.3/gcc/12.1.0
which gmx_mpi
/cm/shared/software/spack/opt/spack/linux-centos7-cascadelake/gcc-12.1.0/gromacs-2022.3-glpifvpytlwhdmxdby2ldmi3unjcigvr/bin/gmx_mpi
ldd $(which gmx_mpi)
borah-libraries module.