¿Podemos crear un entorno de programación que no requiera que todos los investigadores sean científicos informáticos? Crédito:Unsplash / Markus Spiske
Hace decadas, las computadoras eran costosas, complejo y raro.
La revolución de las computadoras personales cambió todo eso, proporcionándonos a la mayoría de nosotros gadgets más baratos y de fácil acceso que eran más pequeños, más rápido y más fácil 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 alguna vez estuvieron mucho más allá de sus poderes de observación.
Pero para los investigadores a la vanguardia, Ha surgido una cierta ironía: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.
Entra Regente, 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 las supercomputadoras sean más fáciles de usar. "Queríamos crear un entorno de programación que no requiera que todos los investigadores sean científicos informáticos, "dice Aiken, el Profesor Alcatel-Lucent en Comunicaciones y Redes.
Regent ayuda a resolver uno de los mayores desafíos en supercomputación:las supercomputadoras de hoy son mucho más complejas que nunca, y los lenguajes de programación existentes han luchado por mantener el ritmo. Una supercomputadora puede parecer en la imaginación popular como una máquina gigante, pero de hecho es una serie de miles de microprocesadores que trabajan juntos. Los científicos suelen programar estas matrices utilizando C ++, un lenguaje de software inventado hace unos 40 años, un eón en el tiempo de las ciencias de la computación. En aquel momento, el microprocesador predominante fue la unidad central de procesamiento, o CPU, el chip que lanzó la revolución de las PC. Las CPU resuelven grandes problemas rápidamente, un cálculo tras otro, en lo que los programadores llaman una forma serial.
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. Se utilizó por primera vez para controlar millones de píxeles en las pantallas de las computadoras para mejorar las imágenes 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. Regente, sin embargo, 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, compilado, en una segunda capa de software llamada Legion, que Aiken también desarrolló. Legion genera código de máquina:instrucciones precisas que dirigen al hardware de la supercomputadora cómo ejecutar el programa. La estrecha integración entre Regent y Legion facilita que los programadores tomen otras decisiones importantes; notablemente, dónde almacenar los datos que debe analizar la supercomputadora.
Masacre de Elliott, un científico del Laboratorio del Acelerador Nacional SLAC que ha trabajado en Regent y Legion casi desde sus inicios, dice que la integración entre las dos capas ahorra tiempo y dinero a los programadores. Las computadoras consumen energía, que tiene un costo. Pero el costo energético de mover datos puede ser 100 veces mayor que el costo de realizar cálculos con esos datos. Es má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 por segundo para experimentos que duran 15 minutos. Incluso moviéndose a la velocidad de la luz sobre fibra óptica, Obtener esa cantidad de datos del instrumento a la supercomputadora puede crear retrasos que podrían retrasar el análisis. "Dónde colocas los datos resulta ser una de las decisiones más importantes que toma un programador, "Slaughter dice. Regent y Legion ahorran dinero y tiempo al darle al programador un control sin precedentes sobre dónde almacenar los datos mientras esperan el cálculo.
¿Regent se generalizará? Los investigadores dicen que los nuevos lenguajes deben superar una gran inercia. "Regent es una forma muy diferente de programar, "Dice Aiken." Los investigadores tardarán un tiempo en 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 desarrollos con su Proyecto de Computación Exascale, que tiene como objetivo lograr un aumento de 50 veces en el poder supercomputacional en algún momento alrededor de 2021. DOE está apoyando proyectos de software, incluido Regent, para ayudar a la programación a mantener el ritmo.
Es más, muchos científicos a los que les gustaría utilizar supercomputadoras no están familiarizados con las herramientas actuales y desconfían de la empinada curva de aprendizaje necesaria para programar grandes experimentos. Incluso los programadores de supercomputadoras experimentados pueden encontrar el sistema actual engorroso y preguntarse si no hay una mejor manera. "Hablamos regularmente con científicos que se dan cuenta de lo fácil que les hace la vida Regent, "Dijo Aiken.