Software Support Overview
The HKUST HPC clusters provide a comprehensive suite of pre-installed software modules. We utilize Spack for package management and Lmod for environment module management, ensuring a flexible and reproducible research environment.
Our software stack is organized into a three-level hierarchy:
Core (Root): Compilers, Interpreters (Python, R), Utilities, and GPU Drivers.
Compiler Dependent: Libraries and tools built with a specific compiler (e.g., FFTW built with GCC).
MPI Dependent: Parallel applications built with a specific Compiler and MPI combination (e.g., HDF5 built with GCC and OpenMPI).
Note
Access to the latest software requires activating the ‘Edge’ Spack instance. See below for details.
Spack Instances
We maintain multiple Spack instances to provide different sets of software packages:
Characteristic |
Default Instance |
Edge Instance |
|---|---|---|
Date of Build |
Mid 2024 |
Weekly updates |
Software Ecosystem |
Basic |
Large, multi-versioned |
CUDA Support |
✓ |
✓ |
Lmod Hierarchy |
Flat |
Hierarchical (Compiler + MPI) |
Spack Version |
0.22.0 (May 2024) |
0.23.x (Mar 2025) with package backports |
Status |
Deprecated (Frozen) |
Semi-stable |
Spack Chaining |
✓ |
⚠ [1] |
Compatibility |
Standalone |
Forward-compatible |
$SPACK_ROOT |
HPC4:
/opt/shared/spackSuperpod: ✗
|
HPC4:
/opt/shared/.spack-edgeSuperpod:
/scratch/spack/2025 |
Tip
We recommend using the edge instance for all new work as it provides the latest software packages and is forward-compatible with future updates.
The default instance is deprecated and maintained only for backward compatibility.
Activating a Spack Instance
The default instance, when available, is automatically activated upon login on HPC4.
To activate the alternative instance, source its setup script:
# Acknowledge the Terms of Service and activate an alternative spack instance
source "${SPACK_ROOT}/dist/bin/setup-env.sh"
Note
The first-time activation includes a bootstrapping process that may take a few minutes. Subsequent activations will be much faster.
When activating an alternative Spack instance for the first time, you’ll see similar output to below bootstrapping the Spack instance.
Note
It is normal to have some warnings during bootstrap shown below, please ignore these warnings as they do not affect the bootstrap process.
Warning: error detecting "msvc" ...
==> Warning: The default behavior of tarfile extraction ...
==> Warning: lib/libgfortran.so.5
libz.so.1 => not found
Example Activation Output
[user@login2 ~]$ source /opt/shared/.spack-edge/dist/bin/setup-env.sh
You are using non-default spack instances.
Please do not mix packages installed from different spack instances.
This script will unload all other spack instances and modules automatically.
==> Checking spack config and cache paths
Spack instance root: /opt/shared/.spack-edge
Shared apps and modules: /opt/shared/.spack-edge/dist
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Your spack config: /home/user/.spack-edge
Your spack apps: /home/user/.spack-edge
Tmpdir (TMPDIR and TMP): /tmp/user-XXXX
==> Activate spack instance [edge]? [y/N] y
i=> You can use '-y' option to skip this confirmation next time.
==> First launch: bootstrapping spack [edge]
This may take a few minutes, please wait...
==> First launch: bootstrapping spack [dev]
This may take a few minutes, please wait...
==> Warning: error detecting "msvc" from prefix /opt/shared/.spack-dev/opt/spack/linux-rocky9-x86_64_v4/gcc-11.5.0.spack/intel-oneapi-compilers-2025.0.4-sn26au2eyxigpsati3gb5oxmtku6s5uo/compiler/2025.0/bin: [KeyError: 'cxx']
==> Fetching https://ghcr.io/v2/spack/bootstrap-buildcache-v1/blobs/sha256:16f27dafb233a9aff14adff75112d0a8b2e03492f796f12101785c02950aa7f6
==> Fetching https://ghcr.io/v2/spack/bootstrap-buildcache-v1/blobs/sha256:b76a4eaef54b24d0ea9b8dfa9392f7ab519f918ae7e1a8bb919539d9adeddbcb
==> Installing "gcc-runtime@=10.2.1 build_system=generic arch=linux-centos7-x86_64 %gcc@=10.2.1" from a buildcache
==> Warning: The default behavior of tarfile extraction has been changed to disallow common exploits (including CVE-2007-4559). By default, absolute/parent paths are disallowed and some mode bits are cleared. See https://access.redhat.com/articles/7004769 for more details.
==> Warning: lib/libgfortran.so.5
libz.so.1 => not found
dependencies:
==> Fetching https://ghcr.io/v2/spack/bootstrap-buildcache-v1/blobs/sha256:5367a0d038a87532fbbe373da31502bd32e399cc113343f403ebbc9d8ca7d552
==> Fetching https://ghcr.io/v2/spack/bootstrap-buildcache-v1/blobs/sha256:79dfb7064e7993a97474c5f6b7560254fe19465a6c4cfc44569852e5a6ab542b
==> Installing "patchelf@=0.17.2 build_system=autotools arch=linux-centos7-x86_64 %gcc@=10.2.1" from a buildcache
==> Fetching https://ghcr.io/v2/spack/bootstrap-buildcache-v1/blobs/sha256:82ec278bef26c42303a2c2c888612c0d37babef615bc9a0003530e0b8b4d3d2c
==> Fetching https://ghcr.io/v2/spack/bootstrap-buildcache-v1/blobs/sha256:0c5831932608e7b4084fc6ce60e2b67b77dab76e5515303a049d4d30cd772321
==> Installing "clingo-bootstrap@=spack~docs+ipo+optimized+python+static_libstdcpp build_system=cmake build_type=Release generator=make patches=bebb819,ec99431 arch=linux-centos7-x86_64 %gcc@=10.2.1" from a buildcache
==> Spack [edge] environment is ready
For non-interactive shells (e.g., in batch scripts), use the -y flag to avoid prompts
# Non-interactive activation, do not ask for input
source /opt/shared/.spack-edge/dist/bin/setup-env.sh -y
After sourcing, you can verify the active instance:
# Check which Spack instance is active
echo $SPACK_VARIANT
Caution
Do not add Spack activation to your ~/.bashrc or ~/.bash_profile. Activating Spack automatically may cause slow login and compatibility issues with SLURM batch jobs.
Best practice: Activate Spack on-demand when you need to use software modules, or at the beginning of SLURM job scripts. For batch scripts, always use the -y flag to skip confirmation prompts:
# In SLURM job scripts
source /opt/shared/.spack-edge/dist/bin/setup-env.sh -y
module load python/3.12.9
# ... rest of your job script
Spack Environment Variables
When a Spack instance is activated, we configure Spack to use certain paths and set a number of environment variables.
Variable |
Description |
|---|---|
|
Root directory of the active Spack instance |
|
Name of the active instance |
|
Python interpreter used by Spack |
|
System-level Spack configuration directory |
|
User-specific Spack configuration directory |
|
User-specific Spack cache directory |
See also
For more information about Spack, refer to the official documentation: https://spack.readthedocs.io/en/latest/
Lmod Modules
Lmod modules are provided by the Spack instance, so the available modules depend on which instance is active.
Tip
Check that your desired Spack instance is active before using module commands.
Loading and managing modules
To load a specific software module, use the module command:
# List available modules
module avail
# Search for a specific module across all levels
module spider netcdf-c
# Get detailed information about a specific module
#module spider python/<version>-<hash>
# Load a specific module (e.g., Python 3.12)
module load python/3.12
# Unload a specific module
module unload python
# Unload all modules
module purge
Important
Do not include the 7-digit hash suffix when loading modules (e.g., use python/3.12.9 instead of python/3.12.9-abc1234). The hash may change when packages are rebuilt, which would break your scripts.
Understanding the Lmod Hierarchy
We adopt a hierarchical module system where loading a compiler or MPI library reveals additional modules built with that toolchain.
Example workflow:
Initially, you see only core modules:
$ module avail ---- Core Modules ---- gcc/14.2.0 intel-oneapi-compilers/2025.0.4 python/3.12.9 ...
After loading a compiler, compiler-dependent modules become available:
$ module load intel-oneapi-compilers/2025.0.4 $ module avail ---- Core Modules ---- ... ---- /opt/shared/.spack-edge/share/spack/lmod/linux-rocky9-x86_64/oneapi/2025.0.4 ---- fftw/3.3.10 openmpi/4.1.8 intel-oneapi-mpi/2021.14.2 openmpi/5.0.6 (D) ...
After loading an MPI library, MPI-dependent modules appear:
$ module load openmpi/5.0.6 $ module avail ---- Core Modules ---- ... ---- /opt/shared/.spack-edge/.../oneapi/2025.0.4 ---- ... ---- /opt/shared/.spack-edge/.../oneapi/2025.0.4/openmpi/5.0.6 ---- hdf5/1.14.5 netcdf-c/4.9.2 parallel-netcdf/1.12.3 scalapack/2.2.0 ...
This hierarchy ensures you’re using compatible versions of libraries built with the same compiler and MPI combination.
See also
For more information about Lmod, refer to the official documentation: https://lmod.readthedocs.io/en/latest/
SLURM Integration
When submitting batch jobs to SLURM, a typical workflow is to
activate the Spack instance non-interactively
load the required modules
continue your program settings and run your program
This example demonstrates the hierarchical module system: first load the compiler, then the MPI implementation, and finally any MPI-dependent libraries like NetCDF.
#!/bin/bash
##SBATCH ...
# Activate Spack instance (use -y flag to skip prompts)
export SPACK_ROOT="/path/to/your/selected/spack/instance"
source "${SPACK_ROOT}/dist/bin/setup-env.sh" -y
# Load compiler and MPI
module load intel-oneapi-compilers/2025.0.4
module load intel-oneapi-mpi/2021.14.2
# Load application libraries
module load netcdf-c/4.9.2
# Set up your application related settings
#...
# Run your MPI program
#srun my_mpi_program
See also
For essential #SBATCH parameters and complete job submission examples, refer to:
Compiler Support
Here is a list of maintained C/C++/Fortran compilers for building high-performance applications.
Danger
Architecture Compatibility Warning
Libraries built with the AMD AOCC compiler are strictly optimized for the AMD Zen4 architecture.
Do not load AOCC modules on Intel nodes.
Do not submit jobs using AOCC-compiled code to Intel partitions.
Doing so will result in Illegal Instruction errors and immediate job failure.
Note
Bold versions are the default versions loaded when using module load without specifying a version number.
Deprecated packages are marked as versions @edge in the edge Spack variant, deprecated packages will be removed in the next production variant.
Compiler |
Versions |
Library Support |
MPI Support |
Compiler Command |
|---|---|---|---|---|
AMD AOCC |
4.2.0 @edge
5.0.0
|
✓ |
✓ |
CC=clang
CXX=clang++
FC=flang
|
GNU gcc |
12.4.0
13.3.0
14.2.0
|
CC=gcc
CXX=g++
FC=gfortran
|
||
Intel OneAPI |
2021.4.0 @edge
2022.2.1 @edge
2023.2.4
2024.2.1
2025.0.4
|
✓ |
✓ |
CC=icx
CXX=icpx
FC=ifx
|
Intel Classic |
2021.10.0 |
✓ |
✓ |
CC=icc
CXX=icpc
FC=ifort
|
Nvidia nvhpc |
23.11
24.11
25.1
|
CC=nvc
CXX=nvc++
FC=nvfortran
|
MPI Support
The following table shows tested compiler and MPI combinations available in the edge instance. A checkmark (✓) indicates the combination has been tested and is available.
Compiler / MPI |
Intel MPI 2021.14 |
OpenMPI 4.1.x |
OpenMPI 5.x |
|---|---|---|---|
AOCC 5.0 |
✓ |
✓ |
|
AOCC 4.2 |
|||
Intel OneAPI 2025.x |
✓ |
✓ |
✓ |
Intel OneAPI 2024.x |
✓ |
✓ |
✓ |
Intel OneAPI 2023.x |
✓ |
✓ |
✓ |
Intel OneAPI 2022.x |
|||
Intel OneAPI 2021.x |
|||
Intel Classic 2021.10 (OneAPI 2023) |
✓ |
||
NVHPC 25.1 |
✓ |
✓ |
|
NVHPC 24.11 |
✓ |
✓ |
|
NVHPC 23.11 |
✓ |
✓ |
|
GCC 14.x |
|||
GCC 13.x |
|||
GCC 12.x |
CUDA Support
The following table shows which compilers have CUDA support enabled for GPU programming and their MPI compatibility when building packages via Spack.
Warning
[NOT tested] For compilers without Spack’s native CUDA support (GCC, AOCC), directly loading CUDA Toolkit separately with module load cuda might work.
Compiler / MPI |
CUDA Support |
Intel MPI 2021.14 |
OpenMPI 4.1.x |
OpenMPI 5.x |
|---|---|---|---|---|
NVHPC 25.1 |
✓ |
✓ |
✓ |
|
NVHPC 24.11 |
✓ |
✓ |
✓ |
|
NVHPC 23.11 |
✓ |
✓ |
✓ |
|
Intel OneAPI 2025 |
✓ |
✓ |
✓ |
✓ |
Intel OneAPI 2024 |
✓ |
✓ |
✓ |
✓ |
Intel OneAPI 2023 |
✓ |
✓ |
✓ |
✓ |
Intel OneAPI 2022 |
✗ |
|||
Intel OneAPI 2021 |
✗ |
|||
Intel Classic 2021.10 |
✗ |
|||
GCC (all versions) |
✗ |
|||
AOCC (all versions) |
✗ |
List of pre-built software and libraries
Libraries compiled by Intel compilers are optimized for latest Intel and AMD CPUs, while those compiled by AOCC are optimized for AMD CPUs only.
Danger
Architecture Compatibility Warning
Libraries built with the AMD AOCC compiler are strictly optimized for the AMD Zen4 architecture.
Do not load AOCC modules on Intel nodes.
Do not submit jobs using AOCC-compiled code to Intel partitions.
Doing so will result in Illegal Instruction errors and immediate job failure.
Note
Bold versions are the default versions loaded when using module load without specifying a version number.
Deprecated packages are marked as versions @edge in the edge Spack variant, deprecated packages will be removed in the next production variant.
HPC Applications
These applications are scientific software that is built for general use. They may have both serial and parallel versions depending on their nature.
Software |
Description |
Version |
Compiler / MPI |
GPU |
|---|---|---|---|---|
lammps |
Large-scale Atomic/Molecular Massively Parallel Simulator |
20250204 |
- Intel OneAPI 2025
- Intel MPI 2021.14
|
✓ |
mpas-model |
Model for Prediction Across Scales (Atmosphere/Ocean) |
7.3
8.0.2
8.1.0
|
- Intel OneAPI 2025
- Intel MPI 2021.14
|
|
openfoam-org |
OpenFOAM CFD Toolbox (org version) |
11
12
|
- Intel OneAPI 2025
- Intel MPI 2021.14
|
MPI-enabled Libraries
These libraries become available after loading both a compiler and an MPI implementation. They are built specifically for parallel computing applications.
Software |
Description |
Version |
Docs |
|---|---|---|---|
fftw |
Fastest Fourier Transform in the West
- Single & Double precision
|
3.3.10 |
|
hdf5 |
Hierarchical Data Format 5
- Subfile, szip enabled
|
1.14.5 |
|
netcdf-c |
Network Common Data Form (C library)
- Pnetcdf, szip enabled
|
4.9.2 |
|
netcdf-fortran |
Network Common Data Form (Fortran library) |
4.6.1 |
|
parallel-netcdf |
Parallel I/O library for NetCDF file access |
1.14.0 |
|
parallelio |
High-level parallel I/O library
- Pnetcdf enabled
|
2.6.3 |
Intel Compiler Specific Libraries
Libraries exclusively available when using Intel OneAPI or Intel Classic compilers with MPI.
Software |
Description |
Version |
Docs |
|---|---|---|---|
intel-oneapi-mkl |
Intel Math Kernel Library
- ScaLAPACK, Distributed FFT etc. included
|
2023.2.0
2024.2.2
2025.0.1
|
Compiler-optimized Libraries
These libraries are optimized for specific compiler toolchains and become available after loading the corresponding compiler module.
Software |
Description |
Version |
Docs |
|---|---|---|---|
boost |
Boost C++ Libraries
- all subsets included
|
1.87.0 |
|
eigen |
C++ Template Library for Linear Algebra |
3.4.0 |
|
fftw |
Fastest Fourier Transform in the West
- Single & Double precision
|
3.3.10 |
|
glib |
GNOME Core Library |
2.72.4 |
|
gsl |
GNU Scientific Library |
2.8 |
|
libxc |
Library of Exchange and Correlation Functionals |
7.0.0 |
AOCC Specific Libraries
AMD-optimized libraries available exclusively with AMD Optimizing C/C++ Compiler (AOCC).
Software |
Description |
Version |
Docs |
|---|---|---|---|
AMD AOCL |
AMD AOCL Libraries
- all features enabled
|
5.0 |
|
amdblis |
AMD BLAS-Like Instant Software (Optimized BLAS) |
5.0 |
|
amdfftw |
AMD Optimized FFTW (Fast Fourier Transform) |
5.0 |
|
amdlibflame |
AMD FLAME Library (Linear algebra) |
5.0 |
|
amdlibm |
AMD Math Library (Optimized libm) |
5.0 |
Generic Software
The following sections list categories of software packages available at the Root level. Packages are compiled with a freshly built GCC 11.5.0 compiler independent of OS.
GPU & AI Infrastructure
Core libraries and drivers for GPU computing.
Software |
Description |
Version |
Docs |
|---|---|---|---|
CUDA |
NVIDIA Compute Unified Device Architecture |
11.8.0
12.2.2
12.3.2
12.4.1
12.5.1
12.6.3
12.8.0
|
|
cuDNN |
NVIDIA CUDA Deep Neural Network library for CUDA 11/12 |
8.9.7
9.2.0
|
Math & Data Science
Platforms for mathematical computing, statistical analysis, and data science.
Software |
Description |
Version |
Docs |
|---|---|---|---|
MATLAB |
Numerical computing platform |
R2019b
R2022b
R2023b
|
|
Octave |
Scientific Programming Language (MATLAB-compatible) |
9.4.0 |
|
Python |
Python Programming Language |
3.9.21
3.10.16
3.11.11
3.12.9
3.13.2
|
|
Anaconda3 |
Python Data Science Platform |
2024.10 |
|
R |
R Language for Statistical Computing |
4.4.2 |
|
RStudio |
Integrated Development Environment for R |
2024.12.1 |
Language Runtimes
Runtime environments for various programming languages.
Software |
Description |
Version |
Docs |
|---|---|---|---|
OpenJDK |
Open Source Java Development Kit |
1.8.0_265
11.0.23
17.0.11
|
|
Rust |
Rust Systems Programming Language |
1.85.0 |
|
Go |
The Go Programming Language |
1.24.1 |
Visualization & Media
Tools for graphics, visualization, and media processing.
Software |
Description |
Version |
Docs |
|---|---|---|---|
Gnuplot |
Portable command-line driven graphing utility |
6.0.0 |
|
VMD |
Visual Molecular Dynamics |
1.9.3 |
|
ImageMagick |
Image creation and modification tools |
7.1.1-39 |
|
FFmpeg |
Video and Audio processing suite |
4.4.4
5.1.4
6.1.1
7.1
|
Libraries
Core system libraries and development tools.
Software |
Description |
Version |
Docs |
|---|---|---|---|
Jasper |
JPEG-2000 codec library |
1.900.31
4.2.8
|
|
libpng |
PNG reference library |
1.6.39 |
|
libtirpc |
Transport Independent RPC library |
1.3.3 |
Build Tools & Development
Tools for building, configuring, and managing software projects.
Software |
Description |
Version |
Docs |
|---|---|---|---|
Binutils |
GNU Binary Utilities |
2.43.1 |
|
CMake |
Cross-platform build system generator |
3.31.6 |
|
Meson |
Modern build system |
1.7.0 |
|
Ninja |
Small build system with a focus on speed |
1.12.1 |
|
Gmake |
GNU Make |
4.4.1 |
Git Version Control
Version control tools for managing code repositories and large files.
Software |
Description |
Version |
Docs |
|---|---|---|---|
Git |
Distributed version control system |
2.48.1 |
|
Git-LFS |
Git Large File Storage |
3.5.1 |
Other Packages
Scripting Languages: High-level scripting and interpreted languages.
Other Version Control Systems: Alternative version control systems.
Debugging & Profiling: Tools for debugging, testing, and code analysis.
Utilities & Tools: General system utilities, editors, and productivity tools.
Cloud CLI: Command-line tools for cloud services.
Package Managers: Package management tools.
Additional Build Tools: Less commonly used build tools and Java toolchains.
Additional Language Runtimes: Additional programming language runtimes.
Scripting Languages
Software |
Description |
Version |
Docs |
|---|---|---|---|
Perl |
Practical Extraction and Report Language |
5.40.0 |
|
Ruby |
Dynamic, open source programming language |
3.3.5 |
|
Lua |
Lightweight, multi-paradigm scripting language |
5.4.6 |
|
Tcl |
Tool Command Language |
8.6.12 |
|
Bash |
GNU Bourne Again Shell |
5.2 |
|
Tcsh |
C Shell with file name completion |
6.24.14 |
Other Version Control Systems
Software |
Description |
Version |
Docs |
|---|---|---|---|
Subversion |
Centralized version control system |
1.14.2 |
|
Mercurial |
Distributed version control system |
6.7.3 |
|
CVS |
Concurrent Versions System |
1.12.13 |
Debugging & Profiling
Software |
Description |
Version |
Docs |
|---|---|---|---|
GDB |
GNU Debugger |
15.2 |
|
GoogleTest |
Google C++ Testing Framework |
1.15.2 |
Utilities & Tools
Software |
Description |
Version |
Docs |
|---|---|---|---|
Emacs |
Extensible text editor |
30.1 |
|
Neovim |
Hyperextensible Vim-based text editor |
0.11.5 |
|
Zsh |
Z Shell |
5.9 |
|
Screen |
Terminal multiplexer |
4.9.1 |
|
Parallel |
GNU Parallel (Shell tool for executing jobs in parallel) |
20240822 |
|
dos2unix |
Text file format converter |
7.4.4 |
|
EasyBuild |
Software build and installation framework |
4.7.0 |
Cloud CLI
Software |
Description |
Version |
Docs |
|---|---|---|---|
AWS CLI v2 |
Amazon Web Services Command Line Interface |
2.24.24 |
|
Google Cloud CLI |
Google Cloud SDK |
504.0.1 |
Package Managers
Software |
Description |
Version |
Docs |
|---|---|---|---|
NPM |
Node Package Manager |
11.2.0 |
|
Yarn |
JavaScript package manager |
1.22.22 |
|
FPM |
Fortran Package Management |
0.10.0 |
Additional Build Tools
Software |
Description |
Version |
Docs |
|---|---|---|---|
Autotools |
GNU Build System (Autoconf, Automake, Libtool) |
master |
|
SCons |
Software construction tool |
4.7.0 |
|
Bazel |
Build and test tool (Google) |
7.0.2 |
|
Maven |
Build automation tool for Java |
3.9.8 |
|
Gradle |
Build automation tool for multi-language |
8.10.2 |
|
Ant |
Java build tool |
1.10.14 |
Additional Language Runtimes
Software |
Description |
Version |
Docs |
|---|---|---|---|
Dotnet Core SDK |
.NET Core Software Development Kit |
8.0.4 |
|
Node.js |
JavaScript runtime built on Chrome’s V8 |
22.14.0 |
|
OCaml |
Functional programming language |
5.2.1 |