Futhark implementa un atributo para ejecutar funciones en CPU

Fuentes: Futhark adds attribute to run specific functions on CPU

El lenguaje de programación Futhark ha introducido un nuevo atributo, #[cpu_function], para permitir que el compilador genere código en CPU en lugar de en GPU para funciones específicas. Esta solución técnica responde a un problema de rendimiento crítico identificado en un proyecto de tesis de Elias Smedegaard, donde el cálculo de matrices Jacobianas esparsas mediante diferenciación automática requería una fase de coloración de grafos secuencial que no podía ejecutarse eficientemente en hardware paralelo. El desafío principal radica en que el modelo de compilación de Futhark asume que todos los arrays en memoria GPU, lo que genera un sobrecoste de comunicación de microsegundos por elemento cuando se accede a memoria GPU desde código CPU. Aunque existen optimizaciones existentes para migrar cómputo secuencial a GPU, estas no aplican a algoritmos complejos con bucles. Por ello, el equipo desarrolló este atributo como una solución pragmática: las funciones marcadas con #[cpu_function] se compilan para CPU y almacenan sus arrays en memoria CPU, mientras que el resultado final se copia a GPU. Esta aproximación evita la complejidad de una compilación separada y permite explotar el paralelismo de GPU para las partes intensivas del cálculo, manteniendo la eficiencia en la fase secuencial de preprocesamiento.