numthreads

Définit le nombre de threads à exécuter dans un seul groupe de threads lorsqu’un nuanceur de calcul est distribué (voir ID3D11DeviceContext::D ispatch).

numthreads(X, Y, Z)    

Les valeurs X, Y et Z indiquent la taille du groupe de threads dans une direction particulière et le total de X*Y*Z indique le nombre de threads dans le groupe. La possibilité de spécifier la taille du groupe de threads sur trois dimensions permet d’accéder à des threads individuels d’une manière logique aux structures de données 2D et 3D.

Par exemple, si un nuanceur de calcul effectue l’ajout de matrices 4x4, numthreads peut être défini sur numthreads(4,4,1) et l’indexation dans les threads individuels correspond automatiquement aux entrées de matrice. Le nuanceur de calcul peut également déclarer un groupe de threads avec le même nombre de threads (16) à l’aide de numthreads(16,1,1), mais il doit ensuite calculer l’entrée de matrice actuelle en fonction du numéro de thread actuel.

Les valeurs de paramètre autorisées pour numthreads dépendent de la version du nuanceur de calcul.

Nuanceur de calcul Z maximal Nombre maximal de threads (X*Y*Z)
cs_4_x 1 768
cs_5_0 64 1 024

 

L’illustration suivante montre la relation entre les paramètres passés à ID3D11DeviceContext::D ispatch, Dispatch(5,3,2), les valeurs spécifiées dans l’attribut numthreads, numthreads(10,8,3) et les valeurs qui seront passées au nuanceur de calcul pour les valeurs système liées au thread (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID).

illustration de la relation entre dispatch, groupes de threads et threads

Cet attribut est pris en charge dans les types de nuanceurs suivants :

Sommet Coque Domain Géométrie Pixel Compute
x

 

Attributs du modèle nuanceur 5

Modèle de nuanceur 5