Como bien lo dice el título de este artículo, hablo básicamente de dos cosas: HPC y su relación con Windows Azure. Si ud quiere saber de Windows Azure antes de leer este artículo, le recomiendo mis posts introductorios. Si ud quiere saber de HPC y la alternativa que ofrece Windows en este sentido le recomiendo que lea la primera parte de este artículo. Y si quiere saber la relación entre HPC y Windows Azure, le recomiendo la segunda parte del post.

image

Primera Parte: HPC

En la vida real existen aplicaciones de software que definitivamente no pueden ejecutarse en un ambiente de cómputo tradicional y tampoco en un ambiente de cómputo avanzado tradicional (esto es un servidor de grandes características)

Cálculos científicos como por ejemplo análisis para la creación de una nueva medicina, el estudio del genoma humano, aplicaciones financieras para ejecutar estudios de riesgo sobre cantidades de datos descomunales, predicción del comportamiento de acciones en las bolsas de valores… todo esto requiere de capacidades de cómputo que sobrepasan cualquier procesador que se pueda comprar en Unilago (léase centro comercial temático de computadores) o encargar a Dell por ejemplo a través del sitio web.

Los cálculos que hacen las CPUs se miden en FLOPS (FLoating point Operations Per Second). Una calculadora decente trabaja con 10FLOPS.

En general los procesadores de nuestros computadores hoy en día generan de 0.5 a 120 GFLOPS de poder de cómputo. 1 GFLOPS = 10e9 FLOPS

Pero procesos como la simulación de la dinámica molecular no se pueden terminar en corto tiempo ni siquiera con el poder de 6 PFLOPS = 6 millones de GFLOPS o lo que es equivalente a 6 millones de PCs trabajando juntos para lograr el mismo objetivo.

Para el caso de la resolución de estos procesos complejos, se han abordado dos soluciones. La primera son los supercomputadores y la segunda son los clústeres de cómputo. Ambas soluciones hacen parte de lo que conocemos hoy como High Performance Computing o HPC.

La primera tiene grandes limitaciones físicas, pues no podemos construir un solo procesador con una capacidad tan grande como la requerida. Resultaría súper costoso y poco eficiente. Así que los supercomputadores son escasos y limitados.

La segunda opción, es tratar de emular a un solo procesador gigantesco, mediante la unión de recursos de cómputo que se encuentran distribuidos en unidades independientes de cómputo, que se comunican a través de redes. Esta opción es más viable que la primera y básicamente viene en dos sabores.

El primer sabor es el restringido a una red homogénea. En general es una LAN o VLAN con máquinas del mismo tipo bajo un mismo sistema operativo. Los desarrollos y administración de este tipo de ambientes son sencillos, pero tienen la limitante que no se podrían conectar con el resto de capacidades de cómputo que tiene el mundo. En general estos sistemas se conocen como Clúster Computing.

El segundo sabor comprende aquel en el que los nodos que componen la súper máquina se encuentran en distintas redes o dominios administrativos con diferentes características de hardware, sistemas operativos y demás, conectados generalmente a través de internet. La administración es más complicada, pero tenemos la ventaja de poder obtener cómputo de todo el mundo para lograr el resultado buscado. Este tipo de solución se conoce como Grid Computing.

Hoy en día la mayor capacidad de cómputo alcanzada por un sistema de Grid Computing es de 6PFLOPS precisamente alcanzada por el proyecto Folding@Home que hace simulaciones moleculares. Las máquinas empleadas en este tipo de cómputo son PCs de usuarios como ud o como yo que descargan un cliente que aprovecha los recursos no usados de la CPU para procesar unidades de trabajo en background que luego de ser procesadas se reenvían al servidor central.

Este tipo de aplicaciones siempre han estado en el ámbito científico súper especializado y acaso en aplicaciones financieras de altísimo nivel.

Ahora sin embargo no es necesario estar haciendo un doctorado en mecánica cuántica para entrar en este mundo. El mero hecho de crear una aplicación de análisis de redes sociales, podría requerir HPC.

 

Pero cómo desplegar una solución HPC?

Gracias a Windows Server 2008R2, es muy sencillo. Si ud tiene una licencia de este OS, ya puede activar los servicios de HPC que vienen con la licencia, para poder conectarse con otras máquinas y distribuir su súper aplicación en el clúster de su compañía. Y si requiere de más cómputo en ambientes heterogéneos y en otras ubicaciones geográficas, entonces gracias a las características High Performance Computing Basic Profile (HPCBP), un estándar del Open Grid Forum para poder conectar clústeres heterogéneos en ambientes HPC podrá expandir sus límites mundialmente.

Siendo relativamente nuevo en el mercado de HPC, Windows HPC Server 2008 se posicionó en el ranking mundial Anude sistemas de cómputo HPC en la casilla 19 con una capacidad de 180.6 TFLOPS que es aproximadamente igual a 18000 PCs de escritorio de las más potentes hoy en día.

image

Segunda Parte: HPC y Windows Azure

Windows Azure se distingue sobre todo por sus capacidades de escalamiento instantáneo cuando las aplicaciones así lo requieran. Sin embargo desde su concepción, estuvo dirigido a aplicaciones de negocio y no a HPC. No obstante, cuando uno quiere desarrollar una aplicación HPC por ejemplo para el departamento financiero de un Banco y ve la arquitectura de Windows Azure no puede evitar pensar que sería el mejor modelo para hacer HPC “por demanda” sin necesidad de invertir miles de dólares en unidades de cómputo que solo serán necesarias por un tiempo determinado.

El modelo de Azure nos permitiría por ejemplo tener nuestro Servidor de HPC local en nuestras instalaciones por ejemplo, pero las unidades de cómputo estarían en la nube y aprovisionaríamos tantas como necesitemos solo por el tiempo necesario!

Qué se necesita entonces para correr HPC en Windows Azure?

Las instancias de cómputo en Windows Azure corren sobre versiones virtualizadas de Windows Server 2008R2x64. Así que lo único necesario es activar el servicio de HPC en esas instancias y ya estarán listas para unirse al objetivo común, al servicio del servidor principal que estaría on-premises.

La buena noticia, es que los servicios HPC ya están activos en las instancias de Azure, listos para que las instancias identificar cuando se les están enviando peticiones para trabajos de HPC. De esta manera, aplicaciones financieras, de industria farmacéutica, científicas y demás, podrán generar un sistema HPC con un servidor local y levantar cuántas máquinas sea necesario en la nube y solo serán cargados los costos consumidos. Nada de comprar máquinas ni pagar tarifas planas. Todo será cobrado dinámicamente de acuerdo al consumo de cómputo con los estándares de cobro de Windows Azure. (Hoy en día una hora de proceso en Windows Azure con una CP de 1.7GHz de velocidad nos cuesta 12 centavos de dólar).

Así que si usted tiene este súper sistema en mente con necesidades de HPC para poderlo desplegar y no lo ha podido sacar a la luz porque la inversión inicial es extremadamente alta, piense que Windows Azure ya admite HPC y que además le convierte toda la inversión de capital inicial (CAPEX) en costos dinámicos operativos (OPEX), brindándole todo lo necesario para que pueda sacar su negocio a producción!