jueves, 21 de agosto de 2008

El éxito: crónica de los diferentes fracasos.

Conseguir acabar de manera exitosa el reto de superar el récord del mundo no fue sencillo. Al igual que la primera vez que se quiso probar HEMCUVE++ sobre Finis Terrae, la semana del reto fue una locura. Hasta el cuarto día no se pudieron solucionar diferentes aspectos que inducían a pensar en el completo fracaso del reto. Todas las llamadas telefónicas del día 7 de agosto trataban sobre cómo justificar el fracaso...

En primer lugar nos encontramos con problemas de portabilidad. Este tipo de problemas yo ya me los esperaba. Es una utopía: aunque se trabaje con sistemas muy parecidos, con el mismo compilador, las mismas librerías, el mismo sistema operativo, la realidad es que las primeras ejecuciones de pruebas en el Finis Terrae fracasaban.

Primero, no escalaban al igual que en nuestro cluster Empire. A pesar de que nuestro cluster es muy modesto, el código escalaba mejor que en Finis Terrae. Los técnicos acabaron averiguando que era un problema de pining con la solución MPI/OpenMP. Costó averiguarlo porque parecía a todas luces que el pining era correcto.

Segundo y que nos costó averiguar: la FFT de la MKL en nuestras máquinas y en Finis Terrae nos daban diferentes resultados... Bien es verdad que hacíamos un truco extraño para declarar los descriptores de la FFT. Este truco en nuestras máquinas nos funcionaba y comprobamos que en Finis Terrae no. Debo dedicar un post especial a la FFT de intel, no como crítica, pues es tan completo que se deben aclarar ciertas cosas desde la experiencia. Conseguimos resolver el problema, sin necesidad de declarar los descriptores cada vez que se necesitaba una FFT.

Tercero, cuarto y consecutivos... Aparecieron varios bugs que empeoraban la escalabilidad cuando se aplicaba a ejemplos grandes o a un número de procesadores importantes. Uno de ellos, la lectura de disco de las excitaciones de entrada, hizo fracasar el reto en el primer intento serio. Este tipo de bugs eran esperados pues hay ciertas cosas que cuesta probar en un cluster pequeño, pero la experiencia nos hace que casi no existan.

Todo esto, era la crónica de un fracaso, pero el jueves noche despues del n-ésimo cambio se dejó la ejecución que finalmente vimos concluida a la mañana siguiente.

Este lucha sobre un posible fracaso es más agobiante de lo que pueda parecer. El acceso a una estructura de supercomputación como Finis Terrae está muy controlada. El fracasar suponía que al menos hasta dentro de 6 meses, en los que se pudiera tener acceso a un número importante de nodos en paralelo, no sería posible el intento del récord. In extremis, al igual que nuestro intento anterior, se consiguió analizar el reto científico propuesto.

Esta crónica, que coincide en parte con el anterior reto (igualar el record que estaba vigente a principios de 2007) en lo que respecta a fracasos, será la misma crónica que habrá en este invierno cuando intentemos 250 millones de incógnitas... Y parecerá más importante cuando esta cifra la traduzcamos al inglés: A quarter of billion of unknowns. Si es que lo conseguimos.

No hay comentarios: