Diferenzas

Isto amosa as diferenzas entre a revisión seleccionada e a versión actual da páxina.

Enlazar a esta vista de comparación

Both sides previous revisionPrevious revision
Next revision
Previous revision
centro:servizos:hpc [2022/06/20 13:55] – [Uso de SLURM] fernando.guillencentro:servizos:hpc [2025/12/05 10:01] (actual) – [Particiones] fernando.guillen
Liña 6: Liña 6:
   *  9 servidores para cómputo general.   *  9 servidores para cómputo general.
   *  1 "fat node" para trabajos que requieran mucha memoria.   *  1 "fat node" para trabajos que requieran mucha memoria.
-  *  servidores para computo con GPU.+  *  servidores para computo con GPU.
    
 Los usuarios solo tienen acceso directo al nodo de login, de prestaciones más limitadas y que no debe usarse para computar. \\ Los usuarios solo tienen acceso directo al nodo de login, de prestaciones más limitadas y que no debe usarse para computar. \\
Liña 17: Liña 17:
 |  hpc-node[3-9]              Dell R740    2 x Intel Xeon Gold 5220R @2,2 GHz (24c)        192 GB    -                           | |  hpc-node[3-9]              Dell R740    2 x Intel Xeon Gold 5220R @2,2 GHz (24c)        192 GB    -                           |
 |  hpc-fat1                  |  Dell R840    4 x Xeon Gold 6248 @ 2.50GHz (20c)              1 TB      -                           | |  hpc-fat1                  |  Dell R840    4 x Xeon Gold 6248 @ 2.50GHz (20c)              1 TB      -                           |
-|  <del>hpc-gpu1</del> |  Dell R740   |  x Intel Xeon Gold 5220 CPU @ 2.20GHz (18c)    192 GB    2x Nvidia Tesla V100S       | +|  hpc-gpu[1-2  Dell R740    2 x Intel Xeon Gold 5220 CPU @ 2.20GHz (18c)    192 GB    2x Nvidia Tesla V100S 32GB       |
-|  hpc-gpu2   Dell R740    2 x Intel Xeon Gold 5220 CPU @ 2.20GHz (18c)    192 GB    2x Nvidia Tesla V100S       |+
 |  hpc-gpu3                  |  Dell R7525  |  2 x AMD EPYC 7543 @2,80 GHz (32c)              |  256 GB    2x Nvidia Ampere A100 40GB  | |  hpc-gpu3                  |  Dell R7525  |  2 x AMD EPYC 7543 @2,80 GHz (32c)              |  256 GB    2x Nvidia Ampere A100 40GB  |
 |  hpc-gpu4                  |  Dell R7525  |  2 x AMD EPYC 7543 @2,80 GHz (32c)              |  256 GB    1x Nvidia Ampere A100 80GB  | |  hpc-gpu4                  |  Dell R7525  |  2 x AMD EPYC 7543 @2,80 GHz (32c)              |  256 GB    1x Nvidia Ampere A100 80GB  |
-* Es ctgpgpu8Se integrará próximamente en cluster.+|  hpc-gpu5                  |  Dell R7725  |  2 x AMD EPYC 9255 @3.25 GHz (24c)              |  364 GB    2x Nvidia L4 24GB  | 
 +|  hpc-gpu6                  |  Dell R7725  |  2 x AMD EPYC 9255 @3.25 GHz (24c)              |  384 GB    2x Nvidia L4 24GB  | 
 + 
 ===== Conexión al sistema ===== ===== Conexión al sistema =====
 Para acceder al clúster, hay que solicitarlo previamente a través de [[https://citius.usc.es/uxitic/incidencias/add|formulario de incidencias]]. Los usuarios que no tengan permiso de acceso recibirán un mensaje de "contraseña incorrecta". Para acceder al clúster, hay que solicitarlo previamente a través de [[https://citius.usc.es/uxitic/incidencias/add|formulario de incidencias]]. Los usuarios que no tengan permiso de acceso recibirán un mensaje de "contraseña incorrecta".
  
-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 <nombre_de_usuario>@hpc-login2.inv.usc.es ssh <nombre_de_usuario>@hpc-login2.inv.usc.es
Liña 60: Liña 62:
 </code> </code>
   * Para desmontar la imagen usar el script //umount_image.py// (usando SUDO)   * Para desmontar la imagen usar el script //umount_image.py// (usando SUDO)
 +<code bash> 
 +sudo umount_image.py 
 +</code> 
 +<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. 
 +</note>
 El script de montaje tiene estas opciones: El script de montaje tiene estas opciones:
 <code> <code>
Liña 111: Liña 118:
   * 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 560.35.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 155:
 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
 </code> </code>
  
 === Apptainer/Singularity === === Apptainer/Singularity ===
-[[ https://sylabs.io/guides/3.8/user-guide/ | Documentacion de Apptainer/Singularity ]] \\ +[[ https://apptainer.org/docs/user/1.4/ | Documentacion de Apptainer ]] \\ 
-Apptainer/Singularity está instalado en el sistema de cada nodo, por lo que no es necesario hacer nada para usarlo.+Apptainer está instalado en el sistema de cada nodo, por lo que no es necesario hacer nada para usarlo.
  
  
Liña 158: Liña 168:
 <code bash> <code bash>
 # Obtener miniconda # Obtener miniconda
-wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.11.0-Linux-x86_64.sh+wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
 # 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 
 +~/miniconda3/bin/conda init bash
 </code> </code>
- 
 ===== Uso de SLURM ===== ===== Uso de SLURM =====
 El gestor de colas en el cluster es [[ https://slurm.schedmd.com/documentation.html | SLURM ]]. \\ El gestor de colas en el cluster es [[ https://slurm.schedmd.com/documentation.html | SLURM ]]. \\
Liña 168: Liña 179:
 == Recursos disponibles == == Recursos disponibles ==
 <code bash> <code bash>
 +hpc-login2 ~]# ver_estado.sh
 +=============================================================================================================
 +  NODO     ESTADO                        CORES EN USO                           USO MEM     GPUS(Uso/Total)
 +=============================================================================================================
 + hpc-fat1    up   0%[--------------------------------------------------]( 0/80) RAM:  0%     ---
 + hpc-gpu1    up   2%[||------------------------------------------------]( 1/36) RAM: 47%   V100S (1/2)
 + hpc-gpu2    up   2%[||------------------------------------------------]( 1/36) RAM: 47%   V100S (1/2)
 + hpc-gpu3    up   0%[--------------------------------------------------]( 0/64) RAM:  0%   A100_40 (0/2)
 + hpc-gpu4    up   1%[|-------------------------------------------------]( 1/64) RAM: 35%   A100_80 (1/1)
 + hpc-gpu5    up   0%[--------------------------------------------------]( 0/48) RAM:  0%   L4 (0/2)
 + hpc-gpu6    up   0%[--------------------------------------------------]( 0/48) RAM:  0%   L4 (0/2)
 + hpc-node1   up   0%[--------------------------------------------------]( 0/36) RAM:  0%     ---
 + hpc-node2   up   0%[--------------------------------------------------]( 0/36) RAM:  0%     ---
 + hpc-node3   up   0%[--------------------------------------------------]( 0/48) RAM:  0%     ---
 + hpc-node4   up   0%[--------------------------------------------------]( 0/48) RAM:  0%     ---
 + hpc-node5   up   0%[--------------------------------------------------]( 0/48) RAM:  0%     ---
 + hpc-node6   up   0%[--------------------------------------------------]( 0/48) RAM:  0%     ---
 + hpc-node7   up   0%[--------------------------------------------------]( 0/48) RAM:  0%     ---
 + hpc-node8   up   0%[--------------------------------------------------]( 0/48) RAM:  0%     ---
 + hpc-node9   up   0%[--------------------------------------------------]( 0/48) RAM:  0%     ---
 +=============================================================================================================
 +TOTALES: [Cores : 3/688] [Mem(MB): 270000/3598464] [GPU: 3/ 7]
 +
 hpc-login2 ~]$ sinfo -e -o "%30N  %20c  %20m  %20f  %30G " --sort=N hpc-login2 ~]$ sinfo -e -o "%30N  %20c  %20m  %20f  %30G " --sort=N
 # Hay un alias para este comando: # Hay un alias para este comando:
Liña 176: Liña 210:
 hpc-gpu3                        64                    253282                cpu_amd               gpu:A100_40:                  hpc-gpu3                        64                    253282                cpu_amd               gpu:A100_40:                 
 hpc-gpu4                        64                    253282                cpu_amd               gpu:A100_80:1(S:0)              hpc-gpu4                        64                    253282                cpu_amd               gpu:A100_80:1(S:0)             
 +hpc-gpu[5-6]                    48                    375484                cpu_amd               gpu:L4:2(S:1)
 hpc-node[1-2]                   36                    187645                cpu_intel             (null)                          hpc-node[1-2]                   36                    187645                cpu_intel             (null)                         
 hpc-node[3-9]                   48                    187645                cpu_intel             (null) hpc-node[3-9]                   48                    187645                cpu_intel             (null)
Liña 185: Liña 220:
 NODELIST            CPUS(A/I/O/T)       MEMORY              FREE_MEM            GRES                GRES_USED NODELIST            CPUS(A/I/O/T)       MEMORY              FREE_MEM            GRES                GRES_USED
 hpc-fat1            80/0/0/80           1027273             900850              (null)              gpu:0,mps:0 hpc-fat1            80/0/0/80           1027273             900850              (null)              gpu:0,mps:0
 +hpc-gpu1            16/20/0/36          187911              181851              gpu:V100S:2(S:0-1)  gpu:V100S:2(IDX:0-1)
 +hpc-gpu2            4/32/0/36           187911              183657              gpu:V100S:2(S:0-1)  gpu:V100S:1(IDX:0),m
 hpc-gpu3            2/62/0/64           253282              226026              gpu:A100_40:      gpu:A100_40:2(IDX:0- hpc-gpu3            2/62/0/64           253282              226026              gpu:A100_40:      gpu:A100_40:2(IDX:0-
 hpc-gpu4            1/63/0/64           253282              244994              gpu:A100_80:1(S:0)  gpu:A100_80:1(IDX:0) hpc-gpu4            1/63/0/64           253282              244994              gpu:A100_80:1(S:0)  gpu:A100_80:1(IDX:0)
 +hpc-gpu5            8/40/0/48           375484              380850              gpu:L4:2(S:1)       gpu:L4:1(IDX:1),mps:
 +hpc-gpu6            0/48/0/48           375484              380969              gpu:L4:2(S:1)       gpu:L4:0(IDX:N/A),mp
 hpc-node1           36/0/0/36           187645              121401              (null)              gpu:0,mps:0 hpc-node1           36/0/0/36           187645              121401              (null)              gpu:0,mps:0
 hpc-node2           36/0/0/36           187645              130012              (null)              gpu:0,mps:0 hpc-node2           36/0/0/36           187645              130012              (null)              gpu:0,mps:0
Liña 225: Liña 264:
 # Mostrar la información de las particiones: # Mostrar la información de las particiones:
 hpc-login2 ~]$ sinfo hpc-login2 ~]$ sinfo
-defaultPartition*    up   infinite     11   idle hpc-fat1,hpc-gpu[3-4],hpc-node[1-9]+defaultPartition*    up   infinite     11   idle hpc-fat1,hpc-gpu[1-6],hpc-node[1-9]
 # Cuando se incorporen al cluster ctgpgpu7 y 8 apareceran como los nodos hpc-gpu1 y 2 respectivamente. # Cuando se incorporen al cluster ctgpgpu7 y 8 apareceran como los nodos hpc-gpu1 y 2 respectivamente.
 </code> </code>
Liña 239: Liña 278:
 # 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   Priority           Flags UsageFactor                     MaxTRES     MaxWall     MaxTRESPU MaxJobsPU MaxSubmitPU  +      Name   Priority                        MaxTRES     MaxWall            MaxTRESPU MaxJobsPU MaxSubmitPU  
----------- ---------- --------------- ----------- --------------------------- ----------- ------------- --------- -----------  +---------- ---------- ------------------------------ ----------- -------------------- --------- -----------  
-   regular        100     DenyOnLimit    1.000000   cpu=200,gres/gpu=1,node=4  4-04:00:00                      10          50  +   regular        100      cpu=200,gres/gpu=1,node=4  4-04:00:00       cpu=200,node=4        10          50  
-interactive       200     DenyOnLimit    1.000000                      node=1    04:00:00        node=1                   1  +interacti+        200                         node=1    04:00:00               node=1                   1  
-    urgent        300     DenyOnLimit    2.000000           gres/gpu=1,node=1    04:00:00        cpu=36                  15  +    urgent        300              gres/gpu=1,node=1    04:00:00               cpu=36                  15  
-      long        100     DenyOnLimit    1.000000           gres/gpu=1,node=4  8-08:00:00                                      +      long        100              gres/gpu=1,node=4  8-04:00:00                                         
-     large        100     DenyOnLimit    1.000000          cpu=200,gres/gpu=2  4-04:00:00                      10          25  +     large        100             cpu=200,gres/gpu=2  4-04:00:00                                       10  
-     admin        500                    0.000000 +     admin        500                                                                                        
 +     small        100        cpu=6,gres/gpu=0,node=2  6-00:00:00              cpu=400        400         800  
 +     short        150                   cpu=6,node=2    04:00:00                              40         100 
 </code> </code>
 # Priority: es la prioridad relativa de cada cola. \\ # Priority: es la prioridad relativa de cada cola. \\
Liña 259: Liña 300:
 ==== 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, lo ideal es especificar en la medida de lo posible al menos tres parámetros a la hora de enviar los trabajos: Esto es muy ineficiente, lo ideal es especificar en la medida de lo posible al menos tres parámetros a la hora de enviar los trabajos:
   -  %%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 316:
  
 == 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  (se van repartiendo por igual los cores requeridos entre los sockests disponibles en el nodo). +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  (se van repartiendo por igual los cores requeridos entre los sockets disponibles en el nodo). 
  
 == Calculo de la prioridad == == Calculo de la prioridad ==
Liña 296: Liña 337:
  
 == 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  +
-</code> +
-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 +
-</code> +
-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 361:
 hpc-login2 ~]$ sbatch trabajo_ejemplo.sh  hpc-login2 ~]$ sbatch trabajo_ejemplo.sh 
 </code> </code>
 +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
 +</code>
 +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
 +</code>
 +
  
 ==== Uso de los nodos con GPU ==== ==== Uso de los nodos con GPU ====
Liña 368: Liña 413:
 ## 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 <JOBID> hpc-login2 ~]$ sstat <JOBID>
 +
 </code> </code>
 ==== Controlar la salida de los trabajos ==== ==== Controlar la salida de los trabajos ====
Liña 409: Liña 455:
 JOBID PARTITION     NAME     USER      STATE       TIME  NODES NODELIST(REASON) JOBID PARTITION     NAME     USER      STATE       TIME  NODES NODELIST(REASON)
 6547  defaultPa  example <username>  RUNNING   22:54:55      1 hpc-fat1 6547  defaultPa  example <username>  RUNNING   22:54:55      1 hpc-fat1
 +
 +## Ver estado de uso de las colas del cluster:
 +hpc-login2 ~]$ estado_colas.sh
 +JOBS PER USER:
 +--------------
 +       usuario.uno:  3
 +       usuario.dos:  1
 +
 +JOBS PER QOS:
 +--------------
 +             regular:  3
 +                long:  1
 +
 +JOBS PER STATE:
 +--------------
 +             RUNNING:  3
 +             PENDING:  1
 +==========================================
 +Total JOBS in cluster:  4
 </code> </code>
 Estados (STATE) más comunes de un trabajo: Estados (STATE) más comunes de un trabajo: