numthreads
Definisce il numero di thread da eseguire in un singolo gruppo di thread quando viene inviato un compute shader (vedere ID3D11DeviceContext::D ispatch).
numthreads(X, Y, Z)
I valori X, Y e Z indicano le dimensioni del gruppo di thread in una direzione specifica e il totale di X*Y*Z fornisce il numero di thread nel gruppo. La possibilità di specificare le dimensioni del gruppo di thread tra tre dimensioni consente l'accesso ai singoli thread in modo che le strutture di dati 2D e 3D logicamente siano accessibili.
Ad esempio, se un compute shader esegue l'aggiunta di una matrice 4x4, è possibile impostare numthreads(4,4,1) e l'indicizzazione nei singoli thread corrisponderà automaticamente alle voci della matrice. Lo shader di calcolo potrebbe anche dichiarare un gruppo di thread con lo stesso numero di thread (16) usando numthreads(16,1,1), ma dovrà quindi calcolare la voce di matrice corrente in base al numero di thread corrente.
I valori dei parametri consentiti per numthreads dipendono dalla versione dello shader di calcolo.
Compute Shader | Massimo Z | Numero massimo di thread (X*Y*Z) |
---|---|---|
cs_4_x | 1 | 768 |
cs_5_0 | 64 | 1024 |
La figura seguente illustra la relazione tra i parametri passati a ID3D11DeviceContext::D ispatch, Dispatch(5,3,2), i valori specificati nell'attributo numthreads, numthreads(10,8,3) e i valori che verranno passati allo shader di calcolo per i valori di sistema correlati al thread (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID).
Questo attributo è supportato nei tipi di shader seguenti:
Vertice | Scafo | Dominio | Geometria | Pixel | Calcolo |
---|---|---|---|---|---|
x |
Argomenti correlati