cudaReducción paralela (por ejemplo, cómo sumar una matriz)


Observaciones

El algoritmo de reducción paralela generalmente se refiere a un algoritmo que combina una matriz de elementos, produciendo un único resultado. Los problemas típicos que entran en esta categoría son:

  • resumiendo todos los elementos en una matriz
  • encontrar un máximo en una matriz

En general, la reducción paralela se puede aplicar a cualquier operador asociativo binario, es decir (A*B)*C = A*(B*C) . Con tal operador *, el algoritmo de reducción paralelo agrupa repetidamente los argumentos de la matriz en pares. Cada par se calcula en paralelo con otros, reduciendo a la mitad el tamaño del arreglo en un solo paso. El proceso se repite hasta que solo existe un elemento.

Si el operador es conmutativo (es decir, A*B = B*A ) además de ser asociativo, el algoritmo puede emparejarse en un patrón diferente. Desde el punto de vista teórico, no hace ninguna diferencia, pero en la práctica proporciona un mejor patrón de acceso a la memoria:

No todos los operadores asociativos son conmutativos, como la multiplicación de matrices, por ejemplo.

Reducción paralela (por ejemplo, cómo sumar una matriz) Ejemplos relacionados