Our clusters provide a number of software packages to users of the system via the module
command.
Link to section 'Environment Management with the Module Command' of 'Environment Management with the Module Command' Environment Management with the Module Command
The module command is the preferred method to manage your processing environment. With this command, you may load applications and compilers along with their libraries and paths. Modules are packages that you load and unload as needed.
Please use the module command and do not manually configure your environment, as staff may make changes to the specifics of various packages. If you use the module command to manage your environment, these changes will not be noticeable.
Link to section 'Hierarchy' of 'Environment Management with the Module Command' Hierarchy
Many modules have dependencies on other modules. For example, a particular openmpi module requires a specific version of the Intel compiler to be loaded. Often, these dependencies are not clear to users of the module, and there are many modules which may conflict. Arranging modules in a hierarchical fashion makes this dependency clear. This arrangement also helps make the software stack easy to understand - your view of the modules will not be cluttered with a bunch of conflicting packages.
Your default module view on Gautschi will include a set of compilers and a set of basic software that has no dependencies (such as Matlab and Fluent). To make software available that depends on a compiler, you must first load the compiler, and then software which depends on it becomes available to you. In this way, all software you see when doing module avail is completely compatible with each other.
Link to section 'Using the Hierarchy' of 'Environment Management with the Module Command' Using the Hierarchy
Your default module view on Gautschi will include a set of compilers and a set of basic software that has no dependencies (such as Matlab and Fluent).
To see what modules are available on this system by default:
$ module avail
To see which versions of a specific compiler are available on this system:
$ module avail gcc
$ module avail intel
To continue further into the hierarchy of modules, you will need to choose a compiler. As an example, if you are planning on using the Intel compiler you will first want to load
the Intel compiler:
$ module load intel
With intel
loaded, you can repeat the avail
command, and at the bottom of the output you will see the section of additional software that the intel module provides:
$ module avail
Several of these new packages also provide additional software packages, such as MPI libraries. You can repeat the last two steps with one of the MPI packages such as openmpi
and you will have a few more software packages available to you.
If you are looking for a specific software package and do not see it in your default view, the module command provides a search function for searching the entire hierarchy tree of modules without the need for you to manually load
and avail
on every module.
To search for a software package:
$ module spider openmpi
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
openmpi:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Versions:
openmpi/4.1.6
openmpi/5.0.5
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
For detailed information about a specific "openmpi" package (including how to load the modules) use the module's full name.
Note that names that have a trailing (E) are extensions provided by other modules.
For example:
$ module spider openmpi/5.0.5
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
This will search for the openmpi
software package. If you do not specify a specific version of the package, you will be given a list of versions available on the system. Select the version you wish to use and spider
that to see how to access the module:
$ module spider openmpi/5.0.5
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
openmpi: openmpi/5.0.5
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
You will need to load all module(s) on any one of the lines below before the "openmpi/5.0.5" module is available to load.
gcc/11.4.1
gcc/14.1.0
Help:
An open source Message Passing Interface implementation. The Open MPI
Project is an open source Message Passing Interface implementation that
is developed and maintained by a consortium of academic, research, and
industry partners. Open MPI is therefore able to combine the expertise,
technologies, and resources from all across the High Performance
Computing community in order to build the best MPI library available.
Open MPI offers advantages for system and software vendors, application
developers and computer science researchers.
The output of this command will instruct you that you can load this module directly, or in the case of the above example, that you will need to first load a module or two. With the information provided with this command, you can now construct a load
command to load a version of OpenMPI into your environment:
$ module load gcc/14.1.0 openmpi/5.0.5
Some user communities may maintain copies of their domain software for others to use. For example, the Purdue Bioinformatics Core provides a wide set of bioinformatics software for use by any user of RCAC clusters via the bioinfo
module. The spider
command will also search this repository of modules. If it finds a software package available in the bioinfo module repository, the spider
command will instruct you to load the bioinfo module first.
Link to section 'Load / Unload a Module' of 'Environment Management with the Module Command' Load / Unload a Module
All modules consist of both a name and a version number. When loading a module, you may use only the name to load the default version, or you may specify which version you wish to load.
For each cluster, RCAC makes a recommendation regarding the set of compiler, math library, and MPI library for parallel code. To load the recommended set:
$ module load rcac
To verify what you loaded:
$ module list
To load the default version of a specific compiler, choose one of the following commands:
$ module load gcc
$ module load intel
To load a specific version of a compiler, include the version number:
$ module load gcc/11.2.0
When running a job, you must use the job submission file to load on the compute node(s) any relevant modules. Loading modules on the front end before submitting your job makes the software available to your session on the front-end, but not to your job submission script environment. You must load the necessary modules in your job submission script.
To unload a compiler or software package you loaded previously:
$ module unload gcc
$ module unload intel
$ module unload matlab
To unload all currently loaded modules and reset your environment:
$ module purge
Link to section 'Show Module Details' of 'Environment Management with the Module Command' Show Module Details
To learn more about what a module does to your environment, you may use the module show command.
$ module show matlab
Here is an example showing what loading the default Matlab does to the processing environment:
-------------------------------------------------------------------------------------------------------------------------------------------
/opt/spack/modulefiles/Core/matlab/R2022a.lua:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
whatis("Name : matlab")
whatis("Version : R2022a")
...
setenv("MATLAB_HOME","/apps/spack/gautschi/apps/matlab/R2022a-gcc-8.5.0-u54n6sa")
setenv("RCAC_MATLAB_ROOT","/apps/spack/gautschi/apps/matlab/R2022a-gcc-8.5.0-u54n6sa")
setenv("RCAC_MATLAB_VERSION","R2022a")
setenv("MATLAB","/apps/spack/gautschi/apps/matlab/R2022a-gcc-8.5.0-u54n6sa")
setenv("MLROOT","/apps/spack/gautschi/apps/matlab/R2022a-gcc-8.5.0-u54n6sa")
setenv("ARCH","glnxa64")
append_path("PATH","/apps/spack/gautschi/apps/matlab/R2022a-gcc-8.5.0-u54n6sa/bin/glnxa64:/apps/spack/gautschi/apps/matlab/R2019a-gcc-4.8.5-jg35hvf/bin")
append_path("CMAKE_PREFIX_PATH","/apps/spack/gautschi/apps/matlab/R2022a-gcc-8.5.0-u54n6sa/")
append_path("LD_LIBRARY_PATH","/apps/spack/gautschi/apps/matlab/R2022a-gcc-8.5.0-u54n6sa/runtime/glnxa64:/apps/spack/gautschi/apps/matlab/R2022a-gcc-8.5.0-u54n6sa/bin/glnxa64")
For more information about Lmod: