Module Environments - icl-utk-edu/cluster GitHub Wiki

The software module system consists of self-consistent software groups which ensure that no conflicts exist between software packages or their dependencies. This allows all software modules to be loaded at once. By loading a software environment via module load env/env_name, the software in the environment is added to the available software that you can module load. The naming scheme for the environment is "env/compiler-cudaversion-blas". The system automatically loads the environment env/gcc12-cuda12-openblas on login. You can then load software packages in the normal fashion:

[ICL:methane ~]$ module avail
----------------------- /apps/spacks/2025-08-22/share/spack/modules/gcc12-cuda12/linux-rocky9-x86_64 -----------------------
   amd-aocl/5.0                              kokkos/4.4.01                   py-distro/1.8.0
   amdblis/5.0                               krb5/1.21.3                     py-docutils/0.20.1
   amdfftw/5.0                               libbsd/0.12.2                   py-editables/0.5
   amdlibflame/5.0                           libdrm/2.4.123                  py-filelock/3.12.4
... truncated ...
[ICL:methane ~]$ module load openmpi
[ICL:methane ~]$ module list

Currently Loaded Modules:
  1) env/gcc12-cuda12     5) xz/5.4.6         9) libpciaccess/0.17  13) libevent/2.1.12  17) rdma-core/52.0
  2) glibc/2.34           6) zlib-ng/2.2.1   10) ncurses/6.5        14) numactl/2.0.18   18) ucx/1.15.0
  3) gcc-runtime/12.4.0   7) libxml2/2.13.4  11) hwloc/2.11.1       15) slurm/22.05.9    19) openmpi/5.0.5
  4) libiconv/1.17        8) cuda/12.6.2     12) openssl/3.4.0      16) libnl/3.3.0

[ICL:methane ~]$ which mpicc
/apps/spacks/2025-04-15/opt/spack/linux-rocky9-x86_64/gcc-12.4.0/openmpi-5.0.5-24tp3ez2epnadfl3x57bpvg5epgjshqh/bin/mpicc

To view the other available software environments:

[ICL:methane ~]$ module avail env
------------------ /apps/spacks/2025-08-22/share/spack/modules/gcc12-cuda12-openblas/linux-rocky9-x86_64 -------------------
   python-venv/1.0

------------------------------------- /apps/spacks/2025-08-22/share/spack/modules/envs -------------------------------------
   env/gcc11-cuda11-aocl        env/gcc12-cuda12-aocl              env/gcc14-cuda12-mkl
   env/gcc11-cuda11-mkl         env/gcc12-cuda12-mkl               env/gcc14-cuda12-openblas
   env/gcc11-cuda11-openblas    env/gcc12-cuda12-openblas (L,D)    env/oneapi2024-cuda12-mkl
   env/gcc11-cuda12-aocl        env/gcc13-cuda12-aocl              env/oneapi2024-cuda12-openblas
   env/gcc11-cuda12-mkl         env/gcc13-cuda12-mkl
   env/gcc11-cuda12-openblas    env/gcc13-cuda12-openblas

One advantage of the environments is that you can switch between environments and all loaded modules (if available) will be switched to be compatible with the new environment:

[ICL:methane ~]$ module switch env/gcc11-cuda12-mkl

Due to MODULEPATH changes, the following have been reloaded:
  1) cuda/12.6.2      4) libevent/2.1.12     7) libpciaccess/0.17    10) numactl/2.0.18    13) rdma-core/52.0    16) xz/5.4.6
  2) glibc/2.34       5) libiconv/1.17       8) libxml2/2.13.4       11) openmpi/5.0.5     14) slurm/22.05.9     17) zlib-ng/2.2.1
  3) hwloc/2.11.1     6) libnl/3.3.0         9) ncurses/6.5          12) openssl/3.4.0     15) ucx/1.15.0

The following have been reloaded with a version change:
  1) env/gcc12-cuda12 => env/gcc11-cuda12     2) gcc-runtime/12.4.0 => gcc-runtime/11.5.0

If you want to see in detail how each environment and software package is configured, you can use the spack interface to see this information:

[ICL:methane ~]$ source /apps/spacks/2025-08-22/share/spack/setup-env.sh
[ICL:methane ~]$ spack env activate gcc12-cuda12-openblas
[ICL:methane ~]$ spack find -v
==> In environment gcc12-cuda12-openblas
==> 87 root specs
[+] amd-aocl +openmp
[+] aocc +license-agreed
[+] apptainer
[+] astyle
[+] autoconf
[+] automake
[+] bison
[+] boost
[+] cmake
[+] cscope
[+] cubelib
[+] cuda@12
[+] dmtcp
... truncated ...
-- linux-rocky9-x86_64 / [email protected] -----------------------------
[email protected]+openmp build_system=bundle
[email protected]~aocl_gemm+blas+cblas~ilp64~logging+suphandling~tracing build_system=makefile libs=shared,static threads=openmp
[email protected]+amd-dynamic-dispatcher~amd-fast-planner~amd-mpi-vader-limit~debug+mpi+openmp+shared~static~threads build_system=autotools precision=double,float
[email protected]~debug~ilp64~ipo+lapack2flame~logging+shared+static~tracing build_system=cmake build_type=Release generator=make threads=openmp vectorization=auto
[email protected] build_system=scons
[email protected]~ilp64~ipo~pic+shared build_system=cmake build_type=Release generator=make
... truncated ...