5 | | Dentro de las máquinas del cluster hay una que se encarga de distribuir los trabajos, asignando nodos a los jobs según estén o no disponibles para ser utilizados por la cola especificada ('''macc''', '''hmem''', etc.). Esta máquina es ce01.macc.unican.es (submitting machine). Salvo necesidad expresa la cola común al grupo es la cola '''macc''', siendo el resto de ellas generadas para uso específico, ya sea de gente del grupo meteo (modelización, portal, etc.) o de otros grupos de investigación y proyectos (EELA, ENSEMBLES, etc.). |
| 5 | El acceso al cluster por ssh es 'mar.macc.unican.es' y los trabajos en Matlab hay que lanzarlos utilizando 'enviamatlab.sh', que se encarga de mandar el trabajo a la cola 'estadistica', que es la cola por defecto para los trabajos de Matlab; esta cola puede ejecutar hasta 24 trabajos a la vez: nodos WN10, WN11 y WN12 ('''nodes'''), con 8 procesadores cada uno ('''ppn'''). El script 'enviamatlab.sh' se ha añadido en un directorio del cluster ({{{/software/MachineIndependent/bin/}}}) accesible por todos los usuarios. Por tanto, si os logueais en mar y poneis '{{{which enviamatlab.sh}}}' (es decir, busca la ruta donde está '{{{enviamatlab.sh}}}') todos deberíais ver: |
9 | | ---- |
10 | | == Envío de trabajos == |
| 12 | Por tanto, para ejecutar cualquier programa de Matlab basta que llaméis a este script desde el directorio donde tengáis el fichero ".m" que queráis ejecutar '''SIN TENER UNA COPIA EN LOCAL''': |
| 13 | |
| 14 | {{{ |
| 15 | [gutierjm@mar ~]$ enviamatlab.sh script.m |
| 16 | }}} |
| 17 | De este modo, se generarán en la carpeta dos ficheros: |
| 18 | |
| 19 | * '''matlabqsub.20091123T105716:''' este fichero lo genera el enviamatlab y será el que arranque matlab y ejecute el srcipt.m. El final del nombre es la fecha de ejecución. |
| 20 | * '''script.20091123T105716.log:''' en este fichero se recoge la salida por pantalla de Matlab. |
| 21 | |
| 22 | Al final de la ejecución del script.m se genera un nuevo fichero '''script.o114037''', donde el número indica el identificador del job ejecutado. |
| 23 | |
| 24 | Una vez ejecutamos la función nos aparecerá por pantalla una serie de mensajes, como se muestra en el ejemplo, en los que se muestra la información del trabajo enviado. En la última línea se muestra el identificador del trabajo ('''!JobId''', en el ejemplo '''121176''') seguido del nombre de la máquina, ce01.macc.unican.es (esta máquina es el submitting machine, pero no es la que ejecuta el job; para monitorizar los jobs ver la sección de monitorización) . Este identificador nos servirá para informarnos del estado del trabajo. |
| 25 | |
| 26 | {{{ |
| 27 | [rodri@mar ~]$ ./enviamatlab.sh test.m |
| 28 | #!/bin/bash |
| 29 | #PBS -N test |
| 30 | #PBS -q macc |
| 31 | #PBS -l nodes=1:ppn=1 |
| 32 | #PBS -l walltime=48:00:00 |
| 33 | #PBS -m ea |
| 34 | #PBS -M rmanzanas@ifca.unican.es |
| 35 | #PBS -r n |
| 36 | export LD_ASSUME_KERNEL=2.6.18 |
| 37 | export PATH=/software/Matlab_R2009a/bin:$PATH |
| 38 | matlab -logfile /vols/mar/users/rodri/ejemplo/logs/log_20091209181811.err -r "cd /vols/mar/users/rodri/ejemplo;test;" -nosplash -nodesktop |
| 39 | exit 0 |
| 40 | 121176.ce01.macc.unican.es |
| 41 | }}} |
| 42 | |
| 43 | Por defecto, ''enviaMatlab'' envía los trabajos a un sólo procesador (ppn) con un límite de 750mb de memoria. Si el job consume más memoria, la cola lo interrumpe. Si se necesita correr trabajos que consuman más memoria hay una opción para reservar el doble de memoria: |
| 44 | {{{ |
| 45 | [gutierjm@mar ~]$ enviamatlab.sh test.m -l mem=1500mb -l nodes=1:ppn=2 |
| 46 | }}} |
| 47 | o cuatro veces más (hasta 3GB de memoria). Si necesitáis ejecutar jobs que requieran más memoria, hablar con Sixto o con Antonio. |
| 48 | {{{ |
| 49 | [gutierjm@mar ~]$ enviamatlab.sh test.m -l mem=3000mb -l nodes=1:ppn=4 |
| 50 | }}} |
| 51 | |
| 52 | == Configuración de correo para recepción de mensajes (job terminado, etc.) == |
35 | | {{{ |
36 | | [gutierjm@mar ~]$ which enviamatlab.sh |
37 | | /software/MachineIndependent/bin/enviamatlab.sh |
38 | | }}} |
39 | | |
40 | | Por tanto, para ejecutar cualquier programa de Matlab basta que llaméis a este script, '''SIN NECESIDAD DE TENER UNA COPIA EN LOCAL''': |
41 | | |
42 | | {{{ |
43 | | [gutierjm@mar cluster]$ enviamatlab script.m |
44 | | }}} |
45 | | De este modo, se generarán en la carpeta dos ficheros: |
46 | | |
47 | | * '''matlabqsub.20091123T105716:''' este fichero lo genera el enviamatlab y será el que arranque matlab y ejecute el srcipt.m. El final del nombre es la fecha de ejecución. |
48 | | * '''script.20091123T105716.log:''' en este fichero se recoge la salida por pantalla de Matlab. |
49 | | |
50 | | Al final de la ejecución del script.m se genera un nuevo fichero '''script.o114037''', donde el número indica el identificador del job ejecutado. |
51 | | |
52 | | Para realizar trabajos con Matlab2009 es necesario generar un enviamatlab2009.sh equivalente al que se usa para el Matlab6.5 pero que arranque directamente la última versión de matlab ya que el cluster, por defecto, arranca la anterior. Dicha función podeis pedírsela a Rodri, Sixto o descargarla directamente en esta página, guardarla en vuestro home y exportar el path donde se encuentra mediante la orden: |
53 | | |
54 | | {{{ |
55 | | EXPORT PATH="/oceano/gmeteo/users/nombreusuario" |
56 | | }}} |
57 | | Si el script se llama enviamatlab2009.sh, su ejecución es equivalente a la expuesta en el caso anterior sin más que cambiar enviamatlab por enviamatlab2009.sh. De igual modo, se generarán los ficheros anteriores durante la ejecución del job. |
58 | | |
59 | | Una vez tenemos estas funciones y nos hemos conectado a oceano, para enviar el trabajo debemos situarnos en el directorio en el cual se encuentre el script que queremos ejecutar. Para realizar el envío, las funciones enviamatlab2009.sh o enviamatlab65.sh tienen que estar en el '''mismo directorio''' que el script en cuestión. |
60 | | |
61 | | ''En todos los ejemplos siguientes se ha utilizado enviamatlab2009.sh, pero si se quisiése realizar un trabajo con la versión 6.5 de Matlab bastaría simplemente con sustituir enviamatlab2009.sh por enviamatlab65.sh'' |
62 | | |
63 | | Una vez ejecutamos la función nos aparecerá por pantalla una serie de mensajes, como se muestra en el ejemplo, en los que se muestra la información del trabajo enviado. En la última línea se muestra el identificador del trabajo ('''!JobId''', en el ejemplo '''121176''') seguido del nombre de la máquina, ce01.macc.unican.es. Este identificador nos servirá para informarnos del estado del trabajo. |
64 | | |
65 | | {{{ |
66 | | [rodri@oceano ejemplo]$ ./enviamatlab2009.sh test |
67 | | #!/bin/bash |
68 | | #PBS -N test |
69 | | #PBS -q macc |
70 | | #PBS -l nodes=1:ppn=1 |
71 | | #PBS -l walltime=48:00:00 |
72 | | #PBS -m ea |
73 | | #PBS -M rmanzanas@ifca.unican.es |
74 | | #PBS -r n |
75 | | export LD_ASSUME_KERNEL=2.6.18 |
76 | | export PATH=/software/Matlab_R2009a/bin:$PATH |
77 | | matlab -logfile /vols/mar/users/rodri/ejemplo/logs/log_20091209181811.err -r "cd /vols/mar/users/rodri/ejemplo;test;" -nosplash -nodesktop |
78 | | exit 0 |
79 | | 121176.ce01.macc.unican.es |
80 | | }}} |