--
AdminUser - 08 Mar 2023
Mecanismo usado por el sistema para el envío de trabajos en los nodos de la Federación de Cluster del CECC
Los nodos de procesamiento están geográficamente distribuidos entre los edificios de las sedes y el Data Center TIERIII en Cota(Cundinamarca); Para evitar los problemas asociados con la intermitencia y el bajo ancho de banda en la red, realizar un procesamiento rápido y no interrumpido; el sistema ejecutara los trabajo LOCALMENTE; se resume en cuatro pasos:
1.
En su directorio de trabajo el usuario debe crear un(1) directorio nuevo por cada trabajo a enviar y colocar allí los datos a procesar junto a los scripts SLURM.
2. El sistema copiara TODO el contenido del directorio desde el nodo donde se envia(egeo-00, perseus o feynman-00) al directorio local /scratch del nodo que procesara
3.
Se inicia la ejecución en el directorio /scratch
4. Al finalizar el trabajo, el sistema copiara desde /scratch todos los datos al directorio de envío; incluyendo los resultados. La carpeta tendra el número que corresponde al ID del Trabajo(JOB) realizado
Envío de Trabajos por lotes
Si los trabajos ejecutan pasos secuenciales, a cada trabajo SLURM le asignará de manera exclusiva CPU, memoria y otros posibles recursos, de modo que; dos trabajos no pueden compartir los mismos recursos y, solo se puede dar comienzo a trabajos cuando
todos los recursos necesarios están disponibles y, no los use otro trabajo con mayor prioridad; slurm asigna una prioridad a cada trabajo cuando se envían.
Para que la asignación de los recursos que solicita funcione puede describirlos con un conjunto de Directivas en un script; donde se ejecutaran los proceso de modo secuencial (trabajo por lotes).
Un script de envío para SLURM tiene los comentarios ¨#¨ con el prefijo #SBATCH para que sean interpretados como un parámetro que describen la solicitud de recursos y otras opciones de envío.
Un script de trabajo puede ser un arhivo con las siguientes líneas:
Los Script de Trabajos normalmente tienen tres partes, Las Directivas que le dan instrucciones a Slurm acerca de como configurar el trabajo, El software a usar que incluye limpiar el entorno, solicitar el software que requiere su trabajo, ir al directorio, las secuencias del usuario que son propiamente los comandos que usted desea que ejecute su trabajo.
1.
Directivas. Una directiva es un comentario(#) que se incluye en la parte superior del script y le entrega a la
shell información sobre el script. La primera directiva es la
shebang; siempre se escribe en la primera línea de cualquier script: Esta directiva indica cual interprete(bash, sh, perl, etc.) es quien va a ejecutar las lineas restantes. Normalmente los usuarios usan como interprete la shell
bash escribiendo "
#!/bin/bash" .
Las directivas que deben incluirse luego son las
directivas de solicitud a SLURM; con estas directivas se especifican los requisitos que debe gestionar Slurm para iniciar y ejecutar el trabajo; estas directivas van luego de la directiva shebang y antes de que se escriba cualquier comando en el script de trabajo. Cada directiva para Slurm esta demarcada(flags) con "#SBATCH" y la sintaxis --forma de escribirla-- es
#SBATCH --
=
Por ejemplo, si quisiera reservar Todos los recursos de 1 nodo para su trabajo, escribiría:
#SBATCH --nodes=1
Otras directivas que se pueden solicita en la URL DirectivasSLURM
2. Software a usar: Como los trabajos se ejecutan en los nodos de procesamiento, cualquier software que usted necesite debe solicitarse en el script de trabajo. El Software puede solicitarse de la manera en que lo haria directamente desde la shell(consola, terminal). Por ejemplo para incluir en el script el uso de un modulo, primero y por si estan presentes, limpiaremos del ambiente otros modulos, luego cargo los modulos con el software que voy a usar
module purge
module load apps/bbmap/38.34
module load apps/blast/2.9
3. Finalmente, las secuencias de comandos del usuario es última parte de un guión de trabajo: Aqui se incluyen todos los comandos del usuario necesarios para configurar y ejecutar la tarea deseada. Cualquier comando Linux se puede utilizar en este paso. En el ejemplo las secuencias de comandos son los "ecos" y una linea que muestra la version del software.
echo "== This is the scripting step! =="
sleep 30
blastp -version
echo "== End of Job =="