Changes between Version 71 and Version 72 of ColasPBS


Ignore:
Timestamp:
Jan 13, 2015 1:43:55 PM (7 years ago)
Author:
carlos
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ColasPBS

    v71 v72  
    118118 
    119119=== Jobs ===
    120 Un job del clúster tiene unos cuantos requerimientos básicos tales como:
    121  * '''número de processos:''' el número de cpus que se requieren para la ejecución del job.
    122  * '''cola de ejecución:''' etiqueta que se le da a un grupo de nodos. Determina los nodos que acogeran todos los jobs que se manden a una cola. Es muy común que un clúster se compartimente en distintas colas a modo de intentar maximizar el rendimiento de un clúster. Estas colas pueden compartir nodos entre ellas y estar asignadas a proyectos y/o grupos de usarios distintos.
    123  * '''wall-time:''' determina el tiempo de ejecución del job dentro del clúster. Una vez pasado este tiempo el job y su aplicación seran detenidos forzosamente. Es un muy común que en los clústers se ejectuen antes los jobs con un wall-time pequeño que con uno de grande.
    124 
    125 ==== Los requerimientos de un job en una cola PBS ====
    126 
    127 En la gestión de colas TORQUE/PBS existen dos términos para referirse a la unidad cálculo: el ''node'' y el ''cpp''. Un ''node'' equivalen a las unidades físicas de cálculo que integran distintas cantidades de cpus ''cpp'' (2, 8, 16,...)
    128 
    129 Las peticiones se hacen por un conjunto de ''flags''. El envio del job al gestor de la cola se puede hacer añadiendo todas las directrices en la línea de comandos de la aplicación, o por medio de una script (archivo de texto con instrucciones de sistema). En según que circumstancias nos va interesar hacerlo de una manera u otra, pero las dos son equivalentes. La estructura tipo de un script (llamado por ejemplo {{{job.pbs}}}) de colas tiene la siguiente estructura:
    130 
     120A continuación se muestra un aplantilla para la ejecución de jobs:
    131121{{{
    132122#!/bin/bash
     
    161151}}}
    162152
    163 En esta plantilla se muestra la sintaxis de los siguientes requerimientos/especificaciones. Se tienen que cambiar los argumentos que estén entre {{{[]}}}.
    164  * ''-N [jobname] :'' nombre del job
    165  * ''-l walltime=[HH]:[MM]:[SS] :'' duración del job (en {{{[horas]:[minutos]:[segundos]}}}).
    166  * ''-l mem=[MM][kb/mb/gb/tb] :'' memoria requerida y límite de la memoria (número entero) en kb: kilobytes, mb: megas, gb: gigas, tb: teras (''NOTA:'' la memoria del nodo se irá consumiendo con los valores de 'mem' de cada job. El job que requiera mas memoria que la que le queda libre al nodo, se quedará a la espera hasta que se libere la memoria necesaria. Si el job al correr supera el límite, el sistema de colas lo matará)
    167  * ''-q [queue] :'' nombre de la cola a la cual se manda el job
    168  * ''-m [flags] :'' indica cuando se tiene que mandar un correo. Si no se pone este requerimiento si el job es abortado por el sistema se manda un correo al usuario (variable {{{MAIL}}}). Hay las siguientes opciones (son combinables):
    169    * ''n'': sin correo
    170    * ''a'': el job es abortado por el sistema
    171    * ''b'': se inicia la ejecución del job
    172    * ''e'': el job a terminado
    173  * ''-M [emailCOUNT]:'' dirección de correo donde se quiere que mande un job
    174  * ''-e [rutaArchivo]:'' ruta del archivo en donde se quiere almacenar la salida estandard del error del job (si no se indica se construye en el directorio donde está el script el archivo ${PBS_JOBNAME}.e${PBS_JOBID})
    175  * ''-o [rutaArchivo]:'' ruta del archivo en donde se quiere almacenar la salida estandard del job (si no se indica se construye en el directorio donde está el script el archivo ${PBS_JOBNAME}.o${PBS_JOBID})
    176  * ''-W depend=afterany:[jobid]:'' el job se mandará a la cola cuando otro job anterior (el número [jobid]) termine su ejecución (no importa como termine)
    177  * ''-t [array]:'' permite tratar un conjunto de jobs cómo una array. Cada job es identificado con un único valor dado por la [array] que se construye como combinación de valores. Por ejemplo:
     153En esta plantilla se muestra la sintaxis de los siguientes directivas PBS/TORQUE:
     154 * '''-N [jobname]''' : nombre del job
     155 * '''-l walltime=[HH]:[MM]:[SS]''' : duración del job (en {{{[horas]:[minutos]:[segundos]}}}).
     156 * '''-l mem=[MM][kb/mb/gb/tb]''' : memoria requerida y límite de la memoria (número entero) en kb: kilobytes, mb: megas, gb: gigas, tb: teras
     157 * '''-q [queue]''' : nombre de la cola a la cual se manda el job
     158 * '''-m [flags]''' : indica cuando se tiene que mandar un correo. Si no se pone este requerimiento si el job es abortado por el sistema se manda un correo al usuario (variable {{{MAIL}}}). Hay las siguientes opciones (son combinables):
     159   * '''n''': sin correo
     160   * '''a''': el job es abortado por el sistema
     161   * '''b''': se inicia la ejecución del job
     162   * '''e''': el job a terminado
     163 * '''-M [emailCOUNT]''': dirección de correo donde se quiere que mande un job
     164 * '''-e [rutaArchivo]''': ruta del archivo en donde se quiere almacenar la salida estandard del error del job (si no se indica se construye en el directorio donde está el script el archivo ${PBS_JOBNAME}.e${PBS_JOBID})
     165 * '''-o [rutaArchivo]''': ruta del archivo en donde se quiere almacenar la salida estandard del job (si no se indica se construye en el directorio donde está el script el archivo ${PBS_JOBNAME}.o${PBS_JOBID})
     166 * '''-W depend=afterany:[jobid]''': el job se mandará a la cola cuando otro job anterior (el número [jobid]) termine su ejecución (no importa como termine)
     167 * '''-t [array]''': permite tratar un conjunto de jobs cómo una array. Cada job es identificado con un único valor dado por la [array] que se construye como combinación de valores. Por ejemplo:
    178168   * 1-100: 100 jobs del 1 al 100
    179169   * 1-5,15,35: 5 jobs del 1 al 5, el 15 y el 35
    180  * ''-v [variable]: ''para mandar un job que tome el valor {{{[variable]}}}
    181  * ''-l nodes=[N]:ppn:[M] :'' número de nodos ({{{[N]}}}) y número de cpus a coger de cada nodo ({{{[M]}}}) la aplicación se repartirá en [N]x[M] cpus
    182 
    183 Para editar un script desde una ventana de mar se puede utilizar {{{nano}}} y/o {{{vi}}} :
     170 * '''-v [variable]''': para mandar un job que tome el valor {{{[variable]}}}
     171 * '''-l nodes=[N]:ppn:[M]''' : número de nodos ({{{[N]}}}) y número de cpus a coger de cada nodo ({{{[M]}}}) la aplicación se repartirá en [N]x[M] cpus
     172
     173Para editar un script utilizar los editores {{{nano}}} y/o {{{vi}}} :
    184174   {{{
    185175[user@ui ~]$ nano job.pbs
     
    219209
    220210===== Lanzar un job con dependencias =====
    221 En este caso, no se lanzará una script attachment:listar.bash hasta que no termine la espera de 60 segundos (una vez corregido el walltime)
     211En este caso, no se lanzará una script [attachment:listar.bash] hasta que no termine la espera de 60 segundos (una vez corregido el walltime)
    222212   {{{
    223213[user@ui ~]$ date