Partager via


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

Vue d’ensemble du modèle de nuanceur 6

Modèle de nuanceur 6