Software modules make it easy for you to use software installed on CS servers. We provide a wide range of software across all our servers so that you don't have to install software on your own. We also offer different versions of software, letting users choose which they want to use.
Software modules modify Environment Variables unique to your shell. Environment variables include the variable PATH, which are directory path(s) to executables to use when typing a command in your terminal. For example, when you log in via SSH, variables such as the PATH variable are set or updated to contain the location(s) of various executable commands such as vim, sinfo, and others.
Each time you load a module, this variable and others are updated to make additional commands or libraries available to your shell.
If software is needed but is not listed, please send an email to cshelpdesk@virginia.edu with the following information:
GCCCore and GCC, renaming to gcc/<version>
If software is required but is not listed, please send an email to cshelpdesk@virginia.edu.
For modules that list a toolchain other than system, the toolchain module(s) must be loaded first before loading the listed module.
For example, to load boost/1.83.0 the following must be done, all three variations accomplish the same thing
Note, gcc/11.4.0 is loaded by default when a version is not specified
// load default versions ~$ module load gcc boost OR // load specific version ~$ module load gcc ~$ module load boost/1.83.0 OR // load default versions using shorthand ~$ ml gcc boost
| Software / Module Name | Toolchain |
|---|---|
| apptainer/1.3.6 | system |
| ant/1.10.14-Java-21 | system |
| antlr/4.7 | system |
| antlr/4.10.1 | system |
| antlr/4.12.0 | system |
| boost/1.83.0 | gcc 11.4.0 |
| clang/15.0.5 | gcc 11.4.0 |
| clang 18.1.8 | gcc 14.2.0 |
| cuda/12.8.1 | system |
| cudnn/9.10.1.4-CUDA-12.8.1 | system |
| doxygen/1.9.5 | gcc 11.4.0 |
| edb/1.5.0 | system |
| eigen/3.4.0 | gcc 11.4.0 |
| emacs/28.2 | gcc 11.4.0 |
| ffmpeg/6.0 | gcc 11.4.0 |
| foss/2024a | system |
| gcc/11.4.0 | system |
| gcc/12.4.0 | system |
| gcc/14.2.0 | system |
| gcloud/472.0.0 | system |
| gdb/13.2 | gcc 11.4.0 |
| fio/3.34 | gcc 11.4.0 |
| git/2.42.0 | gcc 11.4.0 |
| go/1.21.1 | system |
| graphviz/8.1.0 | gcc 11.4.0 |
| gurobi/11.0.0 | system |
| java/21 | system |
| java/23 | system |
| llvm/16.0.6 | gcc 11.4.0 |
| llvm/18.1.8 | gcc 14.2.0 |
| lua/5.4.4 | gcc 11.4.0 |
| maven/3.9.7 | system |
| matlab/R2022b | system |
| miniforge/25.3.1-py12 | system |
| nano/7.2 | gcc 11.4.0 |
| nccl/2.26.6-CUDA-12.8.1 | system |
| nvhpc/25.3-CUDA-12.8.1 | system |
| nvtop/3.1.0 | gcc 11.4.0 |
| nsight-systems/2024.7.1 | system |
| openmpi/4.1.4 | gcc 11.4.0 |
| papi/7.0.1 | gcc 11.4.0 |
| perf/6.11 | system |
| php/8.1.1 | system |
| php/8.1.7 | system |
| php/8.3.12 | system |
| python/2.7.18 | gcc 11.4.0 |
| python/3.12.3 | gcc 11.4.0 |
| python/3.12.3 | gcc 14.2.0 |
| R/4.4.2 | foss 2024a |
| rstudio-server/2024.12.0+467 | foss 2024a |
| rust/1.75.0 | gcc 11.4.0 |
| ruby/3.3.0 | gcc 11.4.0 |
| sbt/1.6.2-Java-21 | system |
| scons/4.5.2 | gcc 11.4.0 |
| sqlite/3.38.3 | gcc 11.4.0 |
| sqlite/3.50.1 | gcc 14.2.0 |
| swig/4.1.1 | gcc 11.4.0 |
| tmux/3.4 | system |
| texlive/20230313 | gcc 11.4.0 |
| verilator/5.002 | system |
| verilator/5.028 | system |
| vscode/1.88.1 | system |
| vtune/2024.3.0 | system |
compinit: function definition file not found~$ unset FPATH~$ zsh~$ source /etc/profile.d/modules.sh (this may not be necessary depending on your zsh configurations)module command not found is displayed~$ source /etc/profile.d/modules.sh in your terminal (including in VSCode)~$ module purge before loading software or when switching modules is recommended. This ensures dependency modules are unloaded from other software(s) and only the software you want is loaded(D) when using ~$ module availexport command--ignore_cache when executing module commands if you're using the previous stack~$ export MODULEPATH=/sw/ubuntu/modulefiles_old/core:/sw/ubuntu/modulefiles_old/toolchains:/sw/ubuntu/custom/modulefiles:/sw/ubuntu/licensed/modulefiles
~$ module --ignore_cache load <software name>/<version>
matlab, gurobi, etc.)In January of 2025, the CS department is transitioning the backend software used for interacting with modules from Environment Modules to LMOD (LMOD Homepage), and implementing EasyBuild (EasyBuild Homepage) for maintaining modules.
Modules are compiled using a toolchain such as gcc, the system default (i.e. what the server has available), or others. This means that modules compiled using a toolchain will not be available (i.e. won't be shown with module avail) until the toolchain has been loaded.
For example, openmpi will not show up in the module avail output until the appropriate GCC toolchain is loaded. Required modules can be found by using the module spider <module name>/<version> as shown below.
In-depth information about module usage and interaction can be found (here).
To list available modules
module avail
To load a default module (no version specified)
module load <module name>
To load a specific version, include the version suffix
module load <module name>/1.2.3
To search for modules and list required dependency modules to load certain modules
module spider <module name>/<version>
For example, to load python, first search for what python versions are available
module spider python
----------------------------
python:
----------------------------
Description:
Python is a programming language that lets you work more quickly and integrate your systems more effectively.
Versions:
python/2.7.18
python/3.12.3
Then, search for required modules to load first before loading a specific version of python
module spider python/3.12.3
----------------------------
python: python/3.12.3
----------------------------
... output omitted ...
You will need to load all module(s) on any one of the lines below before the "python/3.12.3" module is available to load.
gcc/11.4.0
gcc/14.2.0
Thus, gcc/11.4.0 (which is the default) is required to load python/3.12.3. Alternatively, gcc/14.2.0 also provides the module python/3.12.3, so either toolchain may be used depending on your needs
module load gcc/11.4.0 module load python/3.12.3
Alternatively, you can load the required module and the module itself on one line
module load gcc/11.4.0 python/3.12.3
To load the default versions, simply omit the version from the module
module load gcc python
To show all currently loaded modules
module list
To show information about a module
module whatis <module name & version>
To unload a module
module list command, which are not unloaded automatically. It's recommended to purge (unload all) modules insteadmodule unload <module name & version>
To purge (unload all) loaded modules
module purge
Before submitting a job, it is recommended to unload all loaded modules using module purge before and during the job launch, and then load them in the job script or at the command line for an interactive job.
This ensures that no unexpected modules are carried forward into your job from your shell's environment variables.
#!/bin/bash #SBATCH --gres=gpu:1 #SBATCH --mem=16000 #SBATCH -t 04:00:00 #SBATCH -p gpu #SBATCH --mail-type=begin,end #SBATCH --mail-user=<computingID>@virginia.edu module purge module load gcc python python3 <my python program>
For most Python related packages (i.e. pip install …), it is often more applicable to utilize a virtual environment. This can be done with Conda or venv. The former requires loading an miniforge module, and the latter requires the python3 module.
After logging into portal
abc1de@portal01:~$ module load miniforge abc1de@portal01:~$ conda create -n mynewenvironment
This will by default create an environment named mynewenvironment in ~/abc1de/.conda/envs/.
You can also specify a path where an environment should be created
abc1de@portal01:~$ conda create -n mynewenvironment --prefix /p/myprojectdirectory/condaenvs
Packages can be specifed when creating an environment
abc1de@portal01:~$ conda create -n mynewenvironment matplotlib=3.5 numpy=1.21
Environments can be created using a .yml file as well
abc1de@portal01:~$ conda env create -f /<path>/env.yml
To list available environments
abc1de@portal01:~$ conda env list OR abc1de@portal01:~$ conda info --envs
To activate an environment (if the name is shown with conda env list)
abc1de@portal01:~$ conda activate mynewenvironment
To activate an environment by path
abc1de@portal01:~$ conda activate /<path>/mycustompathenv
After logging into portal, load the python module
abc1de@portal01:~$ module load python
To create a python3 venv envrionment
abc1de@portal01:~$ python3 -m venv /<path>/myvenv
To activate a python3 venv environment
abc1de@portal01:~$ source /<path>/myvenv/bin/activate
Commands such as pip3 can now be used within the envrionment
abc1de@portal01:~$ which pip3 /<path>/myenv/bin/pip3 abc1de@portal01:~$ pip3 install <package name>
A Jupyter Notebook interface can be started using your own virtual conda environment, or using the one installed within the miniforge module.
Accessing the interface from your computer requires being on-grounds (connected to eduroam) or using a UVA VPN. Another option is to use a NoMachine Virtual Linux Desktop.
Once you have the appropriate network connectivity as described, you can then load the miniforge module and start a notebook
~$ module load miniforge ~$ jupyter notebook --no-browser --ip=$(hostname -A)
Find the URL link given to you by the Jupyter Notebook Server to access the interface in your browser
... output omitted ...
Or copy and paste one of these URLs:
http://hostname.cs.Virginia.EDU:8888/tree?token=12345689abcdefg
You can stop the notebook in your terminal by entering ctrl + c.
Apptainer is the supported software for using containers throughout the CS environment. ocker is no longer supported in the CS environment.
Advantages of Apptainer
For more information on Apptainer, including building containers, see our (Apptainer wiki page).