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).

illustrazione della relazione tra dispatch, gruppi di thread e thread

Questo attributo è supportato nei tipi di shader seguenti:

Vertice Scafo Dominio Geometria Pixel Calcolo
x

 

Attributi del modello shader 5

Modello shader 5