Un nuevo método para calcular sumas de prefijos (prefix sums) en procesadores ARM Neon ha logrado velocidades de hasta 8.9 mil millones de valores por segundo en un Apple M4, superando significativamente el enfoque tradicional (3.9 mil millones de valores por segundo). La técnica, desarrollada por Daniel Lemire, aprovecha las instrucciones SIMD (Single Instruction, Multiple Data) de ARM Neon para procesar múltiples valores simultáneamente. Inicialmente, un intento de optimización SIMD simple resultó menos eficiente que el método escalar. La solución final implica cargar y procesar bloques de 16 valores de manera intercalada, realizando sumas de prefijos en paralelo dentro de estos bloques y luego combinándolos. El código, implementado con instrucciones intrínsecas en C, permite una ejecución más rápida al aprovechar la capacidad de los procesadores modernos para realizar múltiples operaciones por ciclo y predecir ramas de manera efectiva. El código fuente está disponible en GitHub, y el artículo detalla las instrucciones intrínsecas utilizadas para la optimización.
