Fonction WavePrefixCountBits
Retourne la somme de toutes les variables booléennes spécifiées définies sur true sur toutes les voies actives avec des index plus petits que la voie actuelle.
Syntaxe
uint WavePrefixCountBits(
bool bBit
);
Paramètres
-
bBit
-
Variables booléennes spécifiées.
Valeur retournée
Somme de toutes les variables booléennes spécifiées définies sur true sur toutes les voies actives avec des index plus petits que la voie actuelle.
Notes
Cette fonction est prise en charge à partir du modèle de nuanceur 6.0 dans toutes les étapes du nuanceur.
Exemples
Le code suivant décrit comment implémenter une écriture compactée dans un flux ordonné où le nombre d’éléments écrits par voie est de 1 ou 0.
bool bDoesThisLaneHaveAnAppendItem = <expr>;
// compute number of items to append for the whole wave
uint laneAppendOffset = WavePrefixCountBits( bDoesThisLaneHaveAnAppendItem );
uint appendCount = WaveActiveCountBits( bDoesThisLaneHaveAnAppendItem);
// update the output location for this whole wave
uint appendOffset;
if ( WaveIsFirstLane () )
{
// this way, we only issue one atomic for the entire wave, which reduces contention
// and keeps the output data for each lane in this wave together in the output buffer
InterlockedAdd(bufferSize, appendCount, appendOffset);
}
appendOffset = WaveReadLaneFirst( appendOffset ); // broadcast value
appendOffset += laneAppendOffset; // and add in the offset for this lane
buffer[appendOffset] = myData; // write to the offset location for this lane
Voir aussi