User Tools

Site Tools


agregar-modulos-ohpc

Agregar módulos manualmente en OpenHPC

La estructura del directorio de OpenHPC para elementos públicamente visibles es

/opt/ohpc/pub/
├── apps  # aplicaciones para usuarios
│   ├── lammps
│   └── wrf
├── compiler # compiladores sin OneAPI
│   └── gcc
├── doc
│   └── contrib
├── examples # ejemplos genéricos
│   ├── ganglia
│   ├── mpi
│   ├── nagios
│   ├── network
│   ├── openpbs
│   ├── slurm
│   └── udev
├── libs     # librerías
│   ├── charliecloud
│   ├── gnu12
│   ├── gnu9
│   ├── hwloc
│   ├── intel
│   ├── lenovo
│   ├── papi
│   ├── singularity
│   ├── wrf_libs
│   └── wrf_libs2
├── moduledeps # módulos *que dependen de otros módulos*
│   ├── gnu
│   ├── gnu12 # módulos que dependen solo de gnu12
│   ├── gnu12-impi # módulos que dependen de gnu12 e IntelMPI
│   ├── gnu12-mpich
│   ├── gnu12-mvapich2
│   ├── gnu12-openmpi4
│   ├── gnu9
│   ├── gnu9-mpich
│   ├── gnu9-mvapich2
│   ├── gnu9-openmpi4
│   ├── intel # módulos que dependen de los compiladores de intel
│   ├── intel-impi
│   ├── intel-mpich
│   ├── intel-mvapich2
│   ├── intel-openmpi4 # módulos compilados con intel y OpenMPI
│   └── oneapi # módulos de OneAPI, dependen de intel
├── modulefiles    #módulos que no dependen de otros módulos
│   ├── charliecloud
│   ├── cmake
│   ├── gnu -> gnu12
│   ├── gnu12
│   ├── gnu9
│   ├── hwloc
│   ├── intel
│   ├── libfabric
│   ├── papi
│   ├── pmix
│   ├── prun
│   ├── singularity
│   ├── ucx
│   └── wrf
├── mpi # implementaciones de MPI, libfabric y UCX
│   ├── libfabric
│   ├── mpich-ofi-gnu12-ohpc
│   ├── mpich-ofi-gnu9-ohpc
│   ├── mpich-ofi-intel-ohpc
│   ├── mvapich2-gnu12
│   ├── mvapich2-gnu9
│   ├── mvapich2-intel
│   ├── openmpi4-gnu12
│   ├── openmpi4-gnu9
│   ├── openmpi4-intel
│   └── ucx-ohpc
└── utils   # cosas que en cualquier sistema razonable vienen con el OS, pero que es útil para ajustar la versión
    ├── autotools
    ├── cmake
    └── prun

Lo clave sería la diferencia entre modulefiles y moduledeps, esencialmente lo que está compilado con intel o gnu12 (con o sin MPI) va a ir en una de las carpetas de moduledeps, dependiendo si solo se compiló con ese módulo o en combinación con una implementación de MPI.

Este directorio se monta automáticamente en los nodos de login snmgt01 y snmgt02 (y de cómputo, por otro mecanismo), aparentemente solo del headnode 1 mmgt01:

$ cat /etc/auto.ohpc
* -nfsvers=4 172.28.253.1:/opt/ohpc/pub/&

Los cambios en el mmgt01 también se ven reflejados en mmgt02, aunque no me termina de quedar claro el mecanismo y no probé si funciona a la inversa.

Entonces, para poder incorporar un software nuevo al sistema de módulos, primero hay que poner el software compilado en /opt/ohpc/pub/apps:

[admin@mmgt01] sudo mkdir /opt/ohpc/pub/apps/lammps
[admin@mmgt01] sudo cp -rv 2024-ocl-most/ /opt/ohpc/pub/apps/lammps/ # pongo un identificador para la versión específica

Después hay que poner un módulo en el lugar de moduledeps correspondiente, en este caso intel-openmpi4:

sudo mkdir /opt/ohpc/pub/moduledeps/intel-openmpi4/lammps
sudo cp modules/lammps/2024-Aug-opencl /opt/ohpc/pub/moduledeps/intel-openmpi4/lammps/

Esto solo habilita el módulo si se cargan los módulos intel y openmpi4, por las dudas también incluyo la dependencia en el modulefile:

#%Module1.0#####################################################################

module-whatis "Name : lammps"
module-whatis "Version : 29Aug2024"
module-whatis "Target : sapphire-rapids"
module-whatis "Short description : LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel Simulator."


depends-on	intel/2023.2.1
depends-on	openmpi4/4.1.6

setenv          OMPI_MCA_pml ucx 
prepend-path	PATH	/opt/ohpc/pub/apps/lammps/2024-ocl-most/build

(pongo la versión por si cambia el default, fuerzo a que use UCX para que aproveche Infiniband, puede que no sea necesario o incluso que traiga problemas)

Con esto puedo cargar el módulo solo si primero cargo intel y openmpi4, o hago module spider lammps. Para hacerlo más visible al usuario, creo un módulo que lo haga automáticamente.

sudo mkdir /opt/ohpc/pub/modulefiles/lammps
sudo cp modules/lammps/2024-Aug-opencl-loader /opt/ohpc/pub/modulefiles/lammps/2024-Aug-opencl

El módulo contiene lo siguiente

#%Module1.0#####################################################################

module-whatis "Name : lammps"
module-whatis "Version : Aug2024"
module-whatis "Target : sapphire-rapids"
module-whatis "Short description : LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel Simulator."

module load intel/2023.2.1 openmpi4/4.1.6 lammps/2024-Aug-opencl

si está cargado el módulo de gnu12 va a quejarse, hay que hacer un module purge (no lo hago desde el módulo porque puede romper flujos de trabajo). Idealmente gnu12 no se cargaría por defecto.

agregar-modulos-ohpc.txt · Last modified: by joaquintorres