WavePrefixSum-Funktion
Gibt die Summe aller Werte in den aktiven Lanes mit kleineren Indizes als dieser zurück.
Syntax
<type> WavePrefixSum(
<type> value
);
Parameter
value
Der zu summierende Wert.
Rückgabewert
Die Summe der Werte.
Bemerkungen
Die Reihenfolge der Vorgänge für diese Routine kann nicht garantiert werden. Das [präzise] Flag wird also darin ignoriert.
Eine Postfixsumme kann berechnet werden, indem die Präfixsumme dem Wert der aktuellen Lane hinzugefügt wird.
Beachten Sie, dass die aktive Lane mit dem niedrigsten Index immer eine 0 als Präfixsumme erhält.
Diese Funktion wird vom Shadermodell 6.0 in allen Shaderphasen unterstützt.
Beispiele
uint numToSum = 2;
uint prefixSum = WavePrefixSum( numToSum );
Auf einer Maschine mit einer Wellengröße von 8 und allen aktiven Lanes außer den Lanes 0 und 4 werden die folgenden Werte von WavePrefixSum zurückgegeben.
Lane-Index | status | prefixSum |
---|---|---|
0 | inactive | – |
1 | aktiv | = 0 |
2 | aktiv | = 0+2 |
3 | aktiv | = 0+2+2 |
4 | inactive | – |
5 | aktiv | = 0+2+2+2 |
6 | aktiv | = 0+2+2+2+2+2 |
7 | aktiv | = 0+2+2+2+2+2+2 |