Diferenzas
Isto amosa as diferenzas entre a revisión seleccionada e a versión actual da páxina.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
centro:servizos:hpc [2022/03/16 10:24] – [Software disponible] fernando.guillen | centro:servizos:hpc [2024/03/12 11:10] – [CONDA] fernando.guillen | ||
---|---|---|---|
Liña 12: | Liña 12: | ||
Hay un almacenamiento distribuido accesible desde todos los nodos con 220 TB de capacidad conectado mediante una doble red de fibra de 25Gb. \\ | Hay un almacenamiento distribuido accesible desde todos los nodos con 220 TB de capacidad conectado mediante una doble red de fibra de 25Gb. \\ | ||
\\ | \\ | ||
- | ^ Nombre | + | ^ Nombre |
- | | hpc-login2 | + | | hpc-login2 |
- | | hpc-node[1-2] | + | | hpc-node[1-2] |
- | | hpc-node[3-9] | + | | hpc-node[3-9] |
- | | hpc-fat1 | + | | hpc-fat1 |
- | | hpc-gpu[1-2] | + | | hpc-gpu[1-2] |
- | | hpc-gpu3 | + | | hpc-gpu3 |
- | | hpc-gpu4 | + | | hpc-gpu4 |
===== Conexión al sistema ===== | ===== Conexión al sistema ===== | ||
- | Para acceder al clúster, hay que solicitarlo previamente a través de [[https:// | + | Para acceder al clúster, hay que solicitarlo previamente a través de [[https:// |
El acceso se realiza mediante una conexión SSH al nodo de login: | El acceso se realiza mediante una conexión SSH al nodo de login: | ||
Liña 34: | Liña 34: | ||
Cada nodo tiene una partición local de 1 TB para scratch, que se borra al terminar cada trabajo. Se puede acceder mediante la variable de entorno %%$LOCAL_SCRATCH%% en los scripts. \\ | Cada nodo tiene una partición local de 1 TB para scratch, que se borra al terminar cada trabajo. Se puede acceder mediante la variable de entorno %%$LOCAL_SCRATCH%% en los scripts. \\ | ||
Para datos que deban ser compartidos por grupos de usuarios, hay que solicitar la creación de una carpeta en el almacenamiento compartido que solo será accesible por los miembros del grupo.\\ | Para datos que deban ser compartidos por grupos de usuarios, hay que solicitar la creación de una carpeta en el almacenamiento compartido que solo será accesible por los miembros del grupo.\\ | ||
- | ^ Directorio | + | ^ Directorio |
- | | Home | + | | Home | %%$HOME%% |
- | | Scratch local | %%$LOCAL_SCRATCH%% | + | | Scratch local |
- | | Carpeta de grupo | + | | Carpeta de grupo | %% $GRUPOS/< |
%%* el almacenamiento es compartido%% | %%* el almacenamiento es compartido%% | ||
=== AVISO IMPORTANTE === | === AVISO IMPORTANTE === | ||
Liña 59: | Liña 59: | ||
</ | </ | ||
* Para desmontar la imagen usar el script // | * Para desmontar la imagen usar el script // | ||
+ | <code bash> | ||
+ | sudo umount_image.py | ||
+ | </ | ||
+ | <note warning> | ||
+ | El fichero solo puede montarse desde un único nodo si se hace en modo readwrite, pero puede montarse desde cualquier número de nodos en modo readonly. | ||
+ | </ | ||
El script de montaje tiene estas opciones: | El script de montaje tiene estas opciones: | ||
< | < | ||
Liña 110: | Liña 115: | ||
* Python 3.6.8 | * Python 3.6.8 | ||
* Perl 5.26.3 | * Perl 5.26.3 | ||
+ | En los nodos con GPU, además: | ||
+ | * nVidia Driver 510.47.03 | ||
+ | * CUDA 11.6 | ||
+ | * libcudnn 8.7 | ||
Para usar cualquier otro software no instalado en el sistema u otra versión del mismo hay tres opciones: | Para usar cualquier otro software no instalado en el sistema u otra versión del mismo hay tres opciones: | ||
- Usar Modules con los módulos que ya están instalados (o solicitar la instalación de un nuevo módulo si no está disponible) | - Usar Modules con los módulos que ya están instalados (o solicitar la instalación de un nuevo módulo si no está disponible) | ||
Liña 144: | Liña 152: | ||
uDocker está instalado como un módulo, así que es necesario cargarlo en el entorno: | uDocker está instalado como un módulo, así que es necesario cargarlo en el entorno: | ||
<code bash> | <code bash> | ||
- | ml uDocker | + | ml udocker |
</ | </ | ||
- | === Singularity === | + | === Apptainer/Singularity === |
- | [[ https:// | + | [[ https:// |
- | Singularity está instalado en el sistema de cada nodo, por lo que no es necesario hacer nada para usarlo. | + | Apptainer/Singularity está instalado en el sistema de cada nodo, por lo que no es necesario hacer nada para usarlo. |
Liña 160: | Liña 168: | ||
# Instalarlo | # Instalarlo | ||
sh Miniconda3-py39_4.11.0-Linux-x86_64.sh | sh Miniconda3-py39_4.11.0-Linux-x86_64.sh | ||
+ | # Configurar el entorno | ||
+ | ~/ | ||
</ | </ | ||
- | |||
===== Uso de SLURM ===== | ===== Uso de SLURM ===== | ||
El gestor de colas en el cluster es [[ https:// | El gestor de colas en el cluster es [[ https:// | ||
Liña 167: | Liña 176: | ||
== Recursos disponibles == | == Recursos disponibles == | ||
<code bash> | <code bash> | ||
+ | hpc-login2 ~]# ver_estado.sh | ||
+ | ============================================================================================================= | ||
+ | NODO | ||
+ | ============================================================================================================= | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ============================================================================================================= | ||
+ | TOTALES: [Cores : 3/688] [Mem(MB): 270000/ | ||
+ | |||
hpc-login2 ~]$ sinfo -e -o " | hpc-login2 ~]$ sinfo -e -o " | ||
# Hay un alias para este comando: | # Hay un alias para este comando: | ||
Liña 177: | Liña 207: | ||
hpc-node[1-2] | hpc-node[1-2] | ||
hpc-node[3-9] | hpc-node[3-9] | ||
+ | |||
+ | # Para ver el uso actual de los recursos: (CPUS (Allocated/ | ||
+ | hpc-login2 ~]$ sinfo -N -r -O NodeList, | ||
+ | # Hay un alias para este comando: | ||
+ | hpc-login2 ~]$ ver_uso | ||
+ | NODELIST | ||
+ | hpc-fat1 | ||
+ | hpc-gpu3 | ||
+ | hpc-gpu4 | ||
+ | hpc-node1 | ||
+ | hpc-node2 | ||
+ | hpc-node3 | ||
+ | hpc-node4 | ||
+ | hpc-node5 | ||
+ | hpc-node6 | ||
+ | hpc-node7 | ||
+ | hpc-node8 | ||
+ | hpc-node9 | ||
</ | </ | ||
==== Nodos ==== | ==== Nodos ==== | ||
Liña 220: | Liña 268: | ||
# Hay un alias que muestra solo la información más relevante: | # Hay un alias que muestra solo la información más relevante: | ||
hpc-login2 ~]$ ver_colas | hpc-login2 ~]$ ver_colas | ||
- | Name | + | Name |
- | ---------- ---------- --------------- ----------- --------------------------- ----------- ------------- --------- ----------- | + | ---------- ---------- ------------------------------ ----------- -------------------- --------- ----------- |
- | | + | |
- | interactive | + | interacti+ |
- | urgent | + | urgent |
- | long 100 DenyOnLimit | + | long 100 gres/ |
- | | + | |
- | | + | |
+ | | ||
+ | | ||
</ | </ | ||
# Priority: es la prioridad relativa de cada cola. \\ | # Priority: es la prioridad relativa de cada cola. \\ | ||
Liña 240: | Liña 290: | ||
==== Envío de un trabajo al sistema de colas ==== | ==== Envío de un trabajo al sistema de colas ==== | ||
== Especificación de recursos == | == Especificación de recursos == | ||
- | Por defecto, si se envía un trabajo sin especificar nada el sistema lo envia a la QOS por defecto (regular) y le asigna un nodo, una CPU y toda la memoria disponible. El límite de tiempo para la ejecución del trabajo es el de la cola (4 días y 4 horas). | + | Por defecto, si se envía un trabajo sin especificar nada el sistema lo envia a la QOS por defecto (regular) y le asigna un nodo, una CPU y 4 GB de RAM. El límite de tiempo para la ejecución del trabajo es el de la cola (4 días y 4 horas). |
Esto es muy ineficiente, | Esto es muy ineficiente, | ||
- %%El número de nodos (-N o --nodes), tareas (-n o --ntasks) y/o CPU por tarea (-c o --cpus-per-task).%% | - %%El número de nodos (-N o --nodes), tareas (-n o --ntasks) y/o CPU por tarea (-c o --cpus-per-task).%% | ||
Liña 256: | Liña 306: | ||
== Cómo se asignan los recursos == | == Cómo se asignan los recursos == | ||
- | Por defecto el método de asignación entre nodos es la asignación en bloque ( se asignan todos los cores disponibles en un nodo antes de usar otro). El método de asignación por defecto dentro de cada nodo es la asignación cíclica | + | Por defecto el método de asignación entre nodos es la asignación en bloque ( se asignan todos los cores disponibles en un nodo antes de usar otro). El método de asignación por defecto dentro de cada nodo es la asignación cíclica |
== Calculo de la prioridad == | == Calculo de la prioridad == | ||
Liña 277: | Liña 327: | ||
== Envío de trabajos == | == Envío de trabajos == | ||
+ | - sbatch | ||
- salloc | - salloc | ||
- srun | - srun | ||
- | - sbatch | ||
- | 1. SALLOC \\ | + | |
- | Sirve para obtener de forma inmediata una asignación de recursos (nodos). En cuanto se obtiene se ejecuta el comando especificado o una shell en su defecto. | + | 1. SBATCH \\ |
- | <code bash> | + | |
- | # Obtener 5 nodos y lanzar un trabajo. | + | |
- | hpc-login2 ~]$ salloc -N5 myprogram | + | |
- | # Obtener acceso interactivo a un nodo (Pulsar Ctrl+D para terminar el acceso): | + | |
- | hpc-login2 ~]$ salloc -N1 | + | |
- | </ | + | |
- | 2. SRUN \\ | + | |
- | Sirve para lanzar un trabajo paralelo ( es preferible a usar mpirun ). Es interactivo y bloqueante. | + | |
- | <code bash> | + | |
- | # Lanzar un hostname en 2 nodos | + | |
- | hpc-login2 ~]$ srun -N2 hostname | + | |
- | hpc-node1 | + | |
- | hpc-node2 | + | |
- | </ | + | |
- | 3. SBATCH \\ | + | |
Sirve para enviar un script al sistema de colas. Es de procesamiento por lotes y no bloqueante. | Sirve para enviar un script al sistema de colas. Es de procesamiento por lotes y no bloqueante. | ||
<code bash> | <code bash> | ||
Liña 316: | Liña 351: | ||
hpc-login2 ~]$ sbatch trabajo_ejemplo.sh | hpc-login2 ~]$ sbatch trabajo_ejemplo.sh | ||
</ | </ | ||
+ | 2. SALLOC \\ | ||
+ | Sirve para obtener de forma inmediata una asignación de recursos (nodos). En cuanto se obtiene se ejecuta el comando especificado o una shell en su defecto. | ||
+ | <code bash> | ||
+ | # Obtener 5 nodos y lanzar un trabajo. | ||
+ | hpc-login2 ~]$ salloc -N5 myprogram | ||
+ | # Obtener acceso interactivo a un nodo (Pulsar Ctrl+D para terminar el acceso): | ||
+ | hpc-login2 ~]$ salloc -N1 | ||
+ | </ | ||
+ | 3. SRUN \\ | ||
+ | Sirve para lanzar un trabajo paralelo ( es preferible a usar mpirun ). Es interactivo y bloqueante. | ||
+ | <code bash> | ||
+ | # Lanzar un hostname en 2 nodos | ||
+ | hpc-login2 ~]$ srun -N2 hostname | ||
+ | hpc-node1 | ||
+ | hpc-node2 | ||
+ | </ | ||
+ | |||
==== Uso de los nodos con GPU ==== | ==== Uso de los nodos con GPU ==== | ||
Liña 349: | Liña 401: | ||
## Ver el uso de recursos de un trabajo en ejecución: | ## Ver el uso de recursos de un trabajo en ejecución: | ||
hpc-login2 ~]$ sstat < | hpc-login2 ~]$ sstat < | ||
+ | |||
</ | </ | ||
==== Controlar la salida de los trabajos ==== | ==== Controlar la salida de los trabajos ==== | ||
Liña 390: | Liña 443: | ||
JOBID PARTITION | JOBID PARTITION | ||
6547 defaultPa | 6547 defaultPa | ||
+ | |||
+ | ## Ver estado de uso de las colas del cluster: | ||
+ | hpc-login2 ~]$ estado_colas.sh | ||
+ | JOBS PER USER: | ||
+ | -------------- | ||
+ | | ||
+ | | ||
+ | |||
+ | JOBS PER QOS: | ||
+ | -------------- | ||
+ | | ||
+ | long: 1 | ||
+ | |||
+ | JOBS PER STATE: | ||
+ | -------------- | ||
+ | | ||
+ | | ||
+ | ========================================== | ||
+ | Total JOBS in cluster: | ||
</ | </ | ||
Estados (STATE) más comunes de un trabajo: | Estados (STATE) más comunes de un trabajo: |