Contenedores (Pyxis/Enroot)¶
En Chuchunco el software se usa principalmente mediante contenedores: tomas una imagen Docker (de Docker Hub, NVIDIA NGC, AMD/ROCm o una propia) y Slurm la ejecuta directamente en los nodos, sin necesidad de permisos de administrador.
Esto lo hacen dos componentes de NVIDIA: Enroot (convierte imágenes Docker en archivos .sqsh y las ejecuta sin root) y Pyxis (agrega a srun las opciones --container-*).
Usar una imagen pública¶
srun -p CPU --container-image=ubuntu:22.04 cat /etc/os-release
Sintaxis de imágenes:
| Origen | Ejemplo |
|---|---|
| Docker Hub | --container-image=python:3.12 |
| NVIDIA NGC | --container-image=nvcr.io#nvidia/pytorch:24.05-py3 |
| ROCm (AMD) | --container-image=rocm/pytorch:latest |
| Archivo local | --container-image=/data/<grupo>/mi-imagen.sqsh |
Registro con #
Para registros distintos de Docker Hub se usa # en lugar de / después del dominio: nvcr.io#nvidia/....
Montar tus datos dentro del contenedor¶
srun -p CPU \
--container-image=python:3.12 \
--container-mounts=/data/<grupo>:/datos \
--container-workdir=/datos \
python3 analisis.py
Guardar la imagen para no descargarla cada vez¶
Importar una imagen grande toma minutos. Conviértela una vez a .sqsh y reutilízala:
srun -p CPU enroot import -o /data/<grupo>/pytorch.sqsh docker://nvcr.io#nvidia/pytorch:24.05-py3
srun -p GPU --gres=gpu:rtx6000ada:1 --container-image=/data/<grupo>/pytorch.sqsh python entrenar.py
Tu propia imagen¶
Construye la imagen en tu computador con Docker, expórtala y conviértela en el clúster:
# En tu computador
docker build -t mi-imagen:1.0 .
docker save mi-imagen:1.0 -o mi-imagen.tar
scp mi-imagen.tar chuchunco:/data/<grupo>/
# En Chuchunco
srun -p CPU enroot import -o /data/<grupo>/mi-imagen.sqsh /data/<grupo>/mi-imagen.tar
¿Y si mi software no tiene imagen?¶
Escríbenos a hpc.fisica@usach.cl indicando el software y la versión. Podemos preparar una imagen o un módulo para todos los usuarios. Para software con licencia (MATLAB, BIOVIA, etc.) necesitamos verificar primero las condiciones de la licencia.