- Si avrà
5120 threads. 5120 groups. 1 thread per group
. Ogni gruppo (1 thread) prenderà un processore. Non è possibile sincronizzare nessuno di essi (nel senso tradizionale).
- Avrete
2560 threads. 1280 groups. 2 threads in each group
. Ogni gruppo (2 thread) prenderà un processore. È possibile sincronizzare questi due thread (nel senso tradizionale).
- Avrete
640 threads. 160 groups. 4 threads in each group
. Ogni gruppo (4 thread) prenderà un processore. È possibile sincronizzare questi quattro thread (nel senso tradizionale).
In OpenCL è necessario esprimere la dimensione di lavoro globale in termini di numero totale di thread. L'API OpenCL sottostante analizzerà la dimensione di lavoro globale e dividerà per la dimensione di lavoro locale per determinare la disposizione dei thread.
Ora (questo è un suggerimento generale. Ci potrebbero essere casi in cui è necessario farlo, ma per ora ..)
è una pessima idea. Chiaramente. Stai sprecando il tempo del tuo processore assegnandogli 1 thread alla volta. Mentre questo potrebbe non essere la fine del mondo per le CPU è per le moderne GPU. Perché? perché ogni processore sulla tua GPU avrà un numero di core. Tutto pronto per l'azione. Solo uno di loro funziona in questo caso. Inoltre, non è possibile sincronizzare i thread in caso di necessità.
Stessa cosa.
Stessa cosa.
Se ricordo correttamente NVIDIA suggerisce almeno 32 thread in un gruppo per ottenere le migliori prestazioni.
fonte
2013-03-09 20:58:31