Changes between Version 13 and Version 14 of Enviamatlab


Ignore:
Timestamp:
Oct 5, 2011 6:06:30 PM (11 years ago)
Author:
gutierjm
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Enviamatlab

    v13 v14  
    33----
    44= Envío de trabajos Matlab al cluster =
    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.).
     5El 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:
    66
    7 El acceso al cluster por ssh es 'mar.macc.unican.es' (\\oceano\gmeteo seguirá funcionando para acceder directamente a través de Windows, pero el ssh a oceano será desactivado en cualquier momento). Se puede reservar un nodo para ejecutar Matlab online y hacer pruebas de desarrollo de código, pero la producción hay que hacerla utilizando 'enviamatlab.sh'.
     7 {{{
     8[gutierjm@mar ~]$ which enviamatlab.sh
     9/software/MachineIndependent/bin/enviamatlab.sh
     10}}}
    811
    9 ----
    10 == Envío de trabajos ==
     12Por 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}}}
     17De 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
     22Al 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
     24Una 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
     36export LD_ASSUME_KERNEL=2.6.18
     37export PATH=/software/Matlab_R2009a/bin:$PATH
     38matlab -logfile /vols/mar/users/rodri/ejemplo/logs/log_20091209181811.err -r "cd /vols/mar/users/rodri/ejemplo;test;" -nosplash -nodesktop
     39exit 0   
     40121176.ce01.macc.unican.es
     41}}}
     42
     43Por 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}}}
     47o 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.) ==
    1153'''__NOTA__: '''La primera (y '''sólo la primera''') vez que queramos enviar un trabajo de Matlab al cluster debemos editar el fichero .bashrc de nuestro home de oceano, incluyendo al final del mismo las líneas:
    1254
     
    3072
    3173El que no sepa, que me pregute a mi o a Sixto, pero no tengáis copias del script 'enviamatlab' en local porque estaréis generando errores para el resto de usuarios.
    32 ----
    33 El script 'enviamatlab.sh' ha sido modificado para que las ejecuciones con la nueva versión de Matlab (la 2009) no den problemas de consumo de recursos extra. Por tanto, este script 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:
    3474
    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 }}}
    8175== Observaciones ==
    8276En este apartado podéis escribir las observaciones, dificultades o aclaraciones que encontréis o creáis necesarias a la hora de usar el cluster.