Con trabajos seriales nos referimos a un programa que corre en un nodo solo y ocupa un slot, es decir un núcleo CPU.
El comando para enviar trabajos al Grid Engine es qsub. El formato general del comando es
$ qsub <opciones de qsub> programa <opciones del programa>
como por ejemplo
$ qsub ./mi_trabajo.sh
Por defecto, Grid Engine supone que el programa que queremos ejecutar es un script que envuelve el o los binarios que se van a ejecutar en el nodo de cálculo. Veamos el siguiente ejemplo mi_trabajo.sh que tiene el siguiente contenido:
#!/bin/bash
#
# mi_trabajo.sh
#
#$ -N mi_trabajo
#$ -cwd
#$ -o mitrabajo.$JOB_ID.out
#$ -e mitrabajo.$JOB_ID.err
/bin/echo Estoy corriendo en el nodo `hostname`
/bin/echo Voy dormir a las `date`
sleep 60
/bin/echo Ahora son las `date`
Las líneas que comienzan con #$ indican opciones para el comando qsub. Veamos cómo está estructurado el script.
#!/bin/bash Shell del script
# Comentarios
#$ -N mitrabajo
Indica el nombre que queremos dar al trabajo
#$ -cwd
Usa el directorio desde donde hemos enviado el trabajo como directorio de trabajo en lugar del directorio del usuario ($HOME)
#$ -o mi_trabajo.$JOB_ID.out
Indica que la salida del trabajo se guarde en el fichero mitrabajo.$JOB_ID.out en el directorio del trabajo. $JOB_ID es el número de identificación del Trabajo que le asigna Grid Engine
#$ -e mi_trabajo.$JOB_ID.err
Indica que la salida de errores del trabajo se guarde en el fichero mitrabajo.$JOB_ID.out en el directorio del trabajo. $JOB_ID es el número de identificación del Trabajo que le asigna Grid Engine
/bin/echo .. Ejecutables
Como la variable JOB_ID existen otros variables del entorno los más importantes son
HOME El directorio del usuario en el nodo de ejecución.
USER La ID del propietario del trabajo.
JOB_ID La ID del trabajo actual.
JOB_NAME El nombre de del trabajo definido con la opción –N.
HOSTNAME Nombre de nodo de ejecución.
SHELL Shell de login del usuario.
TMPDIR Path absoluto al directorio temporal.
TMP Lo mismo que TMPDIR.
NHOSTS Nombres de nodos usado por el trabajo paralelo.
NSLOTS Número de slots de la cola asignados al trabajo paralelo.
QUEUE Nombre de cola en la cual corre el trabajo.
Más información sobre las opciones de qsub y una lista completa de los variables la podemos encontrar en el manual indicado en los enlaces de interés al final de este capítulo, o consultando la página del manual ejecutando:
$ man qsub
Es importante saber que los trabajos no tienen por qué ser ejecutados en el orden en el cual sean enviados porque puede ser que unos trabajos tengan más prioridad que otros o que no haya los recursos necesarios disponibles en el momento.
Aunque menos usado, existe la posibilidad de ejecutar un binario directamente con qsub con el comando
$ qsub –b y <binario>
Como por ejemplo:
[hpuser@login ~]$ qsub -b y /bin/hostname
Your job 184 ("hostname") has been submitted
En este caso, la salida la podemos encontrar en el directorio del usuario en forma de los ficheros hostname.o184 y hostname.e184.