Diferencia entre revisiones de «Usoslurm»
(No se muestran 18 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
= 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 | |||
= 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. | 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=" | <syntaxhighlight lang="bash" line> | ||
#!/bin/bash | #!/bin/bash | ||
#SBATCH -p | #SBATCH -p cpu | ||
#SBATCH --job-name=testg5pdb # Job name | #SBATCH --job-name=testg5pdb # Job name | ||
#SBATCH -e slurm-%j.err | #SBATCH -e slurm-%j.err | ||
#SBATCH -o slurm-%j.out | #SBATCH -o slurm-%j.out | ||
#SBATCH --cpus-per-task | #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)" | eval "$(conda shell.bash hook)" | ||
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 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Línea 24: | Línea 91: | ||
<code> | <code> | ||
sbatch blast.sh | sbatch blast.sh | ||
</code> | </code> | ||
Línea 32: | Línea 97: | ||
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 / 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 -p gpu # usar particion de GPU | |||
#SBATCH --cpus-per-task 4 | |||
#SBATCH --gres=gpu:1 # cantidad de gups a utilizar | |||
</syntaxhighlight> | |||
= Ejemplo para Amber = | |||
Completar!! | |||
= Script con parámetros = | |||
Pasar el limpio esto: https://gist.github.com/ezequieljsosa/f820947b9c3a861930013bc37b2ff5b1 | |||
= Usar AlphaFold = | |||
<syntaxhighlight lang="bash" > | |||
# 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 | |||
</syntaxhighlight> |
Revisión actual del 17:25 24 oct 2023
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