Ejemplos de cómo usar los recusos GRID-CSIC con gLite
Ejemplos gLite
Una vez estes conectado/a a un UI (
ver UI disponibles) y hayas cargado tu certificado digital (
más información) ya estamos listos para probar algunos ejemplos.
Trabajando con ROOT
Vamos a usar un sencillo programa en ROOT para ver cómo se mandan este tipo de trabajos al GRID. Todos los archivos necesarios para seguir este tutorial los puedes encontrar en
root.tar.gz. Este ejemplo se basa en la macro
gaus.cc
, que genera valores aleatorios siguiendo una distribución gausiana, la almacena en un histograma y luego se guarda en el fichero
gaus.eps
.
Para hacer que dicha macro corra en algúno de los WNs de los CE disponibles, hay que preparar un fichero JDL como el siguiente (
gaus.jdl
):
Type = "job";
JobType = "normal";
Executable = "gaus.sh";
StdOutput = "jobGaus.out";
StdError = "jobGaus.err";
InputSandbox = {
"gaus.sh",
"gaus.cc"
};
OutputSandbox = {
"jobGaus.err",
"jobGaus.out",
"gaus.gif"
};
Rank = ;
VirtualOrganisation = "ific";
Este fichero JDL, ejecutará el script
gaus.sh
mediante la opción "Executable", el cual prepara las variables de entorno y ejecuta todos los programas y comandos requeridos. En el fichero JDL se especifica mediante la opción "InputSandbox" los archivos necesarios para ejecutar con éxito el trabajo. Estos ficheros se copiaran en uno de los WNs del CE escogido mediante la opción "Requirements" y finalmente guardará los archivos especificados bajo la opción "OutputSandbox".
Antes de mandar los trabajos a los WN's es una buena costumbre comprobar en el
User Interface que todo funciona correctamente. Para ello simplemente tienes que ejecutar el script que vas a mandar:
source gaus.sh
Para enviar tu trabajo hay que seguir unos pasos muy sencillos:
ver pasos
Por último, comentar que en el script
gaus.sh
se ha añadido la opción de copiar los resultados (en este caso,
gaus.eps
) en lustre. Desde los WNs lustre está montado como "sólo lectura", por lo que para poder copiar cosas en él se tendrán que usar las herramientas "lcg". De este modo mediante el siguiente comando es posible copiar tus resultados en el espacio (temporal) que proporciona el SE del GRID-CSIC:
export LFC_HOST=lfc02.ific.uv.es
export LFC_HOME=/grid/ific/
file=/lustre/ific.uv.es/$LFC_HOME/scratch/users/$USER/tutorials/root/gaus/gaus.eps
lcg-cp -v --vo ific file://`pwd`/gaus.eps srm://srmv2.ific.uv.es/$file
Hay que saber que una vez se escribe un fichero en lustre, este comando no lo sobreescribirá si intentamos copiarlo de nuevo en el mismo sitio. Por ese motivo en el script
gaus.sh
se da un ejemplo de cómo se borrar el fichero (si existe) antes de copiarlo. Los comandos son:
lcg-del --vo ific -v -l srm://srmv2.ific.uv.es$file
Más información en:
Gestión de datos
Trabajando con Geant4
Veamos un ejemplo práctico de cómo mandar trabajos con Geant4 al GRID. Todos los archivos ncesarios para seguir este tutorial los puedes encontrar en
geant4.tar.gz. Este sencillo ejemplo simula el paso de muones de 180 GeV por tres capas de detectores de silicio colocados de manera trasnversal y secuencial al paso de las partículas generadas. Se ha incluido también la simulación de un campo magnético para curvar las trayectorias de las partículas y poder medir así el momento en el tracking. El programa genera un archivo ROOT, que contiene los resultados de la simulación y un archivo WRL con la geometría y 200 trazas.
Para hacer que dicho script corra en algúno de los WN de los CE disponibles, existe un fichero JDL como el siguiente (
geant4_test.jdl
):
Type = "job";
JobType = "normal";
Executable = "geant4_test.sh";
StdOutput = "jobGEANT4.out";
StdError = "jobGEANT4.err";
InputSandbox = {
"geant4_test.sh",
"geant4_test.tar.gz"
};
OutputSandbox = {
"jobGEANT4.err",
"jobGEANT4.out"
};
Requirements = other.GlueCEUniqueId == "ce03.ific.uv.es:2119/jobmanager-lcgpbs-short";
VirtualOrganisation = "ific";
Este fichero JDL, ejecutará el script
geant4_test.sh
mediante la opción "Executable", el cual prepara las variables de entorno de Geant4 y ROOT y ejecuta la simulación y el análisis. En el fichero JDL se especifica mediante la opción "InputSandbox" los archivos necesarios para ejecutar con éxito el trabajo. Estos ficheros se copiaran en uno de los WNs del CE escogido mediante la opción "Requirements" y finalmente guardará los archivos especificados bajo la opción "OutputSandbox". En este ejemplo, en vez de traernos los resultados de la simulación y del análisis vía "OutputSandbox", lo que se hace es copiarlos directamente al espacio "scratch" de lustre (es decir, al SE del GRID-CSIC en el IFIC), en el que cada usuario puede escribir. Esto se hace de forma similar a como se hace en el ejemplo de ROOT.
Antes de mandar los trabajos a los WN's es una buena costumbre comprobar en el
User Interface que todo funciona correctamente. Para ello simplemente tienes que ejecutar el script que vas a mandar:
source geant4_test.sh
Para enviar tu trabajo hay que seguir unos pasos muy sencillos:
ver pasos
Trabajando con PYTHIA
Para ilustrar cómo usar PYTHIA à la GRID usaremos un par de ejemplos (
main01
y
main61
) que vienen con el propio programa. Descargamos el siguiente archivo
pythia_test.tar.gz que contiene estos dos ejemplos y un
Makefile
para compilarlos. Preparamos el archivo JDL para lanzar los trabajos de ejemplo. El archivo es similar al fichero JDL que hemos preparado para el caso de querer trabajar con ROOT (
pythia_test.jdl):
Type = "job";
JobType = "normal";
Executable = "pythia_test.sh";
StdOutput = "jobGaus.out";
StdError = "jobGaus.err";
InputSandbox = {
"pythia_test.sh",
"pythia_test.tar.gz"
};
OutputSandbox = {
"jobPYTHIA.err",
"jobPYTHIA.out"
};
Requirements = other.GlueCEUniqueId == "ce03.ific.uv.es:2119/jobmanager-lcgpbs-short";
VirtualOrganisation = "ific";
Este fichero JDL, ejecutará el script
pythia_test.sh mediante la opción "Executable", el cual prepara las variables de entorno, descomprime el archivo donde están los ficheros necesarios, los compilará y finalmente los ejecutará. En el fichero JDL se especifica mediante la opción "InputSandbox" los ficheros que se copiaran en uno de los WNs del CE escogido mediante la opción "Requirements". Finalmente guardará los archivos especificados bajo la opción "OutputSandbox" (en nuestro caso, únicamente salida por pantalla).
Resumiendo, en un mismo directorio tendremos los siguientes archivos:
pythia_test.jdl
,
pythia_test.tar.gz
y
pythia_test.sh
Antes de mandar los trabajos a los WN's es una buena costumbre comprobar en el
User Interface que todo funciona correctamente. Para ello simplemente tienes que ejecutar el script que vas a mandar:
source pythia_test.sh
Para enviar tu trabajo hay que seguir unos pasos muy sencillos:
ver pasos
Trabajando con Mathematica
Trabajando con Calibob
Vamos lanzar un trabajo al GRID que corrar toda la cadena de simulación del software Calibob. Todos los archivos ncesarios para seguir este tutorial los puedes encontrar en
calibob.tar.gz.
Para ejecutar Calibob en algúno de los WNs de los CE disponibles, hay que preparar un fichero JDL como el siguiente (
calibob_test.jdl
):
Type = "job";
JobType = "normal";
Executable = "calibob_test.sh";
StdOutput = "jobCalibob.out";
StdError = "jobCalibob.err";
InputSandbox = {
"calibob_test.sh"
};
OutputSandbox = {
"jobCalibob.err",
"jobCalibob.out"
};
Requirements = other.GlueCEUniqueId == "ce03.ific.uv.es:2119/jobmanager-lcgpbs-long";
VirtualOrganisation = "ific";
Este fichero JDL, ejecutará el script
calibob_test.sh
mediante la opción "Executable", el cual prepara las variables de entorno y ejecuta los comandos necesarios para ejecutar este software de simulación. En el fichero JDL se especifica mediante la opción "InputSandbox" que el script
calibob_test.sh
se copiará a uno de los WNs del CE escogido, mediante la opción "Requirements", para ser ejecutado y finalmente podrá recuperar los archivos especificados bajo la opción "OutputSandbox".
Antes de mandar los trabajos a los WN's es una buena costumbre comprobar en el
User Interface que todo funciona correctamente. Para ello simplemente tienes que ejecutar el script que vas a mandar:
source calibob_test.sh
Para enviar tu trabajo hay que seguir unos pasos muy sencillos:
ver pasos
Por último, comentar que los resultados de este test de simulación ocupan aproximadamente 1 GB por lo que no es buena idea incluir estos resultados en el "OutputSandbox" (que es para archivos de menos de 10 MB). De modo que estos resultados son copiados directamente a lustre (scratch temporal). Recordar que desde los WNs lustre está montado como "sólo lectura", por lo que para poder copiar cosas en él se tendrán que usar las herramientas "lcg". Desde cualquier UI es posible acceder a estos resultados, pudiendo incluso copiarlos a algún otro sitio mediante
scp.
Más información en:
Gestión de datos
Enviar los trabajos
Para mandar, consultar y finalmente obtener el resultado una vez el trabajo haya finalizado, se deberan usar los siguientes comandos:
glite-wms-job-delegate-proxy -d $USER
glite-wms-job-submit -d $USER -o jobId mytest.jdl
glite-wms-job-status -i jobId
glite-wms-job-output -i jobId
Donde cambiaremos
mytest.jdl
por nuestro script JDL. Una vez finalizado el trabajo se puede comprobar que todo se ha ejecutado correctamente consultando los ficheros
mytest.out
y
mytest.err
(asumiendo que tu JDL contiene
StdOutput = "mytest.out";
y
StdError = "mytest.err";
y que dichos archivos se solicitan a través del "OutputSandbox") que se generan automáticamente.
Más información
aquí
--
CarlosEscobar - 03 Feb 2010