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

== This feature is currently being tested ==

The new module systems implements software modules into self-consistent 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. To test the new software module environments on the ICL clusters, you need to source a setup script into your shell: source /apps/spacks/2025-04-15/lmod.sh. This will automatically load the default environment env/gcc12-cuda12. You can then load software packages in the normal fashion:

[ICL:methane ~]$ source /apps/spacks/2025-04-15/lmod.sh 
[ICL:methane ~]$ module avail
----------------------- /apps/spacks/2025-04-15/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-04-15/share/spack/modules/gcc11-cuda12/linux-rocky9-x86_64 -----------------------
   py-virtualenv/20.26.5    python-venv/1.0

------------------------------------- /apps/spacks/2025-04-15/share/spack/modules/envs -------------------------------------
   env/gcc11-cuda11    env/gcc11-cuda12 (L)    env/gcc12-cuda12 (D)    env/gcc13-cuda12    env/gcc14-cuda12

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

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-04-15/share/spack/setup-env.sh
[ICL:methane ~]$ spack env activate gcc12-cuda12
[ICL:methane ~]$ spack find -v
==> In environment gcc12-cuda12
==> 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 ...