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).
Cet attribut est pris en charge dans les types de nuanceurs suivants :
Sommet | Coque | Domain | Géométrie | Pixel | Compute |
---|---|---|---|---|---|
x |
Rubriques connexes