Trabajar en un sistema HPC remoto

Última actualización: 2025-08-04 | Mejora esta página

Tiempo estimado: 35 minutos

Hoja de ruta

Preguntas

  • “¿Qué es un sistema HPC?”
  • “¿Cómo funciona un sistema HPC?”
  • “¿Cómo me conecto a un sistema HPC remoto?”

Objetivos

  • “Conectarse a un sistema HPC remoto”
  • “Comprender la arquitectura general del sistema HPC”

¿Qué es un sistema HPC?


Las palabras “nube”, “clúster”, y la frase “computación de alto rendimiento” o “HPC” se utilizan mucho en diferentes contextos y con varios significados relacionados. ¿Qué significan? Y lo que es más importante, ¿cómo los utilizamos en nuestro trabajo?

La nube es un término genérico comúnmente utilizado para referirse a los recursos informáticos que son a) proporcionados a los usuarios bajo demanda o según sus necesidades y b) representan recursos reales o virtuales que pueden estar localizados en cualquier lugar de la Tierra. Por ejemplo, una gran empresa con recursos informáticos en Brasil, Zimbabue y Japón puede gestionar esos recursos como su propia nube interna y esa misma empresa puede utilizar también recursos comerciales en la nube proporcionados por Amazon o Google. Los recursos en la nube pueden referirse a máquinas que realizan tareas relativamente sencillas como servir sitios web, proporcionar almacenamiento compartido, proporcionar servicios web (como correo electrónico o plataformas de medios sociales), así como tareas más tradicionales de computación intensiva como ejecutar una simulación.

El término sistema HPC, por otro lado, describe un recurso independiente para cargas de trabajo computacionalmente intensivas. Suelen estar compuestos por una multitud de elementos integrados de procesamiento y almacenamiento, diseñados para manejar grandes volúmenes de datos y/o grandes números de operaciones en coma flotante (FLOPS) con el mayor rendimiento posible. Por ejemplo, todas las máquinas de la lista Top-500 son sistemas HPC. Para soportar estas limitaciones, un recurso HPC debe existir en una ubicación específica y fija: los cables de red sólo pueden estirarse hasta cierto punto, y las señales eléctricas y ópticas sólo pueden viajar a cierta velocidad.

La palabra “clúster” se utiliza a menudo para recursos HPC de escala pequeña a moderada menos impresionantes que el Top-500. Los clústeres suelen mantenerse en centros de cálculo que soportan varios sistemas de este tipo, todos ellos compartiendo redes y almacenamiento comunes para soportar tareas comunes de cálculo intensivo.

Inicio de sesión


El primer paso para utilizar un clúster es establecer una conexión entre nuestro portátil y el clúster. Cuando estamos sentados frente a un ordenador (o de pie, o sosteniéndolo en la mano o en la muñeca), esperamos ver una pantalla con iconos, widgets y quizás algunas ventanas o aplicaciones: una interfaz gráfica de usuario o GUI. Dado que los clústeres informáticos son recursos remotos a los que nos conectamos a través de interfaces a menudo lentas o con retardo (WiFi y VPN, especialmente), es más práctico utilizar una interfaz de línea de comandos, o CLI, en la que los comandos y los resultados se transmiten únicamente a través de texto. Todo lo que no sea texto (imágenes, por ejemplo) debe escribirse en disco y abrirse con un programa aparte.

Si alguna vez has abierto el símbolo del sistema de Windows o el terminal de macOS, habrás visto una CLI. Si ya has tomado los cursos de Las Carpinterías sobre la Shell UNIX o el Control de Versiones, has usado la CLI en tu máquina local algo extensamente. El único salto a dar aquí es abrir un CLI en una máquina remota, tomando algunas precauciones para que otras personas en la red no puedan ver (o cambiar) los comandos que estás ejecutando o los resultados que la máquina remota envía de vuelta. Usaremos el protocolo Secure SHell (o SSH) para abrir una conexión de red encriptada entre dos máquinas, permitiéndote enviar y recibir texto y datos sin tener que preocuparte de miradas indiscretas.

Conectarse al clúster
Conectarse al clúster

Asegúrese de que tiene un cliente SSH instalado en su portátil. Consulte la sección setup para más detalles. Los clientes SSH suelen ser herramientas de línea de comandos, donde se proporciona la dirección de la máquina remota como único argumento requerido. Si tu nombre de usuario en el sistema remoto difiere del que usas localmente, debes proporcionarlo también. Si tu cliente SSH tiene un front-end gráfico, como PuTTY o MobaXterm, establecerás estos argumentos antes de hacer clic en “conectar” Desde el terminal, escribirás algo como ssh userName@hostname, donde el símbolo “@” se utiliza para separar las dos partes de un único argumento.

Sigue adelante y abre tu terminal o cliente gráfico SSH, luego inicia sesión en el cluster usando tu nombre de usuario y el ordenador remoto al que puedes acceder desde el mundo exterior, cluster.hpc-carpentry.org.

BASH

[you@laptop:~]$ ssh yourUsername@cluster.hpc-carpentry.org

Recuerda sustituir yourUsername por tu nombre de usuario o el que te proporcionen los instructores. Es posible que te pidan tu contraseña. Atención: los caracteres que escriba después de la solicitud de contraseña no se mostrarán en pantalla. La salida normal se reanudará cuando pulse Enter.

¿Dónde estamos?


Muy a menudo, muchos usuarios se ven tentados a pensar que una instalación de computación de alto rendimiento es una máquina gigante y mágica. A veces, la gente asume que el ordenador en el que han iniciado sesión es todo el clúster de computación. Pero, ¿qué ocurre realmente? ¿En qué ordenador hemos iniciado sesión? El nombre del ordenador en el que hemos iniciado sesión se puede comprobar con el comando hostname. (¡También puedes notar que el nombre de host actual es también parte de nuestro prompt!)

BASH

[yourUsername@login1 ~] hostname

SALIDA

login1

¿Qué hay en tu directorio de inicio?

Es posible que los administradores del sistema hayan configurado su directorio personal con algunos archivos, carpetas y enlaces (accesos directos) útiles a espacios reservados para usted en otros sistemas de archivos. Eche un vistazo a ver qué encuentra. Sugerencia: Los comandos del shell pwd y ls pueden resultarle útiles. El contenido de los directorios personales varía de un usuario a otro. Por favor, comenta cualquier diferencia que encuentres con tus vecinos.

La capa más profunda debe diferir: yourUsername es exclusivamente suya. ¿Hay diferencias en la ruta en los niveles superiores?

Si ambos tienen directorios vacíos, se verán idénticos. Si tú o tu vecino habéis usado el sistema antes, puede haber diferencias. ¿En qué estás trabajando?

Utilice pwd para imprimir la ruta del directorio de trabajo:

BASH

[yourUsername@login1 ~] pwd

Puede ejecutar ls para listar el contenido del directorio, aunque es posible que no aparezca nada (si no se han proporcionado ficheros). Para estar seguro, utilice también el indicador -a para mostrar los archivos ocultos.

BASH

[yourUsername@login1 ~] ls -a

Como mínimo, esto mostrará el directorio actual como ., y el directorio padre como ...

Nodos


Los ordenadores individuales que componen un clúster se suelen llamar nodos (aunque también se les llama servidores, ordenadores y máquinas). En un clúster, hay distintos tipos de nodos para distintos tipos de tareas. El nodo en el que te encuentras en este momento se llama nodo de cabecera, nodo de inicio de sesión, almohadilla de aterrizaje o nodo de envío. Un nodo de inicio de sesión sirve como punto de acceso al clúster.

Como pasarela, es muy adecuada para subir y descargar archivos, configurar software y realizar pruebas rápidas. En general, el nodo de acceso no debe utilizarse para tareas que consuman mucho tiempo o recursos. Deberías estar atento a esto, y comprobar con los operadores o la documentación de tu sitio los detalles de lo que está y no está permitido. En estas lecciones, evitaremos ejecutar trabajos en el nodo principal.

Nodos de transferencia dedicados

Si desea transferir grandes cantidades de datos hacia o desde el clúster, algunos sistemas ofrecen nodos dedicados sólo para transferencias de datos. La motivación de esto radica en el hecho de que las transferencias de datos más grandes no deben obstruir el funcionamiento del nodo de inicio de sesión para nadie más. Comprueba en la documentación de tu clúster o con su equipo de soporte si existe un nodo de transferencia de este tipo. Como regla general, considere todas las transferencias de un volumen superior a 500 MB a 1 GB como grandes. Pero estos números cambian, por ejemplo, en función de la conexión de red propia y de su clúster u otros factores.

El verdadero trabajo en un cluster lo hacen los nodos de trabajo (o computación). Los nodos de trabajo tienen muchas formas y tamaños, pero generalmente se dedican a tareas largas o difíciles que requieren muchos recursos computacionales.

Toda la interacción con los nodos trabajadores es manejada por una pieza especializada de software llamada planificador (el planificador utilizado en esta lección se llama Slurm). Aprenderemos más sobre cómo usar el planificador para enviar trabajos a continuación, pero por ahora, también puede darnos más información sobre los nodos trabajadores.

Por ejemplo, podemos ver todos los nodos trabajadores ejecutando el comando sinfo.

BASH

[yourUsername@login1 ~] sinfo

SALIDA

PARTITION          AVAIL  TIMELIMIT  NODES  STATE NODELIST
cpubase_bycore_b1*    up   infinite      4   idle node[1-2],smnode[1-2]
node                  up   infinite      2   idle node[1-2]
smnode                up   infinite      2   idle smnode[1-2]

También hay máquinas especializadas que se utilizan para gestionar el almacenamiento en disco, la autenticación de usuarios y otras tareas relacionadas con la infraestructura. Aunque no solemos iniciar sesión o interactuar con estas máquinas directamente, permiten una serie de características clave como asegurar que nuestra cuenta de usuario y archivos están disponibles en todo el sistema HPC.

¿Qué hay en un Nodo?


Todos los nodos de un sistema HPC tienen los mismos componentes que su propio ordenador portátil o de sobremesa: CPUs (a veces también llamados procesadores o cores), memoria (o RAM) y espacio de disco. Las CPU son la herramienta de un ordenador para ejecutar programas y cálculos. La información sobre una tarea en curso se almacena en la memoria del ordenador. Disco se refiere a todo el almacenamiento al que se puede acceder como un sistema de archivos. Por lo general, se trata de un almacenamiento que puede guardar datos de forma permanente, es decir, los datos siguen ahí aunque se reinicie el ordenador. Aunque este almacenamiento puede ser local (un disco duro instalado en su interior), es más común que los nodos se conecten a un servidor de archivos compartido y remoto o a un clúster de servidores.

Anatomía del nodo
Anatomía del nodo

Explore su ordenador

Intenta averiguar el número de CPUs y la cantidad de memoria disponible en tu ordenador personal. Ten en cuenta que, si has iniciado sesión en el clúster de ordenadores remotos, primero tienes que cerrar la sesión. Para ello, escriba Ctrl+d o exit:

BASH

[yourUsername@login1 ~] exit
[you@laptop:~]$

Hay varias maneras de hacer esto. La mayoría de los sistemas operativos tienen un monitor gráfico del sistema, como el Administrador de tareas de Windows. A veces se puede encontrar información más detallada en la línea de comandos. Por ejemplo, algunos de los comandos utilizados en un sistema Linux son:

Ejecutar utilidades del sistema

BASH

[you@laptop:~]$ nproc --all
[you@laptop:~]$ free -m

Lectura de /proc

BASH

[you@laptop:~]$ cat /proc/cpuinfo
[you@laptop:~]$ cat /proc/meminfo

Utilizar un monitor del sistema

BASH

[you@laptop:~]$ htop

Explorar el nodo de acceso

Ahora compara los recursos de tu ordenador con los del nodo principal.

BASH

[you@laptop:~]$ ssh yourUsername@cluster.hpc-carpentry.org
[yourUsername@login1 ~] nproc --all
[yourUsername@login1 ~] free -m

Puedes obtener más información sobre los procesadores usando lscpu, y muchos detalles sobre la memoria leyendo el fichero /proc/meminfo:

BASH

[yourUsername@login1 ~] less /proc/meminfo

También puedes explorar los sistemas de ficheros disponibles usando df para mostrar el espacio disk free. La opción -h muestra los tamaños en un formato amigable, es decir, GB en lugar de B. La opción type -T muestra qué tipo de sistema de ficheros es cada recurso.

BASH

[yourUsername@login1 ~] df -Th

Discusión

Los sistemas de ficheros locales (ext, tmp, xfs, zfs) dependerán de si estás en el mismo nodo de login (o nodo de computación, más adelante). Los sistemas de ficheros en red (beegfs, cifs, gpfs, nfs, pvfs) serán similares — pero pueden incluir yourUsername, dependiendo de cómo esté montado.

Sistemas de archivos compartidos

Es importante recordar que los archivos guardados en un nodo (ordenador) suelen estar disponibles en cualquier parte del clúster

Explore a Worker Node

Finally, let’s look at the resources available on the worker nodes where your jobs will actually run. Try running this command to see the name, CPUs and memory available on one of the worker nodes:

BASH

[yourUsername@login1 ~] sinfo -o "%n %c %m" | column -t

Compare su ordenador, el nodo de inicio de sesión y el nodo de cálculo

Compara el número de procesadores y memoria de tu portátil con los números que ves en el nodo cabeza del cluster y en el nodo trabajador. Discute las diferencias con tu vecino.

¿Qué implicaciones crees que pueden tener las diferencias a la hora de ejecutar tu trabajo de investigación en los distintos sistemas y nodos?

Diferencias entre nodos

Muchos clusters HPC tienen una variedad de nodos optimizados para cargas de trabajo particulares. Algunos nodos pueden tener una mayor cantidad de memoria, o recursos especializados como Unidades de Procesamiento Gráfico (GPUs).

Con todo esto en mente, ahora veremos cómo hablar con el planificador del clúster y utilizarlo para empezar a ejecutar nuestros scripts y programas

Puntos Clave

  • “Un sistema HPC es un conjunto de máquinas conectadas en red”
  • “Los sistemas HPC suelen proporcionar nodos de inicio de sesión y un conjunto de nodos trabajadores”
  • “Los recursos que se encuentran en nodos independientes (trabajadores) pueden variar en volumen y tipo (cantidad de RAM, arquitectura del procesador, disponibilidad de sistemas de ficheros montados en red, etc.).”
  • “Los archivos guardados en un nodo están disponibles en todos los nodos”