Curso 1 · Nivel Básico
Iniciación en HPC
Aprende los fundamentos de la computación de alto rendimiento y domina las herramientas que usan los científicos e ingenieros para resolver problemas complejos.
¿Qué es HPC?
La Computación de Alto Rendimiento (HPC) permite resolver problemas que requieren mucho más poder de cómputo del que ofrece una computadora convencional, distribuyendo la carga entre cientos o miles de procesadores que trabajan coordinadamente.
Una PC promedio tiene 8–16 núcleos de CPU. Un cluster HPC puede tener miles de núcleos interconectados a alta velocidad, ejecutando trabajos en paralelo y compartiendo almacenamiento centralizado. La diferencia es como comparar una linterna con un faro.
Simulaciones de dinámica de fluidos, predicción del tiempo, análisis genómico, entrenamiento de modelos de inteligencia artificial, modelado de estructuras moleculares, simulaciones financieras y mucho más.
Comparativa: PC convencional vs Cluster HPC
La potencia de HPC proviene de dividir un problema grande en piezas más pequeñas y resolverlas simultáneamente en muchos procesadores. A esto se llama computación paralela.
Arquitectura del Cluster
Un cluster HPC moderno está compuesto por varios tipos de nodos con roles específicos, interconectados mediante una red de alta velocidad y con acceso a almacenamiento compartido.
Arquitectura típica de un Cluster HPC
Punto de entrada al cluster. Desde aquí se editan archivos, se preparan scripts y se envían trabajos al scheduler. Nunca se ejecutan cálculos pesados aquí.
Donde realmente se ejecutan los trabajos. El scheduler los asigna según disponibilidad y los recursos solicitados. Pueden ser CPU-only o tener GPUs.
Sistema de archivos paralelo distribuido (BeeGFS) compartido por todos los nodos, con 1.5 PB de capacidad y 200 GB/s de throughput. Los archivos escritos en un nodo son visibles inmediatamente en todos los demás.
Linux y la Terminal
Los clusters HPC usan Linux. Conocer los comandos básicos de la terminal es indispensable para trabajar eficientemente en el entorno.
# Conectar al cluster via SSH
local$ ssh [email protected]
# Contraseña o clave SSH...
usuario@login01$ # ¡Bienvenido! Ya estás en el cluster
# Comandos esenciales de navegación
usuario@login01$ pwd # Muestra el directorio actual
/home/usuario
usuario@login01$ ls -lh # Lista archivos con tamaños legibles
total 4.0K
drwxr-xr-x 2 usuario grupo 4.0K Jan 15 09:30 trabajos
-rw-r--r-- 1 usuario grupo 512 Jan 15 09:28 script.sh
usuario@login01$ cd trabajos # Cambia de directorio
usuario@login01$ mkdir mi_proyecto # Crea una carpeta
usuario@login01$ cp archivo.txt mi_proyecto/ # Copia archivos
usuario@login01$ cat script.sh # Muestra contenido de un archivo
# Ver cuánto espacio usas
usuario@login01$ du -sh ~
2.3G /home/usuario
| Comando | Descripción | Ejemplo |
|---|---|---|
ls -lh | Listar archivos con tamaños | ls -lh /scratch/ |
cp / mv | Copiar / mover archivos | cp datos.csv /scratch/ |
tar -xzf | Descomprimir archivos .tar.gz | tar -xzf paquete.tar.gz |
module load | Cargar software del sistema | module load python/3.11 |
top / htop | Ver procesos en ejecución | htop |
df -h | Espacio disponible en disco | df -h /scratch |
chmod +x | Dar permisos de ejecución | chmod +x mi_script.sh |
Los clusters usan el sistema de módulos para gestionar software. Usa module avail para ver todo el software instalado y module load nombre/version para activarlo en tu sesión.
Open OnDemand
Open OnDemand es una interfaz web que permite acceder y usar el cluster desde cualquier navegador, sin necesidad de instalar software adicional. Es el punto de entrada recomendado para usuarios nuevos.
Aplicaciones Disponibles
Solo necesitas un navegador moderno (Chrome, Firefox, Edge). OnDemand gestiona la autenticación, la terminal SSH y el acceso a aplicaciones como JupyterLab o MATLAB directamente desde el navegador.
El explorador de archivos integrado permite subir, descargar, editar y organizar tus datos directamente desde el navegador, sin necesidad de clientes FTP/SCP externos como FileZilla.
JupyterLab
JupyterLab ofrece un entorno interactivo de notebooks directamente en el cluster. Puedes escribir y ejecutar código Python (y otros lenguajes), visualizar resultados y documentar tu análisis en un solo lugar.
import matplotlib.pyplot as plt
from scipy import stats
# Configuración de visualización
plt.rcParams['figure.dpi'] = 120
datos = np.load('/scratch/usuario/simulacion.npy')
print(f'Shape: {datos.shape}, dtype: {datos.dtype}')
ax[0].hist(datos[:,0], bins=50, color='steelblue')
ax[0].set_title('Distribución')
ax[1].plot(datos[:200,0], color='orangered')
plt.tight_layout(); plt.show()
[Gráfica generada por matplotlib]
Cuando lanzas JupyterLab desde OnDemand, el notebook se ejecuta en los nodos del cluster con acceso a toda la memoria RAM y CPUs asignadas. Puedes procesar datasets de cientos de GB sin limitaciones.
Introducción a Slurm
Slurm es el gestor de trabajos del cluster. Su función es recibir las solicitudes de cómputo de los usuarios y asignarlas a los nodos disponibles de forma justa y eficiente.
# Ver el estado del cluster
usuario@login01$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
compute* up 7-00:00:00 8 idle node[01-08]
gpu up 2-00:00:00 2 idle gpunode[01-02]
bigmem up 3-00:00:00 2 mix bignode[01-02]
# Ver trabajos en cola
usuario@login01$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST
42831 compute simulacio usuario R 0:42:11 4 node[01-04]
42830 gpu entrena_r usuario PD 0:00 8 (Priority)
# Mi primer trabajo interactivo
usuario@login01$ srun --ntasks=4 --mem=8G --time=01:00:00 --pty bash
usuario@node01$ # Ahora estoy en un nodo de cómputo
El nodo login es compartido por todos los usuarios para tareas ligeras (editar archivos, enviar trabajos). Los cálculos pesados siempre deben enviarse a través de Slurm con sbatch o srun.
Software Científico
Los clusters HPC incluyen una gran variedad de software científico preinstalado y optimizado. El sistema de módulos permite cargar exactamente la versión que necesitas.
# Ver software disponible
usuario@login01$ module avail
──────── /opt/software/modules ────────────────
python/3.9.7 python/3.11.0 (D)
matlab/R2023b matlab/R2024a (D)
r/4.2.0 r/4.3.1 (D)
cuda/11.8 cuda/12.2 (D)
intel-mpi/2021 openmpi/4.1.5
# Cargar Python y paquetes científicos
usuario@login01$ module load python/3.11.0
usuario@login01$ module load cuda/12.2
usuario@login01$ python -c "import torch; print(torch.cuda.is_available())"
True
# Ver módulos actualmente cargados
usuario@login01$ module list
Currently Loaded Modules:
1) python/3.11.0 2) cuda/12.2 3) cudnn/8.9
Disponible vía OnDemand como aplicación gráfica o desde terminal. Soporta Parallel Computing Toolbox para usar múltiples núcleos y GPUs automáticamente.
Múltiples versiones disponibles con NumPy, SciPy, PyTorch, TensorFlow y scikit-learn preinstalados y optimizados para el hardware del cluster.
R con cientos de paquetes de CRAN disponibles. RStudio accesible desde OnDemand como aplicación gráfica con soporte para cómputo en paralelo.
Flujo de Trabajo Típico
Resumiendo todo lo aprendido, este es el flujo de trabajo habitual de un usuario HPC desde que inicia sesión hasta que obtiene sus resultados.
# 1. Acceder al cluster
local$ ssh [email protected]
# 2. Preparar mi trabajo
usuario@login01$ mkdir -p ~/proyectos/simulacion && cd ~/proyectos/simulacion
usuario@login01$ nano job.sh # Editar el script
# Contenido de job.sh:
#!/bin/bash
#SBATCH --job-name=mi_simulacion
#SBATCH --ntasks=16
#SBATCH --mem=32G
#SBATCH --time=02:00:00
module load python/3.11.0
python simulacion.py
# 3. Enviar el trabajo
usuario@login01$ sbatch job.sh
Submitted batch job 42835
# 4. Monitorear
usuario@login01$ squeue --me
42835 compute mi_simul usuario R 00:05:22 2 node[01-02]
Ahora conoces los conceptos fundamentales de un cluster HPC, cómo acceder a él, las herramientas disponibles y cómo enviar tus primeros trabajos. El siguiente paso es el Curso de Slurm, donde dominarás el scheduler en profundidad.