-
Notifications
You must be signed in to change notification settings - Fork 4
Clúster: Uso del clúster
Como usuarios del clúster es necesario considerar varios factores para una buena ejecución de los trabajos que enviamos. La localización de los datos en el clúster los permisos y el estado de las colas de ejecución del clúster.
Aunque la manera formal es utilizar qsub, normalmente queremos que el comando que acabamos de escribir en la terminal se ejecute en el cluster, no en esta máquina. Para estos fines, nuestro amigo es fsl_sub. Para usarlo, simplemente lo anteponemos a cualquier comando a ejecutar, con todo y los argumentos propios del comando a ejecutar. De manera general:
fsl_sub <comando> [argumentos]
De esta forma, si queremos ejecutar el comando ls en el cluster, simplemente escribimos fsl_sub ls, y si quisieramos argumetos, pondríamos, por ejemplo, fsl_sub ls -lart.
fsl_sub tiene varias opciones que controlan en qué sistema de colas va a correr nuestro trabajo, la prioridad del mismo, e incluso nos permite utilizar un archivo lleno de jobs para mandar como un arreglo al cluster. Quizás la opción más util es la de nombrar a nuestro job, que por defecto simplemente será bautizado con un aburrido número. Si hemos enviado a procesar los datos de 50 sujetos al cluster, por ejemplo, nos gustaría saber qué sujetos siguen en ejecución. Para ésto, usamos:
fsl_sub -N <nombreDelJob>
por ejemplo: fsl_sub -N suj331 recon-all -all -subjid 331.
El identificador suj331 aparecerá en la lista de jobs cuando usemos
qstat. Ojo, pues los nombres de jobs no pueden iniciar con un número.
Un ejemplo veloz para mandar a procesar a 5 sujetos en freesurfer:
for suj in 301 302 303 304 305; do fsl_sub -N s${suj} recon-all -all -subjid $suj;done
en este ejemplo, cada job tiene la forma recon-all -all -subjid $suj,
donde $suj toma el valor de 301 a 305. Estudia la sintaxis de fsl_sub
y trata de entender cómo se le hizo.
fsl_sub hace mucho más fácil enviar jobs al cluster. Simplemente se le antepone el comando a cualquier otro comando que hubiera corrido localmente. Si las carpetas input y output son visibles a través del cluster, el usuario no tiene nada más que hacer.
fsl_sub es parte de las herramientas de fsl. Es un wrapper para el comando qsub, que es el que verdaderamente manda los jobs al cluster. Para más información del uso de fsl_sub consulta aquí.
Si quieres aprender a utilizar qsub de verdad, consulta acá. Ahí encontrarás el verdadero poder de qsub. Pero como dijo tío Ben: "Con gran poder viene gran responsabilidad".
ℹ️ Podemos usar fsl_sub -s smp,$nthreads miscript.sh, donde -s significa ambiente paralelo, y sus opciones son smp que así está bautizado el ambiente configurado en Don Clusterio, y 4 que es un ejemplo de cuantos threads quiere uno usar. El número de threads es distinto en cada PC, pero la gran mayoría tiene 7; solo las más nuevas como nyquist o geminis tienen 15 Ejemplo: fsl_sub -s smp,7 tckgen -nthreads 7 -algorithm iFOD2 -seed_image mask.mif csd.mif tractos.tck. Nótese como -s smp,7 y -nthreads 7 coinciden. Así, la PC a la que le caiga usará 7 de sus 7 slots en este job en particular, y no le puede caer otro job similar de manera simultánea. En una PC con 15 slots, le pueden caer dos de estos jobs sin problemas, y no se pone lenta.
Para conocer el estado de las colas de ejecución se pueden usar los siguientes comandos:
qstat -f
Permite ver los trabajos en una lista de hosts con los slot's en uso
locales/clúster/disponibles.
qstat -u '*'
Permite ver todos los trabajos de todos los usuarios en ejecución
qstat
Sólo muestra los trabajos del usuario que lo ejecuta
qdel #
Permite borrar trabajos de la cola de ejecución, en este caso # se sustituye
por el número del trabajo que se quiere eliminar
qdel -u usuario
Borra todos los trabajos del usuario.
Por favor revisa la página donde se explican los posibles errores
Por defecto, algunas herramientas como Feat o probtrack utilizan el cluster. A veces no lo quieres usar.
Para correr trabajos de fsl en la máquina de manera local sin entrar al clúster se puede usar los comandos:
unset FSLPARALLEL
unset SGE_ROOT
A partir de que se escribe esto en la terminal, el uso de programas se hará de forma local sin mandarlos al clúster. Sin embargo el equipo seguira formando parte del clúster. Cuando abras una nueva terminal se quitará este efecto mágico, y regresarás al default de sí usar el cluster.
No es posible paralelizar funciones de matlab al estilo matlab pool. Sin embargo, sí es posible paralelizar trabajos de matlab encapsulándolos en bash y mandándolos al cluster mediante SGE. Sigue estas instrucciones para aprender cómo.
Tabla de contenidos
- Home
- Como colaborar en la Wiki
- rocket.chat
- Resonadores
- Bash
- Clúster
- Procesamiento de Imágenes
- fMRI
- DW-MRI
- FIJI - Análisis histológico
- Herramientas Software
- Otros