El compilador Futhark, un lenguaje funcional orientado a la generación de código paralelo para GPUs, alcanza por fin la capacidad de aplanar cualquier forma de paralelismo de datos anidado, incluidas las variantes irregulares que hasta ahora quedaban fuera de su alcance. El aplanamiento (flattening) es la técnica que convierte operaciones paralelas anidadas en otras planas, aptas para ejecutarse de forma eficiente en hardware vectorial como las GPUs, que no soportan bien el anidamiento. Hasta ahora Futhark solo aplanaba un subconjunto llamado paralelismo anidado regular.
El trabajo, iniciado experimentalmente en 2022 con un pull request que se convirtió en el más longevo del repositorio, ha cristalizado gracias a dos contribuciones clave: la tesis de grado de Cornelius Sevald-Krause, que abordó la elevación de funciones y pattern matching, y el trabajo de máster de Amirreza Hashemi, que ha completado el resto de optimizaciones y ha logrado paridad funcional y de rendimiento con el aplanador anterior, un pase del compilador con una década de heurísticas acumuladas.
El artículo explica la motivación del aplanamiento, los retos que plantea el paralelismo irregular, el concepto de torres de mapas sobre una primitiva paralela, y técnicas como la distribución de bucles (loop fission), heredera del trabajo de Guy Blelloch en NESL en los años noventa. El objetivo declarado es no reducir el rendimiento de los programas que ya funcionaban y, a medio plazo, mejorar incrementalmente el rendimiento de los programas irregulares que ahora sí pueden compilarse.
