Una review de la High Performance Computing

Nuestro compañero João Ferreira que desempeña su labor como Site Reliability Engineer en dareCode, nos introduce con este artículo en la High Performance Computing o HPC y nos cuenta los casos de uso más comunes de esta disciplina computacional.

¿Qué es la High Performance Computing?

High Performance Computing, o HPC se podría definir como la agregación de potencia de computación proveniente de múltiples ordenadores/servidores y su utilización en problemas computacionales de grandes dimensiones.
Estos problemas pueden ser demasiado pesados para los típicos equipos de trabajo que tardarían demasiado tiempo por lo que sería inviable.
Este enfoque permite además aumentar la precisión de resultados ya que la potencia de computación disponible es más elevada.

¿Cómo funciona la High Performance Computing?

La arquitectura y funcionamiento de un cluster HPC puede ser un tema bastante complejo, pero para simplificarlo se puede dividir en 4 áreas:

1. Esqueleto

Estos son los componentes base:
Login node: componente responsable de manejar el login de los usuarios en el cluster, así como manejar remote desktops.
Master node: componente responsable de orquestar los recursos del cluster, también llamado scheduler.

2. Computación

Es el componente responsable de realizar los trabajos de los usuarios.

3. Almacenamiento

Es el componente responsable de la persistencia de datos.
NFS: utilizado para almacenar resultados y datos de los usuarios.
Parallel File System: utilizado por los compute nodes durante los cálculos.

4. Networking

Componente responsable de la comunicación entre componentes.
Todo el sistema: conectado por Gigabit Ethernet.
Compute nodes y Parallel File System: conectado por RDMA de alta velocidad.
La utilización del sistema por parte del usuario, normalmente, se realizaría de la siguiente forma:

1. Subida de datos relacionados con el estudio/cálculo a realizar.

2. Login en el sistema y preparación del trabajo a realizar.

3. Envío del trabajo al scheduler: solicitando los recursos necesarios como el número de cores.

4. Análisis o bajada de los resultados.

Casos de uso y estado del arte

Actualmente la utilización de sistemas HPC está en crecimiento ya que en los últimos años los casos de uso e industrias que pueden obtener beneficios con su utilización está también aumentando.
Esto se debe, en parte, a la capacidad de los sistemas y la utilización de GPUs. Los casos de éxito son diversos y en diversas áreas, como por ejemplo:

- Fluidodinámica Computacional (CFD).

1. Estudio ambiental de edificios.
2. Seguridad y salud: Investigación de los efectos del fuego y el humo.
3. Medicina: Estudios del flujo sanguíneo a través de vasos capilares, arterias, venas.

- Inteligencia Artificial

1. Medicina de precisión: diagnóstico de cáncer.
2. Análisis Cyber threat.
3. Weather and Climate Modeling.

- Big Data

1. Weather Forecasting.
2. Fraud detection.

- Rendering

1. Render farms.

Para concluir

Son muchas las areas que pueden utilizar HPC para mejorar sus procesos y resultados y es visible su impacto en las diversas industrias ahora mismo.
El tipo de sistema utilizado, a nivel de tamaño y complexidad, es muy flexible lo que permite a pequeñas y grandes empresas aprovechar y ganar con la utilización del HPC.
La tendencia parece ser el aumento de la utilización de estos sistemas a nivel global, así como su adopción por nuevas industrias.
Esperamos que este artículo haya sido de utilidad para aclarar el concepto de HPC y sus aplicaciones. ¡No olvides que puedes contactar con nosotros y comentar cualquier duda de que tengas!