General Atomic and Molecular Electronic Structure System (GAMESS) es un software de computadora para química computacional
El código fuente de GAMESS (EE. UU.) está disponible como software gratuito disponible en la fuente, pero no es un software de fuente abierta, debido a restricciones de licencia
Para poder usar GAMESS una vez logueado en drago.csic.es tendrá que cargar el módulos de GAMESS.
module load gamess/2021
Logeandonos en Drago via ssh:
ssh test5@drago.csic.es
Procedemos a construir y generar el .sif de la imagen de GAMESS en nuestro home.
[test5@drago31010015 ~]$ module load rama0.3 apptainer/1.3.2
[test5@drago31010015 ~]$ apptainer build gamess.sif docker://nvcr.io/hpc/gamess:17.09-r2-libcchem
Comprobamos que tenemos el archivo .sif:
[test5@drago31010015 ~]$ ls -lh gamess.sif
-rwxr-x--- 1 test5 group 1.3G Jan 14 07:54 gamess.sif
Generamos un script slurm. Este script es para usar GPUs.
(base) [test5@drago31010015 ~]$ nano jobgamess.sh
#!/bin/bash
#SBATCH --job-name=testgamess # Nombre del trabajo
#SBATCH --output=gamessres%j.out # Archivo de salida (%j es el ID del job)
#SBATCH --error=gamessres%j.err # Archivo de errores
#SBATCH --nodes=1 # Usar 1 nodo (recomendado para empezar)
#SBATCH --ntasks-per-node=8 # Número de núcleos (CPUs)
#SBATCH --gres=gpu:1 # Solicitar 1 GPU (necesario para libcchem)
#SBATCH --partition=gpu # Nombre de la partición de GPUs de tu clúster
#SBATCH --time=00:30:00 # Tiempo máximo (HH:MM:SS)
#SBATCH --mem=16G # Memoria total RAM
module load rama0.3 apptainer/1.3.2
##Definir variables de entorno
INPUT_FILE="exam01.inp" # Tu archivo de entrada (.inp)
OUTPUT_FILE="exam01.log" # Tu archivo de salida (.log)
IMAGE_SIF="gamess.sif" # El archivo que creaste con 'apptainer build'
##Crear directorio temporal para GAMESS (Scratch)
##GAMESS escribe muchos archivos temporales. Usamos el directorio local del nodo.
SCRATCH_DIR="/tmp/gamessjob$SLURM_JOB_ID"
mkdir -p $SCRATCH_DIR
##Ejecución con Apptainer
##--nv: Habilita el soporte de NVIDIA GPU dentro del contenedor
##--bind: Mapea carpetas del host al contenedor (necesario para archivos temporales)
apptainer exec --nv \
--bind $SCRATCH_DIR:/lustre/home/admins/jvera/ \
$IMAGE_SIF \
rungms $INPUT_FILE 00 $SLURM_NTASKS_PER_NODE > $OUTPUT_FILE
##Limpieza (opcional)
rm -rf $SCRATCH_DIR
echo "Cálculo finalizado con éxito."
#############################################
Ahora lanzamos el job:
#################################################
(base) [test5@drago31010015 ~]$ sbatch jobgamess.sh
Submitted batch job 1250607
Comprobamos que no haya errores y ver su salida.
########################################
(base) [test5@drago31010015 ~]$ cat gamess_res_1250607.err
(base) [test5@drago31010015 ~]$ cat gamess_res_1250607.out
Cálculo finalizado con éxito.
###############################