AtChem2 con Singularity
Introducción
El siguiente procedimiento muestra los pasos necesarios para utilizar AtChem2 utilizando un contenedor mediante SingularityCE.
Considere que los pasos que se muestran a continuación son una guía básica para que pueda ejecutar sus aplicaciones, por lo que modificaciones y configuraciones personalizadas deben ser realizadas por el lector.
Descarga de AtChem2
Descarga de código fuente
Descargaremos bajo nuestro usuario el código de AtChem2 utilizando:
git clone https://github.com/AtChem/AtChem2.git
Esto creará en nuestro directorio una carpeta llamada AtChem2
, la que utilizaremos para nuestro ejemplo.
Descarga de contenedor
Para descargar el contenedor de AtChem2 deberemos ejecutar lo siguiente:
ml purge ml intel/2022.00 ml singularityCE singularity pull docker://ghcr.io/wacl-york/atchem2:1.2.2
Veremos el progreso similar a:
INFO: Converting OCI blobs to SIF format INFO: Starting build... Getting image source signatures Copying blob 9f247ea85df4 done Copying blob 24578b8a05d2 done Copying blob 9088cdb84e39 done Copying config 7fbde900a5 done Writing manifest to image destination Storing signatures 2024/11/29 10:12:17 info unpack layer: sha256:9088cdb84e397c480d4c5f1675d1aa6928c3e8b5b30c57b68a756d5d1fda4d80 2024/11/29 10:12:18 info unpack layer: sha256:24578b8a05d294f5a4174d182bbf2cf628f3617b73c3ab72e9f597b14b5a214f 2024/11/29 10:12:19 info unpack layer: sha256:9f247ea85df42ee348a150e723b02ed14d0d205589ccccbf6bb5caa2a5d489ed INFO: Creating SIF file...
Esto dejará en nuestro directorio el archivo contenedor atchem2_1.2.2.sif
disponible para su uso.
Qué tenemos hasta el momento
Si hemos estado trabajando en nuestra carpeta principal, actualmente tendremos:
AtChem2 atchem2_1.2.2.sif
Ejecución de prueba de AtChem2
Para realizar una prueba de ejecución de AtChem2 mediante Singularity ejecutaremos:
cd AtChem2 singularity run --bind model:/data_transfer ~/atchem2_1.2.2.sif model/mechanism.fac
Si todo funciona de manera adecuada veremos (se ha eliminado texto, y solo se muestra una parte inicial y final):
INFO: Converting SIF file to temporary sandbox... * facsimile mechanism file: model/mechanism.fac * fortran mechanism directory [ default = ./model/configuration/ ]: * mcm data files directory [ default = ./mcm/ ]: ... make sharedlib gfortran -c model/configuration/customRateFuncs.f90 -ffree-line-length-none -ffree-form -fimplicit-none -Wall -Wpedantic -Wno-unused-dummy-argument -fcheck=all -fPIC -shared -o model/configuration/customRateFuncs.o -Jobj gfortran -c model/configuration/mechanism.f90 -ffree-line-length-none -ffree-form -fimplicit-none -Wall -Wpedantic -Wno-unused-dummy-argument -fcheck=all -fPIC -shared -o model/configuration/mechanism.o -Jobj gfortran -shared -o model/configuration/mechanism.so model/configuration/mechanism.o model/configuration/customRateFuncs.o => shared library directory: ./model/configuration/ make atchem2 executable gfortran -o atchem2 -Jobj -Iobj src/dataStructures.f90 src/argparse.f90 src/interpolationFunctions.f90 src/configFunctions.f90 src/inputFunctions.f90 src/outputFunctions.f90 src/atmosphereFunctions.f90 src/solarFunctions.f90 src/constraintFunctions.f90 src/solverFunctions.f90 src/parameterModules.f90 src/atchem2.f90 -ffree-form -fimplicit-none -Wall -Wpedantic -fcheck=all -fPIC -O2 -L/atchem-lib/cvode/lib -L/atchem-lib/openlibm-0.8.1 -Wl,-R,/usr/lib/:/atchem-lib/cvode/lib:/atchem-lib/openlibm-0.8.1 -lopenlibm -lsundials_fcvode -lsundials_cvode -lsundials_fnvecserial -lsundials_nvecserial -ldl src/inputFunctions.f90:1081:0: ... ------------- Directories ------------- Model directory is: model Output directory is: model/output Reaction Rates directory is: model/output/reactionRates Configuration directory is: model/configuration Constraints directory is: model/constraints Environment Constraints directory is: model/constraints/environment Photolysis Constraints directory is: model/constraints/photolysis Species Constraints directory is: model/constraints/species MCM directory is: mcm Shared library is: model/configuration/mechanism.so ... ------------------ Final statistics ------------------ No. steps = 603 No. f-s = 699 No. J-s = 1003 No. LU-s = 100 No. nonlinear iterations = 696 No. nonlinear convergence failures = 0 No. error test failures = 28 Runtime = 0 Deallocating memory. INFO: Cleaning up image...
Esto nos muestra que se ha logrado ejecutar el contenedor con el archivo de entrada model/mechanism.fac.
Ejecución como tarea Slurm
Si lo anterior lo deseamos ejecutar en un nodo de cómputo, podemos utilizar un script similar a:
#!/bin/bash #---------------Script SBATCH - NLHPC ---------------- #SBATCH -J AtChem_JOB #SBATCH -p general #SBATCH -n 1 #SBATCH -c 1 #SBATCH --mem-per-cpu=1000 #SBATCH --mail-user=lcastilloelmes@gmail.com #SBATCH --mail-type=ALL #SBATCH -o AtChem_JOB_%j.out ml purge ml singularityCE cd AtChem2 singularity run --bind model:/data_transfer ~/atchem2_1.2.2.sif model/mechanism.fac
Es importante destacar qué la carpeta AtChem2/model debe contener:
- los archivos *.fac,
- el directorio configuration
- el directorio constraints
De esta manera podrá editar configuraciones y restricciones para sus simulaciones.
En el caso de requerir más recursos, recuerde que puede utilizar nuestro Generador Scripts para la edición de scripts.