Técnicamente, reducir no es lo mismo que un doblez (doblar a la izquierda) que también se puede describir como un acumulado.
El ejemplo dado por Jules ilustra una operación de reducir muy bien:
step 1: 1 + 2 + 3 + 4
step 2: 3 + 7
step 3: 10
Tenga en cuenta que en cada paso el resultado es una matriz, incluyendo el resultado final, que es una matriz de un artículo.
Un pliegue-izquierda es como la siguiente:
step 0: a = 0
step 1: a = a + 1
step 2: a = a + 2
step 3: a = a + 3
step 4: a = a + 4
step 5: a
Ahora, obviamente estos tanto producir los mismos resultados, pero una foldl tiene un resultado bien definido cuando se administra un operador no asociativo (como la resta), mientras un operador de reducción no.
Danos algunas pistas: ¿de qué plataforma o lenguaje de programación estás hablando? Esto no suena como MPI. ¿Y qué es un "foldl"? –
foldl es un doblez a la izquierda, o un doblez con un operador asociativo a la izquierda: doblar [1,2,3,4] con + arrojaría (((1 + 2) + 3) + 4) –