Para Tom Abate, de Stanford University, solo las supercomputadoras tienen la capacidad de enfrentarse a los desafíos más grandes de la ciencia, pero la dificultad de programar estas máquinas impide el descubrimiento. En un artículo publicado por la universidad se pregunta si podemos crear un entorno de programación que no requiera que cada investigador sea un científico informático. Lo que él denomina un Lenguaje de Programación User Friendly.
Décadas atrás las computadoras eran costosas, complejas y raras —explica Abate— pero la revolución de las computadoras personales cambió todo eso, brindándonos a la mayoría de nosotros dispositivos más baratos, accesibles y más baratos, más rápidos y más fáciles de usar. Los científicos también se beneficiaron. Desarrollaron técnicas computarizadas para estudiar el funcionamiento interno de las células, las órbitas de los planetas alrededor de estrellas distantes y otros fenómenos que estaban más allá de sus poderes de observación.
Pero para los investigadores de vanguardia, ha surgido una cierta ironía: los nuevos y sofisticados instrumentos están empezando a producir tantos datos que se necesitan supercomputadoras para analizar los resultados experimentales.
Y los científicos que intentan analizar conjuntos de datos tan grandes a menudo tienen dificultades para dominar la complejidad del software necesario para programar el hardware.
Enter Regent, un nuevo lenguaje de programación desarrollado por un grupo dirigido por el científico informático de Stanford Alex Aiken
Entre otras cosas, Regent hace que los supercomputadores sean más fáciles de usar. «Queríamos crear un entorno de programación que no requiera que cada investigador sea un científico informático», dice Aiken, el profesor de Alcatel-Lucent en Comunicaciones y Redes.
Regent ayuda a resolver uno de los mayores desafíos de la supercomputación: las supercomputadoras de hoy en día son mucho más complejas que nunca, y los lenguajes de programación existentes han tenido dificultades para seguir el ritmo. Una supercomputadora puede aparecer en la imaginación popular como una máquina gigante, pero de hecho es una matriz de miles de microprocesadores que trabajan juntos. Los científicos normalmente programan estas matrices utilizando C ++, un lenguaje de software inventado hace unos 40 años, un eón en el tiempo de la informática. En aquel entonces, el microprocesador predominante era la unidad central de procesamiento, o CPU, el chip que lanzó la revolución de la PC. Las CPU resuelven grandes problemas rápidamente, un cálculo tras otro, en lo que los programadores llaman una moda en serie.
Más recientemente, sin embargo, un segundo tipo de microprocesador se ha vuelto importante para la supercomputación: la unidad de procesamiento de gráficos o GPU. Usado por primera vez para controlar millones de píxeles en las pantallas de computadora para mejorar los aspectos visuales de los videojuegos, las GPU pueden realizar muchos cálculos similares simultáneamente o en paralelo, como dirían los programadores. El procesamiento paralelo ha demostrado ser extremadamente útil en aplicaciones como el Aprendizaje Automático.
C ++ se ha actualizado para mantenerse al día con estos y otros cambios de hardware. Desafortunadamente, la acumulación de parches ha hecho que el lenguaje sea cada vez más difícil de usar.
Sin embargo, Regent hace que sea más fácil para un programador de supercomputadoras hacer cosas como asignar tareas de procesamiento en serie a las CPU y tareas de procesamiento en paralelo a las GPU.
Una vez que Regent ha enmarcado el programa en un nivel conceptual, las intenciones del programador se traducen (o, para usar el término técnico, se compilan) en una segunda capa de software llamada Legion, que Aiken también desarrolló. Legion genera código de máquina: instrucciones precisas que indican al hardware del supercomputador cómo llevar a cabo el programa. La estrecha integración entre Regent y Legion facilita que los programadores tomen otras decisiones importantes; En particular, dónde almacenar los datos que debe analizar la supercomputadora.
Elliott Slaughter, un científico del Laboratorio Nacional de Aceleradores SLAC que ha trabajado en Regent y Legion casi desde su inicio, dice que la integración entre las dos capas ahorra tiempo y dinero a los programadores. Las computadoras consumen energía, lo que tiene un costo. Pero el costo de energía de mover datos puede ser 100 veces el costo de realizar cálculos con esos datos. Además, los grandes experimentos a menudo se basan en instrumentos que recopilan enormes cantidades de datos. Slaughter dijo que algunos instrumentos pueden recopilar datos equivalentes a 20 DVD de video cada segundo para experimentos que duran 15 minutos. Incluso moviéndose a la velocidad de la luz sobre la fibra óptica, obtener tanta información del instrumento a la supercomputadora puede crear retrasos que podrían afectar el análisis.
«Dónde colocas los datos se convierte en una de las decisiones más importantes que toma un programador», dice Slaughter. «Puede programar las tareas de computación primero y ubicar los datos más tarde, con bastante facilidad y sin volver a escribir su código», dice.
¿Regent se extenderá? Los investigadores dicen que los nuevos lenguajes deben superar una gran cantidad de inercia. «Regent es una forma de programación muy diferente», dice Aiken. «A los investigadores les llevará un tiempo adoptar la mentalidad necesaria».
Pero dos factores operan a su favor. Primero, el hardware de supercomputación continúa mejorando. El Departamento de Energía de EE. UU. Está impulsando los desarrollos con su Proyecto de Computación de Exascala, que apunta a lograr un aumento de 50 veces en el poder supercomputacional en algún momento alrededor de 2021. El DOE está apoyando proyectos de software, incluido Regent, para ayudar a que la programación se mantenga al día.
Además, muchos científicos que desean usar supercomputadoras no están familiarizados con las herramientas actuales y desconfían de la curva de aprendizaje empinada necesaria para programar grandes experimentos. Incluso los experimentados programadores de supercomputadoras pueden encontrar el sistema actual incómodo y preguntarse si no hay una mejor manera. «Hablamos regularmente con científicos que se dan cuenta de lo fácil que Regent les hace la vida», dijo Aiken.
Fuente: Stanford Engineering