Usoslurm

De ClusterQB
Ir a la navegación Ir a la búsqueda

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


Ejemplo para conda

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 cpu
#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 / 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 -p gpu         # usar particion de GPU
#SBATCH  --cpus-per-task 4
#SBATCH --gres=gpu:1   # cantidad de gups a utilizar

Ejemplo para Amber

Completar!!

Script con parámetros

Pasar el limpio esto: https://gist.github.com/ezequieljsosa/f820947b9c3a861930013bc37b2ff5b1


Usar AlphaFold

# Pedir un nodo con GPU:  -p gpu --gres=gpu:1
 srun --nodes=1 --ntasks-per-node=1 --cpus-per-task=1 -p gpu --gres=gpu:1 --pty bash -i

#cargar el ambiente de conda:
eval "$(/home/shared/miniconda3.8/bin/conda shell.bash hook)"

conda activate colabfold

# ejecutar: primer parámetro son las secuencias, el segundo el directorio de resultados. 
# Para extra información consultar la ayuda de colabfold_batch
colabfold_batch --amber --templates --use-gpu-relax aa.fasta dir_resultados