¿Para qué usar una supercomputadora?

p-04Con el propósito de poder resolver problemas de manera rápida para que los resultados fuesen útiles en un tiempo razonable se crearon las computadoras digitales. Posteriormente se encontró que podían ser utilizadas en diferentes ámbitos de la ciencia, la ingeniería, la medicina, los servicios financieros y contables, las comunicaciones, el entretenimiento (videojuegos), el control de procesos y operación automática de mecanismos, esto último conllevó a la creación de los robots. Dada esta diversificación, se plantearon por parte de los tecnólogos, científicos, investigadores y muchos profesionales de los diferentes países problemas cada vez más complejos y grandes como retos de la inteligencia humana. Es claro que gran cantidad de estos problemas corresponden a asuntos de interés en la salud, el clima, la prospección petrolera, la farmacología, los estudios territoriales, la construcción de edificios, puentes, barcos, equipos electrónicos y robots, entre otros ingenios tecnológicos; y así en general en variados ámbitos de interés.

Ante las nuevas dimensiones de los nuevos problemas se construyeron computadoras cada vez más poderosas en sus capacidades de cómputo, almacenamiento y velocidad. Cuando éstas dejaron de ser suficientes para enfrentar la complejidad y tamaño de los problemas se conectaron muchas computadoras para resolver los problemas en conjunto y ayudándose, igual que muchos seres vivos estos arreglos interconectados de computadoras se organizan y programan para atacar en grupo los desafíos; esto último dio origen hace algunas décadas a las primeras supercomputadoras.

La estructura de una supercomputadora moderna se denomina clúster de computadoras, donde cada elemento —llamado nodo— es un equipo de alto rendimiento y a veces de alta disponibilidad. La conjunción, uso inteligente y adecuado de los recursos colectivos potencia el poder de cada computadora individual. En palabras llanas podemos decir que la unión de cada nodo hace la fuerza de la supercomputadora. Dada la arquitectura actual de los nodos de cómputo se define el poder de un equipo por el número de núcleos —también llamados cores—, la memoria interna disponible, su velocidad de interconexión, su capacidad de almacenamiento externo, su arquitectura, sistema operativo y software instalado. Para esto se pone a prueba la supercomputadora mediante una prueba llamada Linpack y se mide su poder de cómputo por la cantidad de operaciones con números decimales que puede realizar en un segundo, llamados flops (Floating Point Operations Per Second). Sus dimensiones van desde unos cientos de cores hasta millones. La máquina actual más poderosa  tiene un poco más de 10.6 millones de cores y puede realizar un poco más de 93,000 Tflops (un Tera corresponde a un billón, es decir a un 1 seguido de 12 ceros). Esta supercomputadora se encuentra en China en el Centro Nacional de Supercómputo de Wuxi y se llama Sunway TaihuLight (http://www.nsccwx.cn/wxcyw/), para consultar la lista de noviembre de 2017 de las 500 supercomputadoras más poderosas y reportadas del mundo se puede visitar el sitio www.top500.org/lists/2017/11/.

Y bueno, regresando a la pregunta: ¿para qué usar una supercomputadora? Una respuesta simple es: para resolver problemas muy complejos o difíciles, que requieren mucho tiempo para hallar su solución en un laboratorio o computadora normal; y que son de interés para la ciencia, tecnología, salud, la economía o alguna área del conocimiento.

Para esto además de tener acceso a la supercomputadora se requiere: de software adecuado, el cual puede ser una solución generada por la comunidad de investigadores de un área del conocimiento, el cual sea de distribución libre (software libre) o se tenga que pagar por él (software comercial); plantear correctamente el problema, preparar los datos suficientes y necesarios al equipo de supercómputo; y finalmente utilizar un equipo en el cual el software procese esos datos en un tiempo razonable, de no ser así podrían pasar años, décadas o siglos para hallar la solución buscada y en general después de ese tiempo se podría perder el interés por los resultados, y esto en el caso que la supercomputadora en ese tiempo no falle o se quede sin energía, por ejemplo.

Un ejemplo interesante del uso de una supercomputadora corresponde a la investigación de los efectos de diferentes sustancias químicas diseñadas (fármacos) que sean candidatos para ayudar a curar o prevenir una cierta enfermedad o comportamiento de algún microorganismo en un ser vivo, como puede ser un animal o vegetal. Es posible mediante software de química para calcular la interacción entre el fármaco candidato y la célula o tejido de interés y en un tiempo corto (segundos, minutos u horas) tener información de su efecto en las condiciones programadas, sin necesidad de hacer pruebas en un laboratorio y esperar los resultados (días, semanas, meses o años). Entonces el uso de la supercomputadora mediante un programa de “simulación” permite descartar los candidatos con poco o ningún efecto y quedarse con los candidatos con mayores posibilidades de éxito. Luego estos podrán ser probados en un laboratorio y en consecuencia al ser menos, el tiempo para hallar el fármaco buscado se reducirá mucho.

Otro ejemplo corresponde al estudio de señales eléctricas del cerebro relacionadas con eventos de ataques epilépticos. Para esto se procesan registros de individuos que padecen de la enfermedad y se buscan patrones que permitan medir con anticipación la probabilidad que en los próximos —digamos 10— segundos se vaya a producir un ataque epiléptico severo. Esta predicción permite suministrar de forma automática al paciente un medicamento adecuado luego de reconocerse el patrón previo al evento epiléptico y en consecuencia ayudar a reducir los efectos del ataque. De igual forma se puede plantear una estrategia para eventos cardiacos o de otro tipo. En estos casos la tarea primaria es hallar los patrones (tarea pesada) y luego mediante un método rápido hacer la identificación (tarea ligera), la primera puede requerir supercómputo y la segunda la puede hacer por ejemplo un teléfono celular.

Para situaciones genéricas planteadas en los ejemplos anteriores se ha desarrollado software y de igual manera para otros escenarios (y en caso de no haber un software específico, si ya se tiene un modelo de solución se puede crear uno adecuado de forma incremental) para plataformas de supercómputo de diferentes tallas y así resolver algunos de los problemas que la ciencia y tecnología demandan, ayudando las supercomputadoras a reducir los tiempos para hallar respuestas y en consecuencia poner a disposición de los profesionales y personas soluciones a múltiples problemas. También se trabaja en nuevas arquitecturas de supercomputadoras.

En resumen, podemos decir que una supercomputadora ayuda a hallar soluciones a problemas complejos que se pueden modelar y procesar utilizando muchos cores (cientos o miles e incluso millones) y tener resultados en tiempos cortos.

Nuestro laboratorio, el LNS, tiene como propósito apoyar a investigadores de instituciones nacionales públicas y privadas con recursos de supercómputo para que realicen su trabajo de investigación y es apoyado por el Consejo Nacional de Ciencia y Tecnología (Conacyt) y la Benemérita Universidad Autónoma de Puebla (BUAP).

Los invitamos a visitar la página del Laboratorio Nacional de Supercómputo del Sureste de México (LNS) y conocer más de las actividades que en él se realizan, así como los clústers que los conforman. Es la segunda máquina más poderosa, por el momento, de México ubicada en instituciones públicas de educación superior, nuestro sitio es www.lns.org.mx

 

 

manuel.martin@correo.buap.mx