wiki:Enviamatlab

Version 18 (modified by gutierjm, 11 years ago) (diff)

--

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'). En la versión 2009 (que es la que usa el cluster actualmente) Matlab puede consumir mas CPU de la asignada si no se usa correctamente. Esto está resuelto en el script 'enviamatlab', pero para sesiones interactivas hay que habilitar una opción especial de la sesión ('help maxNumCompThreads', para más detalles), por lo que no deben utilizarse sesiones interactivas para enviar trabajos en Matlab salvo que se haga con la ayuda de Antonio o Sixto.

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 (sino hablar con Antonio o Sixto):

[gutierjm@mar ~]$ which enviamatlab.sh
/software/MachineIndependent/bin/enviamatlab.sh

Para ejecutar cualquier programa de Matlab hay que llamar a este script desde el directorio donde tengáis el fichero ".m" (en el ejemplo de abajo, en el home "~"):

[gutierjm@mar ~]$ enviamatlab.sh script.m

De este modo, se generarán en la carpeta dos ficheros:

  • 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.
  • script.20091123T105716.log: en este fichero se recoge la salida por pantalla de Matlab.

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.

Una vez ejecutamos la función nos aparecerá por pantalla una serie de mensajes con 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) .

[rodri@mar ~]$ ./enviamatlab.sh test.m
#!/bin/bash
#PBS -N test 
#PBS -q macc
#PBS -l nodes=1:ppn=1 
#PBS -l walltime=48:00:00  
#PBS -m ea
#PBS -M rmanzanas@ifca.unican.es
#PBS -r n
export LD_ASSUME_KERNEL=2.6.18
export PATH=/software/Matlab_R2009a/bin:$PATH
matlab -logfile /vols/mar/users/rodri/ejemplo/logs/log_20091209181811.err -r "cd /vols/mar/users/rodri/ejemplo;test;" -nosplash -nodesktop 
exit 0   
121176.ce01.macc.unican.es

Por defecto, enviamatlab envía los trabajos a un sólo procesador (ppn) con un límite de 750mb de memoria (mem). 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:

[gutierjm@mar ~]$  enviamatlab.sh  test.m -l mem=1500mb -l nodes=1:ppn=2

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.

[gutierjm@mar ~]$  enviamatlab.sh  test.m -l mem=3000mb -l nodes=1:ppn=4

Configuración de correo para recepción de mensajes (job terminado, etc.)

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:

export EMAIL=tuemail[at]unican.es
source /software/etc/bashrc

El fichero final debería ser tal que así (se ha cogido como ejemplo el .bashrc del home de Rodri):

export EMAIL="rmanzanas@ifca.unican.es"
source /software/etc/bashrc

Para ello, basta hacer:

[gutierjm@mar cluster]$ vi .bashrc

editar el fichero justo al final "G", incluir "i" las dos líneas anteriores. Luego presionar "escape" y escribir ":x" (comando para salir guardando) y presionar "enter".

El 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.

Observaciones

En este apartado podéis escribir las observaciones, dificultades o aclaraciones que encontréis o creáis necesarias a la hora de usar el cluster.

  • Es importante tener en cuenta que el Matlab en el que se arranca el proceso no tiene porque tener inicializada MeteoLab y que, por lo tanto, debemos añadir al script una orden para que la inicialice. Bastaría con añadir al inicio del script la ruta de acceso al MeteoLab que utilicemos (es recomendable tenerla siempre actualizada en nuestro home), ejecutar el programa init (que arranca la toolbox) y volver al directorio en el que queremos trabajar. De este modo podremos trabajar con todas las funciones de MeteoLab.
  • A la hora de marcar las rutas en Linux debemos usar los elementos propios de este sistema. En particular debemos usar la '/' en lugar de la '\' usada habitualmente en Windows. Es importante crear los scripts de modo que puedan ser entendidos en Linux. Para consultar dudas podéis preguntar a Chus, Antonio, etc.
  • Siempre que tengamos algún problema con la sintaxis de un comando o no sepamos exactamente qué es lo que hace podemos acudir a su manual. Por ejemplo, en el caso del comando qstat (monitorización de trabajos) bastaría con teclear man qstat.

Attachments (1)

Download all attachments as: .zip