Nodos
Los nodos están configurados en SLURM de modo que todos los recursos (memoria, CPUs, GPUs) se encuentren disponibles para reservar al enviar tareas.
Las configuraciones de cada nodo se encuentran listadas a continuación:
| Nodo | Configuración |
|---|---|
| n003 | CPUs: 64 RealMemory: 225316MiB |
| n004 | CPUs: 64 RealMemory: 225316MiB |
| n005 | CPUs: 64 RealMemory: 193059MiB |
| n006 | CPUs: 96 RealMemory: 1031783MiB |
| g001 | Gres: - gpu: tesla:1,shard:16 CPUs: 64 RealMemory: 192052MiB |
| g002 | Gres: - gpu: rtxa6000:1,shard:48 CPUs: 96 RealMemory: 1031783MiB |
| ag001 | Gres: - gpu: a100:1 - gpu: a100_3g.20gb:1 - gpu: a100_2g.10gb:1 - gpu: a100_1g.5gb:2 - shard:80 CPUs: 128 RealMemory: 1031900MiB |
| ds001 | Gres: - gpu: rtxa6000:1,shard:48 CPUs: 96 RealMemory: 1031783MiB |
Donde Gres representa recursos genéricos (Generic RESources).
Particiones del Nodo ag001
El nodo ag001 cuenta con dos GPUs NVIDIA A100 PCIe-40GB. Estos GPUs son los únicos en Khipu que soportan la funcionalidad Multi Instance GPU (MIG), que permite dividir un GPU en sub-instancias aisladas, con múltiples configuraciones posibles.
La distribución de GPUs es la siguiente:
- Una de las GPUs se mantiene sin modificar
- Una de las GPUs se utiliza para proporcionar 4 instancias MIG:
- 1 instancia de tipo
3g.20gb - 1 instancia de tipo
2g.10gb - 2 instancias de tipo
1g.5gb
- 1 instancia de tipo
Los nombres de cada tipo de instancia indican sus capacidades. Por ejemplo, las instancias de nombre 3g.20gb cuentan con 3/7 de la capacidad de procesamiento del GPU, y con 20GiB de VRAM. Estas instancias son detectadas por SLURM como GPUs independientes, y se pueden solicitar con normalidad. La configuración se encuentra ilustrada en la siguiente imagen:

Note
Dado que los GPUs del nodo ag001 fueron redistribuidos para contar con más instancias de distintas capacidades, se sugiere no utilizar shards cuando trabajemos con este nodo, dado que de momento estas no se encuentran distribuidas equitativamente. En lugar de eso, podemos reservar instancias más pequeñas según los recursos que necesitamos.
Envío de tareas con GPUs específicos
Si, por ejemplo, necesitamos utilizar un GPU específico, podemos especificarlo al enviar la tarea con sbatch. El siguiente ejemplo reserva dos instancias de 1g.5gb del nodo ag001:
#!/bin/bash
#SBATCH --job-name=mi_trabajo # Nombre del trabajo
#SBATCH --partition=gpu # Partición a usar
#SBATCH --nodelist=ag001 # Nodos a utilizar
#SBATCH --gres=gpu:a100_1g.5gb:2 # GRES a utilizar
#SBATCH ...
# Continuar con el envío de la tarea
module load ...
Cabe resaltar que no podemos reservar un GPU que no está disponible en un nodo, por lo que es mejor especificar el nodo que deseamos reservar en caso querramos utilizar un GPU en específico.