numthreads

Menentukan jumlah utas yang akan dijalankan dalam satu grup utas saat shader komputasi dikirim (lihat ID3D11DeviceContext::D ispatch).

numthreads(X, Y, Z)    

Nilai X, Y, dan Z menunjukkan ukuran grup utas dalam arah tertentu dan total X*Y*Z memberikan jumlah utas dalam grup. Kemampuan untuk menentukan ukuran grup utas di tiga dimensi memungkinkan utas individual diakses dengan cara yang secara logis struktur data 2D dan 3D.

Misalnya, jika shader komputasi melakukan penambahan matriks 4x4, numthreads dapat diatur ke numthreads(4,4,1) dan pengindeksan dalam utas individual akan secara otomatis cocok dengan entri matriks. Shader komputasi juga dapat mendeklarasikan grup utas dengan jumlah utas yang sama (16) menggunakan numthreads (16,1,1), namun kemudian harus menghitung entri matriks saat ini berdasarkan nomor utas saat ini.

Nilai parameter yang diizinkan untuk numthreads tergantung pada versi shader komputasi.

Shader Komputasi Z Maksimum Utas Maksimum (X*Y*Z)
cs_4_x 1 768
cs_5_0 64 1024

 

Ilustrasi berikut menunjukkan hubungan antara parameter yang diteruskan ke ID3D11DeviceContext::D ispatch, Dispatch(5,3,2), nilai yang ditentukan dalam atribut numthreads, numthreads(10,8,3), dan nilai yang akan diteruskan ke shader komputasi untuk nilai sistem terkait utas (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID).

ilustrasi hubungan antara pengiriman, grup utas, dan utas

Atribut ini didukung dalam jenis shader berikut:

Puncak Hull Domain Geometri Pixel Compute
x

 

Atribut Shader Model 5

Model Shader 5