numthreads

Define o número de threads a serem executados em um único grupo de threads quando um sombreador de computação é expedido (consulte ID3D11DeviceContext::D ispatch).

numthreads(X, Y, Z)    

Os valores X, Y e Z indicam o tamanho do grupo de threads em uma direção específica e o total de X*Y*Z fornece o número de threads no grupo. A capacidade de especificar o tamanho do grupo de threads em três dimensões permite que threads individuais sejam acessados de uma maneira que logicamente estruturas de dados 2D e 3D.

Por exemplo, se um sombreador de computação estiver fazendo adição de matriz 4x4, os numthreads poderão ser definidos como numthreads(4,4,1) e a indexação nos threads individuais corresponderá automaticamente às entradas de matriz. O sombreador de computação também pode declarar um grupo de threads com o mesmo número de threads (16) usando numthreads(16,1,1), no entanto, ele teria que calcular a entrada de matriz atual com base no número de thread atual.

Os valores de parâmetro permitidos para numthreads dependem da versão do sombreador de computação.

Sombreador de Computação Máximo de Z Máximo de threads (X*Y*Z)
cs_4_x 1 768
cs_5_0 64 1024

 

A ilustração a seguir mostra a relação entre os parâmetros passados para ID3D11DeviceContext::D ispatch, Dispatch(5,3,2), os valores especificados no atributo numthreads, numthreads(10,8,3) e valores que serão passados para o sombreador de computação para os valores do sistema relacionados ao thread (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID).

ilustração da relação entre expedição, grupos de threads e threads

Esse atributo tem suporte nos seguintes tipos de sombreadores:

Vértice Casco Domínio Geometry Pixel Computação
x

 

Atributos do Modelo de Sombreador 5

Modelo de sombreador 5