Looking for cuda Keywords? Try Ask4Keywords

cudaParallele Reduktion (z. B. wie ein Array summiert wird)


Bemerkungen

Paralleler Reduktionsalgorithmus bezieht sich typischerweise auf einen Algorithmus, der ein Array von Elementen kombiniert, um ein einzelnes Ergebnis zu erzeugen. Typische Probleme, die in diese Kategorie fallen, sind:

  • Aufsummieren aller Elemente in einem Array
  • ein Maximum in einem Array finden

Im Allgemeinen kann die parallele Reduktion für jeden binären assoziativen Operator angewendet werden , dh (A*B)*C = A*(B*C) . Mit einem solchen Operator * gruppiert der Parallelreduktionsalgorithmus die Array-Argumente wiederholt in Paaren. Jedes Paar wird parallel zu anderen berechnet, wobei die Gesamtgröße des Arrays in einem Schritt halbiert wird. Der Vorgang wird wiederholt, bis nur ein einziges Element vorhanden ist.

Wenn der Operator kommutativ ist (dh A*B = B*A ) und nicht assoziativ ist, kann der Algorithmus in einem anderen Muster paaren. Vom theoretischen Standpunkt aus macht es keinen Unterschied, aber in der Praxis ergibt sich ein besseres Speicherzugriffsmuster:

Nicht alle assoziativen Operatoren sind kommutativ - nehmen Sie zum Beispiel die Matrixmultiplikation.

Parallele Reduktion (z. B. wie ein Array summiert wird) Verwandte Beispiele