Logs de salida en Casper

En el clúster Casper, por defecto, los logs de salida (tanto de salida estándar como de error) no se generan en el directorio de trabajo del usuario, sino en el nodo de cálculo en el que se está ejecutando el trabajo. Solo cuando finaliza el trabajo los logs se redirigen al directorio de trabajo, permitiendo que se muestre el contenido tanto de la salida estándar como de la salida de error.

Si es necesario hacer un seguimiento de la evolución de un trabajo, siempre es posible redirigir la salida estándar de un programa al directorio de trabajo, concatenando con una tubería la ruta a ese directorio:

lmp -in input.lmp -log $PBS_O_WORKDIR/$PBS_JOBID.log
mpirun -np 4 ./ejecutable > $PBS_O_WORKDIR/$PBS_JOBID.log
./ejecutable > $PBS_O_WORKDIR/$PBS_JOBID.log

Cualquiera de estos ejemplos creará en el directorio desde el que se lanza el trabajo ($PBS_O_WORKDIR) un archivo que coincide con el número de trabajo ($PBS_JOBID.log), lo que posibilita ver la evolución del ejecutable. Con relación a la eficiencia, es importante que la salida de los ejecutables no sea continua, sino que se muestre dejando pasar un tiempo razonable entre mensaje y mensaje, de al menos 10 minutos.

En caso de utilizar fortran, es importante desactivar el buffering con la variable de entorno GFORTRAN_UNBUFFERED_ALL dentro del job de trabajo:

export GFORTRAN_UNBUFFERED_ALL=yes 
./ejecutable > $PBS_O_WORKDIR/$PBS_JOBID.log

Independientemente de estas redirecciones, los logs de salida se seguirán generando a partir de la información del job:

# Nombre del log de salida
#PBS -o prueba.out
# Nombre del log de error
#PBS -e prueba.err

Si deseamos que cada job genere un log distinto, basta comentar esas líneas. De este modo, PBS generará automáticamente los siguientes archivos de salida:

$PBS_JOBNAME.o$PBS_JOBID # Archivo de salida estándar
$PBS_JOBNAME.e$PBS_JOBID # Archivo de salida de error