martes, 18 de enero de 2011

Arquitecturas masivamente paralelas basadas en GPGPUs y Amazon EC2

Hace poco hemos empezado a ver en la asignatura de PGATR del Master de Informática Gráfica, Juegos y Realidad Virtual como hoy en días es más que posible utilizar GPUs para aplicaciones de propósito general. A raíz de ello se ha propuesto un pequeño trabajo de investigación sobre arquitecturas paralelas y GPUs. Trasteando un poco por la red he dado con los servicios AWS de Amazon, que dan acceso por un módico precio a grandes capacidades de cálculo, lo que me ha llevado a escribir las siguientes reflexiones.

¿Merece la pena usar GPGPUs en las arquitecturas masivamente paralelas?

En la carrera de la supercomputación, se ha llegado a un punto en el que es imposible concebir una mayor capacidad de cálculo sin estructuras altamente paralelizables. Tanto los elementos hardware, como los elementos software se piensan de tal forma que hagan uso del paradigma de parallel computing. La prueba evidente de ello es que desde el 2005 no se ha creado ningún nuevo supercomputador que no tenga una arquitectura de procesamiento masivamente paralelo. El diseño de las nuevas GPGPU, diseñadas especialmente pará ser de propósito general y no solo para resolver de forma eficiente aplicaciones que ataquen al cauce gráfico, favorecen este tipo de estructuras paralelas.

Si echamos un vistazo en el top500 existen tres supercomputadores entre los 10 primeros que implementan una arquitectura basada en GPGPUs, dos de ellos en China (Tianhe-1A (1º) y Nebulae(3º)) y otro en Japon (Tsubame 2.0 (4º)). El más reciente de ellos, Tianhe-1A, entró en servicio en octubre de 2010 como una revisión de una arquitectura anterior y hasta hoy en día permanece como la supercomputadora más rápida del mundo, con una capacidad de 2,5 petaflops (y picos de hasta 5 petaflops). Su arquitectura se base en un conjunto de 14336 CPU servidores Xeon X5670 y 7168 GPGPUs Nvidia Tesla M2050. El coste de semejante criatura asciende a 88 millones de dólares, además de un mantenimiento de otros 20 millones, debido principalmente a la factura de la luz ( su consumo alcanza la cifra de 4,04 megawatts).

Tianhe-1A,National Supercomputer Center, Tianjin

Parece evidente que la potencia de las arquitecutas basadas en una combinación de CPUs y GPUs resulta superior a las meramente basadas en CPUs. Esto no se debe exclusivamente al uso de procesadores más pontentes, sino a la mejora que se obtiene en rendimiento, introduciendo el consumo en la ecuación. Nvidia clama al cielo  que una arquitectura basada en sus tarjetas gráficas como Tianhhe-1A es capaz de reducir el cunsumo de una máquina de 2,5 petaflops basada solo en CPUs de 12 megawatts a los 4,04 megawatts de Tianhe-1A.

Por desgracia, debido al alto coste de estos supercomputadores (en instalación, hardware y sobre todo consumo), esta gran potencia de cálculo resulta inaccesible para la mayoría de desarrolladores. ¿Qué podemos hacer si necesitamos grandes capacidades de computo?

Amazon Elastic Compute Cloud (EC2)

En la década de los 70, cuando un alumno de una carrera informática necesitaba acceso al ordenador de la universidad para realizar algún cómputo, debía solicitar acceso y tenía un tiempo asignado para ejecutar sus programas. Todo esto desapareció un poco con la introducción de los ordenadores personales en la década de los 80 y su boom en los 90s. A medida que aumentaban en potencia estos PCs, disminuía la necesidad de acceder a grandes máquinas para ejecutar los desarrollos.

Hoy en día los desarrolladores manejan en muchos casos aplicaciones que requieren una gran potencia de cálculo, sobre todo en el mundo de la informática gráfica. A parte de las grandes corporaciones (como las farmacéuticas) que si tienen acceso a los grandes supercomputadores y que en muchos casos también son patronos de sus desarrollos, existen incontables pequeños desarrolladores que quizás no requieran de tanta potencia de cálculo pero que no disponen de las arquitecturas adecuadas para ejecutar sus aplicaciones.

Por suerte, existen iniciativas que ponen al alcance de todos grandes capacidades de cómputo. Un buen ejemplo de ello son los servicios Elastic Compute Cloud de Amazon. La idea es simple: utilizar el concepto de nube para poner al servicio del usuario la capacidad exacta de cómputo que desee.

Recientemente Amazon ha actualizado este servicio para incluir en sus arquitecturas HPC clusters con GPGPUs. Cada cluster GPU instance, como Amazon lo llama, se compone los siguientes elementos:
  •  22 GB de memoria
  •  33.5 EC2 Compute Units (2 x Intel Xeon X5570, quad-core “Nehalem” architecture)
  • 2xNvidia Tesla “Fermi” M2050 (tal y como estais pensando, como las del Tianhe-1A)
  • 1690 GB de almacenamiento local
  • Plataforma 64-bits
  • 10 Gigabit Ethernet


Lo más característico de la forma en la que Amazon define sus clusters quizás sea el concepto de unidad de cálculo o compute unit. Una unidad de cálculo es el equivalente a un Opteron o Xeon de 1.0-1.2 Ghz de 2007. De esta forma se puede mantener la capacidad de las CPUs de sus clústeres con independencia del hardware utilizado.

Amazon estima  que la capacidad de sus clústeres GPGPU puede llegar a 1 teraflop. Lo increíble de este sistema es que el acceso a un clúster de estas características cuesta 2,10$ por hora, más que asequible para cualquier desarrollador que necesite semejantes capacidades de cálculo. En caso de requerir menos potencia, existen otras soluciones de menor coste. En teoría, alquilar 32 de estos nodos nos metería en el top500 por un coste de 67,2$ por hora (siempre que Amazon cuente con la infrastructura adecuada claro).

Hagamos ahora un pequeño ejercicio comparativo:

El coste de una máquina como Tianhe-1 es de 80 millones de dolares con un coste adicional de 20 millones  al año, y una potencia de 2,5 petaflops. Supongamos que la vida de esta máquina pueda ser de 50 años. Haciendo unos pocos de cálculos podemos sacar que el coste por hora y por teraflop (como el de un cluster de Amazon) de esta máquina es de 1,16$.

Evidentemente es una aproximación muy grosera, pues no tiene en cuenta los costes y perdidas por escalabilidad de la arquitectura (por no mencionar que Amazon no tiene una red tan potente como Tianhe-1), pero nos da una idea de la relación entre los costes de ambas arquitecturas por hora y teraflop. Es lógico que comprar toda la arquitectura resulta más económico a largo plazo, pero desde luego no se ajusta a nuestras necesidades la mayoría de las veces. En España se suele decir que “alquilar es tirar el dinero”, pero a mí me gusta más pensar en que es pagar por lo que realmente se necesita.

Si alguno se quiere aventurar en el maravilloso mundo de los Amazon Web Services, su blog oficial es un buen punto de inicio. Para ir empezando, aquí tenéis un video de cómo montar un HPC en sus servidores:





No hay comentarios:

Publicar un comentario