Cuando hablamos de HPC , High Performance Computing o Computación de Alto Rendimiento hacemos referencia a un campo de la computación actual que da solución a problemas tecnológicos muy complejos y que involucran un gran volumen de cálculos o de coste computacional. Para ello, nos apoyamos en tecnologías como superordenadores, clusters o la computación paralela, de la que vamos a hablar en en este post.
Entre sus aplicaciones están el modelado de riesgos financieros, el análisis de datos de clima e hidrología, el análisis de secuencias genéticas, pruebas de software… en definitiva, podemos generalizar que su enfoque es realizar grandes cálculos en lote (o batch) de cualquier algoritmo o lógica que se pueda paralelizar.
No obstante, lo que le está dando mucha relevancia y actualidad a dicho campo es el auge de la nube, y con soluciones como la de Azure Batch que posteriormente veremos, ya que esto nos aporta una serie de ventajas frente a realizar la misma operativa en nuestros servidores dedicados:
Una de las herramientas que nos proporciona Microsoft Azure para implementarnos nuestro propio entorno de HPC es, como hemos dicho, Azure Batch. No obstante, y como veremos posteriormente, para poder integrar y automatizar todo el entorno de cálculo, con toda probabilidad necesitaremos apoyarnos en otros servicios de Azure adicionales.
Azure Batch, como su propio nombre indica, es una herramienta que nos ayuda a programar trabajos y administrar procesos, todo ello por lotes. Además de todas las ventajas y capacidades anteriores, en Azure Batch podemos elegir el sistema operativo de nuestras máquinas (nodos en adelante), entre varias versiones de Windows y Linux, así como configurar políticas de escalado manuales o automáticas.
En Azure Batch dispondremos de uno o varios Pools o grupos de nodos de proceso. Cada uno de estos Pools tendrá una configuración única de tamaño y sistema operativo de las máquinas, de escalado…
Cuando queramos realizar operaciones sobre él, tendremos que crear un trabajo (o Job), el cuál consistirá en una serie de tareas (Tasks) que deben ejecutarse, y que estará asociado a un Pool concreto en el que se va a ejecutar. Estas tareas llevarán información sobre qué algoritmo, lógica, o en definitiva qué fichero van a ejecutar, qué ficheros o recursos adicionales necesita para ello… Por su parte, el trabajo tendrá una serie de configuraciones a su vez, como por ejemplo su prioridad, o su programación (cuándo debe ejecutarse).
En cuanto a los nodos de proceso, hay de dos tipos:
En ambos casos, dentro del pool, podemos configurar una tarea de inicio para los nodos, la cual se ejecutará cuando se instancien, pudiendo a través de ella copiar ficheros a los nodos, o realizar configuraciones.
Como podemos imaginar, si queremos realizar un uso sencillo de esta infraestructura, nos van a ayudar mucho otros dos servicios de Azure:
Los ejecutables o algoritmos que podemos introducir y usar en Azure Batch, realmente no son únicamente lo que entendemos por ejecutable (fichero .exe), sino que en la práctica puede ser cualquier script o programa que pueda ser lanzado por línea de comandos y que esté soportado por el sistema operativo de la máquina de destino.
Como podemos ver, Azure Batch nos facilita una potencia y flexibilidad de cálculo muy grande, y todo ello desde la nube y gestionado de una forma sencilla y muy integrada con el resto de servicios de Azure. En otros artículos, entraremos en detalle en la parte técnica, para ver qué aspecto y características tiene un Job o un Pool, como podemos crearlos programáticamente, y realizar algún ejemplo de cálculo con un ejecutable sencillo.
Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continuas navegando, estás dando tu consentimiento para aceptar las cookies y también nuestra política de cookies (esperemos que no te empaches con tanta cookie 😊)