El término HPC (High Performance Computing o Computación de Alto Rendimiento) hace referencia al campo de la computación que permite resolver problemas muy complejos, generalmente científicos o ingenieriles, y que involucran un gran coste computacional y grandes volúmenes de datos. Para ello, se toman como base algunas tecnologías como los superordenadores, los clusters de computadores y las técnicas de programación paralela.
Instalar una aplicación HPC en un cluster no es una tarea simple ya que todas las bibliotecas, los compiladores y las dependencias de la aplicación deben estar instaladas y deben coincidir con lo requerido por la aplicación. Además, generalmente diferentes aplicaciones presentan requerimientos diferentes en cuanto a las versiones utilizadas, pudiendo dar lugar a ciertos conflictos en la instalación.
Intuitivamente, parece razonable pensar que si consiguieramos minimizar la dependencia de la aplicación HPC con el software instalado en el cluster se facilitaría en gran medida la gestión del cluster y además se aceleraría la fase de despliegue de la aplicación HPC a un entorno particular de ejecución.
La tecnología de contenedores software viene a cubrir esta necesidad. Mediante la utilización de contenedores, una aplicación o un servicio, sus dependencias y su configuración se empaquetan como una imagen que es independiente del entorno en el que va a ejecutarse. Además, los contenedores también aíslan las aplicaciones entre sí en un sistema operativo compartido, lo que facilita enormemente ejecutar diversas aplicaciones HPC en un mismo cluster.
El objetivo principal de este TFG es tomar una aplicación HPC (Weather Research and Forecasting, WRF) y crear a partir de ella un contenedor que pueda ejecutarse en un cluster de computadores.
De forma más detallada se pueden considerar los siguientes objetivos parciales:
- Estudio de diversos productos relacionados con contenedores software: Docker, Singularity, Kubernetes, ...
- Estudio, uso y creación de contenedores software de aplicaciones secuenciales
- Estudio, uso y creación de contenedores software de aplicaciones paralelas que utilizan técnicas de paso de mensajes
- Adaptación y despliegue de los contenedores software en un entorno de ejecución cluster