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 revision | ||
centro:servizos:hpc [2022/06/20 13:55] – [Uso de SLURM] fernando.guillen | centro:servizos:hpc [2024/10/07 13:28] (actual) – [CONDA] jorge.suarez | ||
---|---|---|---|
Liña 17: | Liña 17: | ||
| hpc-node[3-9] | | hpc-node[3-9] | ||
| hpc-fat1 | | hpc-fat1 | ||
- | | | + | | hpc-gpu[1-2] |
- | | hpc-gpu2 | + | |
| hpc-gpu3 | | hpc-gpu3 | ||
| hpc-gpu4 | | hpc-gpu4 | ||
- | * Es ctgpgpu8. Se integrará próximamente en cluster. | + | |
===== 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 (172.16.242.211): |
<code bash> | <code bash> | ||
ssh < | ssh < | ||
Liña 60: | 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 111: | 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 145: | 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 |
</ | </ | ||
Liña 158: | Liña 165: | ||
<code bash> | <code bash> | ||
# Obtener miniconda | # Obtener miniconda | ||
- | wget https:// | + | wget https:// |
# Instalarlo | # Instalarlo | ||
- | sh Miniconda3-py39_4.11.0-Linux-x86_64.sh | + | bash Miniconda3-latest-Linux-x86_64.sh |
+ | # Inicializar miniconda para el shell bash | ||
+ | ~/ | ||
</ | </ | ||
- | |||
===== 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 168: | 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 239: | 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 259: | 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 275: | 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 296: | 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 335: | 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 | ||
+ | # Obtener acceso interactivo a un nodo DE FORMA EXCLUSIVA | ||
+ | hpc-login2 ~]$ salloc -N1 --exclusive | ||
+ | </ | ||
+ | 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 368: | Liña 403: | ||
## 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 409: | Liña 445: | ||
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: |