... sono appena citati nello PTX manual. Non c'è alcun indizio su ciò per cui sono buoni o su come usarli.I registri PTX "bit bucket"
Qualcuno ne sa di più? Mi manca un concetto comune?
... sono appena citati nello PTX manual. Non c'è alcun indizio su ciò per cui sono buoni o su come usarli.I registri PTX "bit bucket"
Qualcuno ne sa di più? Mi manca un concetto comune?
Il commento di Bart è fondamentalmente corretto. Più in dettaglio, come indicato nello PTX ISA 3.1 manual,
Per alcune istruzioni l'operando di destinazione è facoltativo. Un operando "bit bucket" denotato con un carattere di sottolineatura (
_
) può essere utilizzato al posto di un registro di destinazione.
v'è in realtà solo una classe di istruzioni elencate in 3.1 PTX specifiche per le quali _
è una destinazione valida: atom
. Ecco la semantica di atom
:
Atomicamente carica il valore originale in luogo di una nel registro di destinazione d, esegue un'operazione di riduzione con operando B e il valore in posizione a, e memorizza il risultato dell'operazione specificata nella posizione a, sovrascrivendo il valore originale.
E c'è una nota per atom
:
semplici riduzioni possono essere specificati utilizzando il “bit bucket” destinazione operando ‘
_
’.
Quindi, possiamo costruire un esempio:
atom.global.add.s32 _, [a], 4
Questo aggiungerebbe 4 al numero intero firmato a posizione di memoria a
, e non restituire il valore precedente di posizione a
in un registro. Quindi se non hai bisogno del valore precedente, puoi usare questo. Suppongo che il compilatore genererebbe questo per il codice
atomicAdd(&a, 4);
dal momento che il valore di ritorno di atomicAdd non viene memorizzato in una variabile.
Se non mi sbaglio (anche se molto probabilmente sono e verrà corretto su questo;)) le scritture sul registro sono essenzialmente no-op. – Bart
In generale si specifica un pozzetto come registro di destinazione per un'istruzione quando non si è interessati al risultato del registro prodotto dall'istruzione, ma solo all'effetto collaterale dell'istruzione. Ad esempio, con vari microprocessori l'istruzione di confronto è in realtà una pseudoistruzione che viene implementata come istruzione di sottrazione con il registro di destinazione specificato come bit-bucket, poiché uno è interessato solo ai flag (codici di condizioni) generati come side- effetto della sottrazione. harrism già fornito utilizzo bit-bucket specifico per PTX di seguito. – njuffa