Futhark: el lenguaje de programación diseñado para aprovechar GPUs y CPUs multinúcleo

Fuentes: Futhark by Example
Futhark: el lenguaje de programación diseñado para aprovechar GPUs y CPUs multinúcleo
Imagen generada con IA

Futhark es un lenguaje de programación funcional diseñado específicamente para la computación paralela de alto rendimiento, capaz de ejecutarse eficientemente tanto en GPUs como en CPUs multinúcleo. A diferencia de los lenguajes de propósito general, FutharkEstá diseñado desde su base para expresar algoritmos paralelos de manera directa y eficiente, permitiendo a los desarrolladores escribir código que se aprovecha automáticamente de la arquitectura paralela subyacente. El lenguaje ofrece un sistema de tipos moderno con polimorfismo paramétrico, lo que significa que las funciones pueden operar sobre diferentes tipos de datos sin duplicar código. Entre sus características destacadas se encuentran las operaciones de reducción y escaneo (scan), que permiten procesar arrays de manera paralela, así como operaciones de gather y scatter para manipulación avanzada de datos. La colección 'Futhark by Example' proporciona una introducción práctica organizada por complejidad creciente, comenzando con conceptos básicos como valores primitivos, funciones y arrays, hasta llegar a técnicas avanzadas como diferenciación automática, ordenamiento Radix sort, Merge sort y algoritmos de búsqueda binaria. El lenguaje incluye integración nativa con Python, lo que permite usar Futhark para acelerar kernels computacionales dentro de programas Python existentes. Entre los proyectos reales que utilizan Futhark se encuentran juegos como 'Diving Beet' (simulador de partículas), 'Futball' (juego con ray tracing), 'Futracer' (ray tracer), 'Futswirl' (generador de fractales), implementaciones del hash Poseidon para Filecoin, y compiladores como 'Pareas'. También existen implementaciones de métodos numéricos como lattice Boltzmann y ejemplos basados en libros populares de ray tracing. Para experimentar con el lenguaje, los usuarios pueden cargar los ejemplos en el intérprete interactivo (REPL) que proporciona Futhark, lo que facilita el aprendizaje hands-on.