Estamos todos locos

Supercomputación

High Performance Computing es diseñar un algoritmo de traspuesta en OpenMP que sobreescala cuando tu código usa más de 1024 nodos.

Guillem Borrell, completamente enfermo.
Por guillem  |  en: jue 04 Mar 2010  |  7 Comentarios, Comentar...

Me hizo gracia

Citas

Compañera, usted sabe que puede contar conmigo, no hasta dos ni hasta diez sino contar conmigo..

Mario Benedetti
Por guillem  |  en: dom 28 Feb 2010  |  0 Comentarios, Comentar...

Stirling, fase I

Sáhara

Si no fuera por Englobe Technologies, que por tradición prueba cada año con algo nuevo en I+D, el motor Stirling hubiera muerto hace tiempo por mi falta de dedicación. Como se trata de hacer funcionar todo el proceso de desarrollo sin que nadie tenga que invertir dinero que no tiene se pidió una subvención al IMADE.

El resultado han sido 400 páginas de informe y una maqueta para los auditores y un montón de conclusiones sin escribir para nosotros. Ya van más de 1000 horas hombre puestas en el proyecto y avanzamos lenta pero inexorablemente.

Una de las conclusiones que llegamos gracias al trabajo de Alberto fue que un motor de 30 kW no puede funcionar con rodamientos. No hay manera de huír de la bomba de aceite con las compilcaciones que eso significa con un motor que busca ser lo más simple posible.

Por lo que respecta al modelo térmico, dudo que haya grupos que sepan hacer mejores números con modelos simplificados de motor de ciclo de aire por mucho que publiquen patentes sobre posibles diseños. Entendemos el funcionamiento del motor y sabemos qué hacer para optimizarlo pero sabemos que avanzar por prueba y error requiere una inversión prohibitiva.

Me gustaría empezar con las simulaciones en serio para planear el diseño tridimensional del motor. Sabemos cómo funciona el regenerador y los cilindros pero me resisto a construir depósitos para medir presiones de llenado sabiendo de Mecánica de Fluidos Computacional. Ahora se acabará la inyección de dinero público... ¿Y ahora qué?

Por guillem  |  en: dom 28 Feb 2010  |  2 Comentarios, Comentar...

Cocktail para jóvenes fracasados (definitivo)

Blog

La antigua convocatoria aquí

Por guillem  |  en: mié 24 Feb 2010  |  0 Comentarios, Comentar...

Sobre las tarjetas aceleradoras (y fin)

Supercomputación

Al volver de la presentación de IBM (hablo de ella en la entrada anterior) estuvimos hablando un rato con Javier sobre arquitecturas de cálculo. Somos grandes usuarios del Mare Nostrum y nos interesa saber qué se nos viene encima con la nueva máquina del BSC. Hemos recibido varios rumores e información contradictoria: Power 7, Blue Gene/P y la última es Intel Nehalem con aceleradoras Nvidia Fermi.

El tema de las tarjetas aceleradoras en supercomputación es ya recurrente y empieza a ser cansino así que, en vez de simplemente decir que a los que hacemos turbulencia no nos hace especial ilusión, voy a demostrarlo con números.

De manera simplificada se puede decir que cualquier algoritmo se basa en mover memoria al procesador, realizar cálculos en él y devolver el resultado. Es una simplificación grosera de la arquitectura de von Neuman pero nos servirá para entender las cuentas.

Entonces el tiempo de cálculo total tc es igual al tiempo necesario para mover los datos al procesador mas el tiempo necesario para realizar los cálculos. El primero será proporcional al número de datos almacenados dividido por el ancho de banda de acceso a memoria y el segundo será igual a las operaciones necesarias dividido por el número de operaciones en coma flotante por segundo.

tc ~ N/BW + C/Flops

Para entenderlo un poco mejor los argumentos adimensionalizaremos el tiempo total con el tiempo característico de la memoria:

τc ~ 1 + (C/N)(BW/Flops)

C/N es el número de operaciones dividido por la memoria utilizada y BW/Flops la relación entre el ancho de banda de memoria y la potencia de cálculo del procesador. Históricamente BW/Flops ha estado siempre sobre el 0.1 en arquitecturas no aceleradas pero en una aceleradora alcanza valores de entre 10-3 y 10-4.

En lo que respecta al primer término depende en gran medida del algoritmo que requiera más tiempo de cálculo y siempre es una función de N. Por ejemplo, una transformada rápida de Fourier es N log N, multiplicar una matriz llena por un vector es N (cuidado porque muchos se confunden con esta operación, N no es el número de incógnitas sino la memoria almacenada; la matriz también hay que ponerla en algún sitio), resolver un sistema lineal de ecuaciones es N2... Un canal turbulento es más o menos N log N porque lo que mandan son las transformadas de Fourier. Los códigos de mecánica de fluidos están entre el N, el N log N y, en menor medida, N2. Minimizar un funcional para plegar una proteína está en N3. Entonces el término C/N es, para nuestro caso, log N. Teniendo en cuenta que la memoria de un nodo está sobre los 2 y los 8 GBi, log N está sobre 10 (siempre hablando de órdenes de magnitud).

Si nos sacamos la cuenta de (C/N)(BW/Flops) para un Blue Gene (o cualquier otro cluster Beowulf convencional) nos de algo parecido a 1, τc~ 2 y no estemos tirando hardware. Si utilizáramos aceleradoras esta cuenta nos saldría 0.01 con lo que τc ~ 1.01. Ahora pensaréis que 1.01 es menor que 2 pero esta cifra hay que multiplicarla por el N/BW que es entre 5 y 10 veces mayor en en las plataformas aceleradas. Lo único que dicen estos números es que, hagamos lo que hagamos, el tiempo característico de la memoria es el que manda y la prioridad debe ser aumentar BW. En estos casos la tarjeta se utiliza como una unidad vectorial más y quien realiza la mayor parte del trabajo es el procesador que tiene mayor BW.

Las tarjetas aceleradoras son interesantes cuando C es del orden de N2 o mayor, entonces (C/N)(BW/Flops) será siempre mucho mayor que uno, el tiempo de la memoria será despreciable y cualquier mejora en la relación (BW/Flops) será bienvenida.

Aún así, y por desgracia, no es el caso de la turbulencia y la mecánica de fludos computacional. Una cosa está clara, si hay que usar aceleradoras se usarán.

Por guillem  |  en: lun 22 Feb 2010  |  7 Comentarios, Comentar...

Niños con juguetes

Supercomputación

El miércoles fui invitado a la presentación de la nueva familia de procesadores de IBM, el Power 7, en el IBM Forum de Madrid. Era con diferencia la persona más joven del evento y uno de los pocos que no llevaba traje y corbata. Hasta las azafatas (todas con pinta de adolescente) me miraban con cara de pasmo. Cuando empezaron a hablar de migraciones, appliances y demás jerga empresarial me salí de la sala de conferencias. Me encontré con Santi, el comercial que me invitó, y le reconocí que me sentía completamente desubicado. Supongo que me vio tan perdido que hasta que me fui me hizo de anfitrión y me dio un poco de charla, algo que le agradezco.

El procesador es un monstruo que por el momento sólo venden en nodos de 4 vías (esto son 32 cores y 128 hilos por nodo). Este nodo es el building block de los mainframe de IBM, estos bichos que cuestan millones de euros que hacen nuestra declaración de la renta. Obviamente esto corre AIX y supongo que soporta Linux porque IBM in person se encarga de ello. Nos dieron el precio del "kit básico" de 750 y no os lo digo porque seguramente no entendéis el contexto de esta cifra.

Curiosamente IBM no es una empresa que se caracterice precisamente por vender hardware. Quizás lo era en los años 80 pero ahora todo el mundo parece tener claro que se trata de uno de los mayores proveedores de servicios del mundo. Entonces la pregunta es por qué mantiene una división de hardware puntera que supongo será bastante más pequeña que Intel. Creo que tengo la respuesta, pero es algo larga.

Entre los asistentes estaban representantes de varios ministerios, Indra, Renfe, grandes proveedores de servicios... Gente que necesita que las cosas funcionen y de aquí salto a la experiencia personal.

Llevo cierto tiempo pegándome con ordenadores. Tampoco demasiado, no soy ninguna figura en el mundillo. Durante este tiempo sí he tenido suficientes experiencias como para distinguir entre infraestructuras de juguete y el Mundo RealTM. La mayoría de veces he tenido suerte y cuando algo no ha funcionado sólo me he llevado una decepción personal o a lo sumo unos gritos de mi jefe pero a medida que los proyectos crecen las cosas cambian. Un proyecto de 100.000 euros implica responsabilidad, un proyecto de 10.000.000 implica perfección.

Gracias a internet han proliferado centenares de chavales que con unas pocas nociones de marketing han vendido buenas ideas como si fueran el nuevo Google. Conozco unos cuantos. Algunas veces son ideas realmente buenas y, sinceramente y con algo de envidia, me alegro por ellos. Pero ignoran que en realidad están jugando y cuando uno juega lo hace con juguetes.

Cobrar 35€ al mes para que un cliente de tu aplicación Web 2.0 use un cachito de tu granja de 12 servidores puede parecer algo relevante. ¿Cuánto cuesta una granja de servidores? A lo sumo 50.000€. Esta es la definición de juguete. En el mundo de los juguetes sólo trinufas a base de ofrecer algo gratis, perder un montón de dinero y esperar que tus primeros clientes de pago lleguen antes que se termine el dinero que te regaló el fondo de capital de riesgo. Con un poco de suerte nunca llegas a ser lo suficientemente grande como para que un cliente te exija mejoras o modificaciones. ¿Suerte?

Cuando te enfrentas a un cliente que te suelta la pasta para que hagas algo la cosa cambia radicalmente. Te exige resultados por algo que aún no has hecho. Entonces, con las responsabilidades, empiezan los problemas. Os pongo un ejemplo. Un cliente te pide que adaptes tu aplicación para que la use en su intranet y como necesitas la pasta dices que sí. Hablas con su administrador de redes y te dice que tienen dos p575 con AIX 5.3. Buscas un poco en la Wikipedia y piensas que es posible. Firmas el contrato y empiezas a currar con tus colegas para convertir tu juguete en algo serio. Les mandas la aplicación y te la devuelven porque no funciona. Resulta que en sus servidores la versión de Ruby instalada es la 1.8.1 y la biblioteca javascript que tú usas aún no está certificada por IBM. Obviamente ellos no piensan instalar nada que les pueda costar medio dolor de cabeza, prefieren que estos dolores los tengas tú. Cuando llevas seis meses con el backporting empiezas a perder dinero. El resto de la historia os la podéis imaginar.

Todos los que os queráis dedicar al negocio de los servicios en internet debéis recordar que Facebook empezó a ganar dinero a finales de 2009 con casi 100 millones de usuarios. Los usuarios no pagan, los clientes sí.

El cliente del ejemplo anterior quería un juguete. Si a los seis meses de retraso no te ha crucificado es porque en realidad no lo necesitaba. El problema son los clientes que sí necesitan algo y que si no se lo proporcionas van a mandar a su equipo legal para que te saque las tripas a los dos días de retraso. Son los clientes que pagan.

Por suerte sólo me he dedicado a los juguetes pero los últimos han sido ya un poco grandes. También he podido asomar la cabeza para ver qué se cuece entre los grandes y la experiencia me ha abierto los ojos.

¿Por qué implantar un producto de IBM puede llegar a costar hasta 100 veces más que uno de juguete equivalente? Porque el de IBM funciona. Y creedme, al final lo que realmente importa es que las cosas funcionen. Si ponen una caja en tu datacenter que hace exactamente lo que quieres dentro del plazo que diste te la trae floja que sea un Power 7 con AIX y los appliances que hayan instalado. Al final has justificado el presupuesto y el consejo de administración pensará que ha valido la pena lo que pagaron.

Pero, y aquí llega la conclusión más importante... ¿Qué diferencia mis juguetes de los productos de verdad? IBM se gasta todos los años una fortuna en laboratorios que prueban una y otra vez lo que pretenden ofrecer a sus clientes, diseño de hardware incluido. En cambio yo no sé si algo va a funcionar o no. Necesito el dinero del contrato para comprobarlo, lo que supone un riesgo para el propio proyecto. Y lo único que no quiere oír el cliente es la palabra riesgo así que les mientes. Y ellos saben que les estás mintiendo. Lo que realmente temen es que te estés mintiendo a ti mismo.

Por guillem  |  en: lun 22 Feb 2010  |  3 Comentarios, Comentar...
Página siguiente