265 | | ===== Array de jobs ===== |
266 | | La cola PBS permite hacer un conjunto de jobs tratados de manera vectorial. A cada uno de estos jobs la cola PBS le assigna un único valor determinado por las directrices del flag {{{-t [array]}}}. Esto nos puede resultar útil para ejecutar múltiples veces un programa/aplicación en la que va variando un parámetro. Un ejemplo muy sencillo se puede construir con la función [http://www.mathworks.com/help/techdoc/ref/getenv.html genenv] de Matlab que nos permite coger variables del entorno. Para ilustrarlo se crea el archivo de matlab attachment:imprimir_numero.m, el cuál imprime por pantalla unos valores del sistema. Este programa lo ejecutaremos cinco veces independientemente con la siguiente script de colas (llamado matlab_pruebas.pbs): |
267 | | {{{ |
268 | | #!/bin/bash |
269 | | ### Job name |
270 | | #PBS -N MATprueba |
271 | | ### Max run time |
272 | | #PBS -l walltime=00:01:00 |
273 | | ### Queue name |
274 | | #PBS -q grid |
275 | | ### Job mail |
276 | | #PBS -m ea |
277 | | #PBS -M user@unican.es |
278 | | ### Array request |
279 | | #PBS -t 1-5 |
280 | | ### Number of nodes and processors per node |
281 | | #PBS -l nodes=1:ppn=1 |
282 | | |
283 | | cd ${PBS_O_WORKDIR} |
284 | | |
285 | | export LD_ASSUME_KERNEL=2.6.18 |
286 | | export PATH=/software/Matlab_R2009a/bin:$PATH |
287 | | matlab -logfile ${PBS_O_WORKDIR}/log_lluis.err -r "cd ${PBS_O_WORKDIR};imprimir_numero;" -nosplash -nodesktop |
288 | | }}} |
289 | | Lanzamos el job y aparecen: |
290 | | {{{ |
291 | | [user@ui ~]$ qstat -n1 | grep MAT |
292 | | 308635-1.encina user grid MATprueba- 19710 1 -- -- 48:00 R -- wn002 |
293 | | 308635-2.encina user grid MATprueba- 19731 1 -- -- 48:00 R -- wn002 |
294 | | 308635-3.encina user grid MATprueba- 1060 1 -- -- 48:00 R -- wn003 |
295 | | 308635-4.encina user grid MATprueba- 1079 1 -- -- 48:00 R -- wn003 |
296 | | 308635-5.encina user grid MATprueba- 23120 1 -- -- 48:00 R -- wn004 |
297 | | }}} |
298 | | |
299 | | Una vez terminado aparecen los siguientes ficheros en el directorio de trabajo: |
300 | | {{{ |
301 | | [user@ui ~]$ ls -l |
302 | | -rw-r--r-- 1 user gmeteo 1030 Dec 14 17:43 log_user.err |
303 | | -rwxr-xr-x 1 user gmeteo 526 Dec 14 17:42 matlab_prueba.pbs |
304 | | -rw------- 1 user gmeteo 374 Dec 14 17:43 MATprueba.e308635-1 |
305 | | -rw------- 1 user gmeteo 374 Dec 14 17:43 MATprueba.e308635-2 |
306 | | -rw------- 1 user gmeteo 374 Dec 14 17:43 MATprueba.e308635-3 |
307 | | -rw------- 1 user gmeteo 374 Dec 14 17:43 MATprueba.e308635-4 |
308 | | -rw------- 1 user gmeteo 374 Dec 14 17:43 MATprueba.e308635-5 |
309 | | -rw------- 1 user gmeteo 1121 Dec 14 17:43 MATprueba.o308635-1 |
310 | | -rw------- 1 user gmeteo 1121 Dec 14 17:43 MATprueba.o308635-2 |
311 | | -rw------- 1 user gmeteo 1121 Dec 14 17:43 MATprueba.o308635-3 |
312 | | -rw------- 1 user gmeteo 1121 Dec 14 17:43 MATprueba.o308635-4 |
313 | | -rw------- 1 user gmeteo 1121 Dec 14 17:43 MATprueba.o308635-5 |
314 | | }}} |
315 | | Aparecen los ficheros de salida de los cinco jobs. Miramos el contenido del tercero: |
316 | | {{{ |
317 | | [user@ui ~]$ cat MATprueba.e308635-3 |
318 | | which: no shopt in (/software/Matlab_R2009a/bin:/software/CentOS/5.2/netcdf/4.1.1/gcc-gfortran4.1.2/bin:/opt/d-ca |
319 | | che/srm/bin:/opt/d-cache/dcap/bin:/opt/edg/bin:/opt/glite/bin:/opt/globus/bin:/opt/lcg/bin:/bin:/usr/bin:/oceano/ |
320 | | gmeteo/users/lluis/bin) |
321 | | [user@ui ~]$ cat MATprueba.o308635-3 |
322 | | Warning: No display specified. You will not be able to display graphics on the screen. |
323 | | Warning: No window system found. Java option 'MWT' ignored |
324 | | |
325 | | < M A T L A B (R) > |
326 | | Copyright 1984-2009 The MathWorks, Inc. |
327 | | Version 7.8.0.347 (R2009a) 64-bit (glnxa64) |
328 | | February 12, 2009 |
329 | | |
330 | | |
331 | | To get started, type one of these: helpwin, helpdesk, or demo. |
332 | | For product information, visit www.mathworks.com. |
333 | | |
334 | | |
335 | | shellpath = |
336 | | |
337 | | /software/Matlab_R2009a/bin:/software/CentOS/5.2/netcdf/4.1.1/gcc-gfortran4.1.2/bin:/opt/d-cache/srm/bin:/opt/d-ca |
338 | | che/dcap/bin:/opt/edg/bin:/opt/glite/bin:/opt/globus/bin:/opt/lcg/bin:/bin:/usr/bin:/oceano/gmeteo/users/lluis/bin |
339 | | |
340 | | Este es el path: /software/Matlab_R2009a/bin:/software/CentOS/5.2/netcdf/4.1.1/gcc-gfortran4.1.2/bin:/opt/d-cache/ |
341 | | srm/bin:/opt/d-cache/dcap/bin:/opt/edg/bin:/opt/glite/bin:/opt/globus/bin:/opt/lcg/bin:/bin:/usr/bin:/oceano/gmete |
342 | | o/users/lluis/bin |
343 | | |
344 | | pbsjob = |
345 | | |
346 | | 308635-3.encina |
347 | | |
348 | | Esta es la realizacion: "308635-3.encina" |
349 | | |
350 | | num = |
351 | | |
352 | | 3 |
353 | | |
354 | | |
355 | | num = |
356 | | |
357 | | 3 |
358 | | |
359 | | Este es el numero: 3 |
360 | | }}} |
361 | | Mientras que en el correo (llegando por orden de finalización), me aparecen 5 correos con el título:{{{PBS JOB 308635-[N].ce01.macc.unican.es}}} siendo [N]=(1,5). El contenido del correo {{{#3}}} |
362 | | {{{ |
363 | | PBS Job Id: 308635-3.encina |
364 | | Job Name: MATprueba-3 |
365 | | Exec host: wn003.macc.unican.es/0 |
366 | | Execution terminated |
367 | | Exit_status=0 |
368 | | resources_used.cput=00:00:02 |
369 | | resources_used.mem=0kb |
370 | | resources_used.vmem=0kb |
371 | | resources_used.walltime=00:00:18 |
372 | | }}} |
373 | | |