Diferencia entre revisiones de «Usoslurm»

De ClusterQB
Ir a la navegación Ir a la búsqueda
Línea 1: Línea 1:
Todos los trabajos enviados, para que puedan ser ejecutados dentro de la cola, deben ejecutarse utilizando Slurm.
= IMPORTANTE =
 
Nunca, jamas, ejecutar un trabajo directamente sobre la terminal.
El trabajo nunca terminara y estará perjudicando a TODOS los usuarios del cluster.
 
= Cola de trabajos =
Explicar lo que es el slurm, los recursos GPU, CPU y particiones
 
= Permisos =
 
Usted como usuario, NO tiene permisos de admin ni sudo, eso implica que no puede instalar
programas o librerias a nivel sistema, por ejemplo con apt-get, snap o R.
Siempre que quiera usar algo verifique primero si esta en [programas|programas disponibles].
Si no es así, debe instalar su propio ambiente en su usuario. Para eso recomendamos el uso de Miniconda https://docs.conda.io/en/latest/miniconda.html
 
 
= Tipos de trabajos =
 
== qué hago si debo descargar un programa ?  ==
Si la operacion consiste solo en descargar datos, por ejemplo con wget o rsync,
recomendamos abrir una sesión de screen y realizar la descarga directamente.
 
Tenga en cuenta que, a nivel red de la FCEN, estan bloqueados TODOS los puertos menos los standard
(http 80, https 443,  ftp 21, ssh 22 ). Si quiere descargar algo que no esta en esos puertos,
tendra que hacerlo desde otro lado y luego copiarlo a su usuario.
 
Tambien recomendamos mirar la carpeta /home/shared/databases en la cual hay numerosas base de datos descargadas.
 
 
== qué hago si debo compilar o preprocesar datos  ==
 
Para eso recomendamos usar una session interactiva:
 
<syntaxhighlight lang="bash">
screen # recomendamos para evitar problemas de conexion
srun --nodes=1 --ntasks-per-node=1 --cpus-per-task=1 --time=01:00:00  --pty bash -i
</syntaxhighlight>
 
Con esto, se asignara un procesador sobre un nodo y se ofrecera una consola de manera interactiva (si es que hay una disponible),
ahi podra realizar los comandos que necesite, por ejemplo: "make", "gcc", find, md5, "makeblastdb", etc...
 
Aqui debe pedir solo un nodo y solo un procesador
 
 
= Slurm =


Para eso se debe crear un archivo bash, que contenga que parametros utilizara el script, para que pueda ser encolado de acuerdo a los recursos disponibles.
Para eso se debe crear un archivo bash, que contenga que parametros utilizara el script, para que pueda ser encolado de acuerdo a los recursos disponibles.
Línea 6: Línea 50:


blast.sh
blast.sh
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="bash" line>
#!/bin/bash
#!/bin/bash
    
    
Línea 13: Línea 57:
#SBATCH -e slurm-%j.err
#SBATCH -e slurm-%j.err
#SBATCH -o slurm-%j.out
#SBATCH -o slurm-%j.out
#SBATCH  --cpus-per-task 4
#SBATCH  --cpus-per-task 2
##SBATCH --mem=46gb
#SBATCH --mem=4gb




# Se loguean los datos del trabajo
echo "trabajo \"${SLURM_JOB_NAME}\""
echo "trabajo \"${SLURM_JOB_NAME}\""
echo "    id: ${SLURM_JOB_ID}"
echo "    id: ${SLURM_JOB_ID}"
Línea 28: Línea 73:
"
"


# se activa el ambiente de conda
eval "$(conda shell.bash hook)"
eval "$(conda shell.bash hook)"
conda activate blast
source activate blast


# se ejecuta el comando
srun blastp -query vf.fasta -db VFDB_setB_pro.fas
srun blastp -query vf.fasta -db VFDB_setB_pro.fas




echo "
--------------------------------------------------------------------------------
"
# se guarda información de uso
sacct --format=JobID,Submit,Start,End,State,Partition,ReqTRES%30,CPUTime,MaxRSS,NodeList,MaxVMSize,MaxVMSizeNode  --units=M -j $SLURM_JOBID
sacct --format=JobID,Submit,Start,End,State,Partition,ReqTRES%30,CPUTime,MaxRSS,NodeList,MaxVMSize,MaxVMSizeNode  --units=M -j $SLURM_JOBID
</syntaxhighlight>
</syntaxhighlight>
Línea 48: Línea 99:
En este caso, para usar el programa blast, primero se creo un ambiente conda, donde se instalo el mismo.
En este caso, para usar el programa blast, primero se creo un ambiente conda, donde se instalo el mismo.
Si no usa conda, esas 2 lineas NO son necesarias.
Si no usa conda, esas 2 lineas NO son necesarias.
= Mínimo uso de recursos =
Siempre que quiera correr una tarea, asegurese que va a pedir lo minimo posible de CPU / memoria / gpu, sino,
por un lado estara acaparando recursos que no usa y por lo tanto quedaran osciosos y por el otro, será mas dificil que su trabajo entre en la cola de procesamiento
<syntaxhighlight lang="bash" >
#SBATCH  --cpus-per-task 4
#SBATCH --mem=4gb
#SBATCH --gres=gpu:1  # cantidad de gups a utilizar
</syntaxhighlight>

Revisión del 16:37 20 mar 2022

IMPORTANTE

Nunca, jamas, ejecutar un trabajo directamente sobre la terminal. El trabajo nunca terminara y estará perjudicando a TODOS los usuarios del cluster.

Cola de trabajos

Explicar lo que es el slurm, los recursos GPU, CPU y particiones

Permisos

Usted como usuario, NO tiene permisos de admin ni sudo, eso implica que no puede instalar programas o librerias a nivel sistema, por ejemplo con apt-get, snap o R. Siempre que quiera usar algo verifique primero si esta en [programas|programas disponibles]. Si no es así, debe instalar su propio ambiente en su usuario. Para eso recomendamos el uso de Miniconda https://docs.conda.io/en/latest/miniconda.html


Tipos de trabajos

qué hago si debo descargar un programa ?

Si la operacion consiste solo en descargar datos, por ejemplo con wget o rsync, recomendamos abrir una sesión de screen y realizar la descarga directamente.

Tenga en cuenta que, a nivel red de la FCEN, estan bloqueados TODOS los puertos menos los standard (http 80, https 443, ftp 21, ssh 22 ). Si quiere descargar algo que no esta en esos puertos, tendra que hacerlo desde otro lado y luego copiarlo a su usuario.

Tambien recomendamos mirar la carpeta /home/shared/databases en la cual hay numerosas base de datos descargadas.


qué hago si debo compilar o preprocesar datos

Para eso recomendamos usar una session interactiva:

 screen # recomendamos para evitar problemas de conexion
 srun --nodes=1 --ntasks-per-node=1 --cpus-per-task=1 --time=01:00:00  --pty bash -i

Con esto, se asignara un procesador sobre un nodo y se ofrecera una consola de manera interactiva (si es que hay una disponible), ahi podra realizar los comandos que necesite, por ejemplo: "make", "gcc", find, md5, "makeblastdb", etc...

Aqui debe pedir solo un nodo y solo un procesador


Slurm

Para eso se debe crear un archivo bash, que contenga que parametros utilizara el script, para que pueda ser encolado de acuerdo a los recursos disponibles. A continuacion hay un ejemplo de como correr blast:


blast.sh

#!/bin/bash
  
#SBATCH -p debug
#SBATCH  --job-name=testg5pdb         # Job name
#SBATCH -e slurm-%j.err
#SBATCH -o slurm-%j.out
#SBATCH  --cpus-per-task 2
#SBATCH --mem=4gb


# Se loguean los datos del trabajo
echo "trabajo \"${SLURM_JOB_NAME}\""
echo "    id: ${SLURM_JOB_ID}"
echo "    partición: ${SLURM_JOB_PARTITION}"
echo "    nodos: ${SLURM_JOB_NODELIST}"
echo
date +"inicio %F - %T"

echo "
--------------------------------------------------------------------------------
"

# se activa el ambiente de conda
eval "$(conda shell.bash hook)"
source activate blast

# se ejecuta el comando
srun blastp -query vf.fasta -db VFDB_setB_pro.fas


echo "
--------------------------------------------------------------------------------
"
# se guarda información de uso 
sacct --format=JobID,Submit,Start,End,State,Partition,ReqTRES%30,CPUTime,MaxRSS,NodeList,MaxVMSize,MaxVMSizeNode   --units=M -j $SLURM_JOBID

Para ejecutar el comando:

sbatch blast.sh

Recuerde que no tiene permiso de admin, asi que la mayoria del software tendra que instalarla en su usuario. En este caso, para usar el programa blast, primero se creo un ambiente conda, donde se instalo el mismo. Si no usa conda, esas 2 lineas NO son necesarias.


Mínimo uso de recursos

Siempre que quiera correr una tarea, asegurese que va a pedir lo minimo posible de CPU / memoria / gpu, sino, por un lado estara acaparando recursos que no usa y por lo tanto quedaran osciosos y por el otro, será mas dificil que su trabajo entre en la cola de procesamiento

#SBATCH  --cpus-per-task 4
#SBATCH --mem=4gb
#SBATCH --gres=gpu:1   # cantidad de gups a utilizar