Enviando al cluster varios trabajos basados en el mismo ejecutable

Introducción.

Frecuentemente será necesario enviar múltiples trabajos al cluster que se encuentren basados en el mismo ejecutable, esto es especialmente útil cuando una misma tarea se debe ejecutar en varias ocasiones de manera concurrente o cuando se necesita procesar de manera concurrente una gran cantidad de información dispersa en múltiples archivos.

Ejecutar varios trabajos.

Para indicarle a Condor que se desea ejecutar varias instancias del mismo trabajo sólo es necesario indicarle la cantidad a través de la instrucción Queue del archivo de lanzamiento.

Para evitar la confusión que puede generar el registro de n trabajos volcado sobre los tres únicos archivos de error, salida y log, es posible indicarle a Condor que los diferencie para cada una de las instancias del trabajo ejecutado, utilizando la seudovariable $(Process).

Otra variable del archivo de lanzamiento que cobra especial importancia en este contexto es Input la cual permite especificar la información que se ingresaría al programa a través de la entrada estándar (stdin).  Esto permite que se personalice la ejecución de cada uno de los trabajos a pesar de que se basan en el mismo ejecutable.

Executable  = MyJob
Universe    = standard
Input       = MyJob-$(Process).in
Output      = _MyJob-$(Process).out
Error       = _MyJob-$(Process).err
Log         = _MyJob-$(Process).log

Queue 3

Si se consulta la cola de trabajos del cluster inmediatamente después de lanzar el trabajo podrán apreciarse los 3 trabajos lanzados efectivamente, todos bajo el mismo identificador (38 en este caso) y diferentes subidentificadores (los representados finalmente por $(Process)).

$ condor_q

-- Submitter: c-head.jorgeivanmeza.com : <192.168.1.210:9293> : c-head.jorgeivanmeza.com
ID      OWNER            SUBMITTED     RUN_TIME ST PRI SIZE CMD
38.0   jimezam         7/12 23:51   0+00:00:01 R  0   7.3  MyJob
38.1   jimezam         7/12 23:51   0+00:00:01 R  0   7.3  MyJob
38.2   jimezam         7/12 23:51   0+00:00:00 I  0   7.3  MyJob

3 jobs; 1 idle, 2 running, 0 held

La ejecución del archivo de lanzamiento anterior ejecutaría tres procesos basados en el programa MyJob el cual se deberá encontrar recompilado para el universo estándar, tomará la entrada estándar para cada una de las instancias de los archivos MyJob-#.in (que por obvias razones deberán existir previamente) y generará los archivos individuales de salida estándar, error y registro para cada una de las instancias ejecutadas con los nombres de _MyJob-#.out, _MyJob-#.err y _MyJob-#.log respectivamente.  El caracter # será reemplazado por el subidentificador interno del trabajo que empezará en cero y aumentará consecutivamente según la cantidad de trabajos que se haya solicitado encolar.

Después de la ejecución del trabajo propuesto como ejemplo este podría ser el contenido del directorio de trabajo.

-rw-rw-r-- 1 jimezam jimezam       0 Jul 12 23:32 _MyJob-0.err
-rw-rw-r-- 1 jimezam jimezam       4 Jul 12 23:40 MyJob-0.in
-rw-rw-r-- 1 jimezam jimezam     622 Jul 12 23:32 _MyJob-0.log
-rw-rw-r-- 1 jimezam jimezam     101 Jul 12 23:32 _MyJob-0.out

-rw-rw-r-- 1 jimezam jimezam       0 Jul 12 23:32 _MyJob-1.err
-rw-rw-r-- 1 jimezam jimezam       4 Jul 12 23:40 MyJob-1.in
-rw-rw-r-- 1 jimezam jimezam     622 Jul 12 23:32 _MyJob-1.log
-rw-rw-r-- 1 jimezam jimezam     101 Jul 12 23:32 _MyJob-1.out

-rw-rw-r-- 1 jimezam jimezam       0 Jul 12 23:32 _MyJob-2.err
-rw-rw-r-- 1 jimezam jimezam       4 Jul 12 23:40 MyJob-2.in
-rw-rw-r-- 1 jimezam jimezam     622 Jul 12 23:32 _MyJob-2.log
-rw-rw-r-- 1 jimezam jimezam     101 Jul 12 23:32 _MyJob-2.out

-rwxrwxr-x 1 jimezam jimezam 5461004 Jul 12 23:07 MyJob
-rw-rw-r-- 1 jimezam jimezam     384 Jul 12 23:06 MyJob.c
-rw-rw-r-- 1 jimezam jimezam     211 Jul 12 23:32 MyJob.submit

Utilizar directorios de inicio diferentes.

Otra facilidad que provee la sintáxis del archivo de lanzamiento de trabajos es la posibilidad de ejecutar los diferentes trabajos basados en el mismo ejecutable pero ubicados en diferentes directorios.  Esto evita las colisiones con los nombres de los archivos (solventadas inicialmente con el uso de $(Process)) y brinda un mayor orden a los archivos de datos.

Executable     = MyJob
Universe       = standard
Input          = MyJob.in
Output         = _MyJob.out
Error          = _MyJob.err
Log            = _MyJob.log           
initialdir     = job_$(Process)

Queue 3

Para lanzar este trabajo será necesario que existan los directorios iniciales de trabajo (job_0, job_1 y job_2) previamente y en cada uno de ellos exista el archivo MyJob.in cuyo contenido se utilizará como entrada estándar para cada una de las instancias.  Nótese como no habrá colisiones entre los nombres de los archivos (in, out, err y log) entre los diferentes trabajos aunque no se utilizó la seudovariable $(Process) para diferenciarlos ya que se ubicarán en diferentes directorios.

Después de la ejecución del trabajo propuesto como ejemplo este podría ser el contenido de los directorios de trabajo.

-rw-rw-r-- 1 jimezam jimezam   0 Jul 12 23:51 job_0/_MyJob.err
-rw-rw-r-- 1 jimezam jimezam   4 Jul 12 23:51 job_0/MyJob.in
-rw-rw-r-- 1 jimezam jimezam 622 Jul 12 23:51 job_0/_MyJob.log
-rw-rw-r-- 1 jimezam jimezam 107 Jul 12 23:51 job_0/_MyJob.out

-rw-rw-r-- 1 jimezam jimezam   0 Jul 12 23:51 job_1/_MyJob.err
-rw-rw-r-- 1 jimezam jimezam   4 Jul 12 23:51 job_1/MyJob.in
-rw-rw-r-- 1 jimezam jimezam 622 Jul 12 23:51 job_1/_MyJob.log
-rw-rw-r-- 1 jimezam jimezam 107 Jul 12 23:51 job_1/_MyJob.out

-rw-rw-r-- 1 jimezam jimezam   0 Jul 12 23:51 job_2/_MyJob.err
-rw-rw-r-- 1 jimezam jimezam   4 Jul 12 23:51 job_2/MyJob.in
-rw-rw-r-- 1 jimezam jimezam 622 Jul 12 23:51 job_2/_MyJob.log
-rw-rw-r-- 1 jimezam jimezam 107 Jul 12 23:51 job_2/_MyJob.out

Enlaces.

Related posts:

  1. Enviando trabajos al universo vanilla del cluster
  2. Enviando trabajos al universo Java del cluster
  3. Enviando trabajos al universo estándar del cluster
  4. C-Cluster: Probando la configuración de Condor 7.4.2

Category: Utilización | Tags: , , , , Comment »


Leave a Reply



 

Back to top