Description
Here is a partial listing of my modules catalog:
--------------------------------------------- /cm/extra/ModuleFiles/Latest ---------------------------------------------
allinea/forge/6.0.3 intel-cluster-runtime/intel64/3.7
cuda/7.5.18 intel-mpi/64/5.0.3/048
gcc/4.8.5(default) intel-tbb-oss/intel64/43_20150424oss
gcc/4.9.3 mkl/11.2
gcc/5.1.0 mpc/1.0.3
gcc/5.3.0 mpfr/3.1.3
gdb/7.9 opencv/3.0.0
gdk/352.55 perforce/2015.2
gmp/6.1.0 pgi/16.4(default)
intel/15.0 pgi/nightly
intel/compiler/64/15.0/2015.5.223 slurm/14.11.11
intel/mkl/64/11.2/2015.5.223 tcl/8.6.4
intel-cluster-checker/2.2.2
-------------------------------------------------- /cm/extra/Bundles ---------------------------------------------------
PrgEnv/GCC+MVAPICH2/2016-04-19 PrgEnv/Intel+OpenMPI/2016-03-21
PrgEnv/GCC+OpenMPI/2016-04-16 PrgEnv/PGI+MVAPICH2/2016-04-19
PrgEnv/Intel+MVAPICH2/2016-04-19 PrgEnv/PGI+OpenMPI/2016-04-16
---------------- /cm/extra/PrgEnv/GCC+MVAPICH2/2016-04-19 -----------------
cuda/7.5.18 gdk/352.55 hydra/3.2 slurm/14.11.11 zlib/1.2.8
gcc/4.9.3 hwloc/1.11.2 mvapich2/2.2b-GDR szip/2.1
---------------- /cm/extra/PrgEnv/Intel+OpenMPI/2016-03-21 ----------------
cube/4.3.4 gdk/352.55 intel/15.0 netcdf-f/4.4.3 score-p/2.0.1 zlib/1.2.8
cuda/7.5.18 hdf5/1.10.0 mkl/11.2 openmpi/1.10.2 slurm/14.11.11
fftw/3.3.4 hwloc/1.11.2 netcdf-c/4.4.0 pnetcdf/1.7.0 szip/2.1
The PrgEnv bundles are defined so that you can identify what components were built with what. For example, in PrgEnv/GCC+MVAPICH2/2016-04-19 the hydra and mvapich2 are built with the cuda and gcc level from the same bundle. Likewise, in the rgEnv/Intel+OpenMPI/2016-03-21 bundle, the openmpi/hdf5/netcdf are all built with the intel (compiler) and cuda from the same bundle.
There's some duplication here, the slurm, cuda, gcc & intel modules appear inside the Latest bucket as well as one or more of the PrgEnv bundles. I don't consider this a problem because the contents of the modules are identical, so I'm not concerned where the module is loaded from.
I'm running into a problem with this, however: I can load duplicates of a module because, even though the names are identical, their paths are not. Take this sequence of commands:
module load gcc/4.9.3
module load PrgEnv/GCC+MVAPICH2/2016-04-19
module load gcc
module list
The "module list" gives the error message
ModuleCmd_List.c(146):FATAL:996: The environment variables LOADEDMODULES and _LMFILES_ have inconsistent lengths.
The _LMFILES_
shows the distinct paths (split here, for clarity)
/cm/extra/ModuleFiles/Latest/gcc/4.9.3
/cm/extra/Bundles/PrgEnv/GCC+MVAPICH2/2016-04-19
/cm/extra/PrgEnv/GCC+MVAPICH2/2016-04-19/gcc/4.9.3
while the LOADEDMODULES
doesn't show the redundancy:
gcc/4.9.3
PrgEnv/GCC+MVAPICH2/2016-04-19
For my purposes, I'd prefer that the _LMFILES_
not be extended if the LOADEDMODULES
is not extended as well. This would enforce the way I treat the modules are being identical. Can you point me to what code would need to be changed?
Reported by: cponder