Comprendere le dimensioni della griglia CUDA, le dimensioni dei blocchi e l'organizzazione dei thread (spiegazione semplice)


Answers

Supponiamo che una GPU 9800GT: 14 multiprocessori, ognuno ha 8 threadprocessors e warpsize 32, il che significa che ogni thread processor gestisce fino a 32 thread. 14 * 8 * 32 = 3584 è il numero massimo di filettature contemporanee.

se si esegue questo kernel con più di 3584 thread (ad esempio 4000 thread e non è importante la definizione del blocco e della griglia, gpu li tratterà allo stesso modo):

func1();
__syncthreads();
func2();
__syncthreads();

quindi l'ordine di esecuzione di queste due funzioni è il seguente:

1.func1 viene eseguito per i primi 3584 thread

2.func2 viene eseguito per i primi 3584 thread

3.func1 viene eseguito per i thread rimanenti

4.func2 viene eseguito per i thread rimanenti

Question

Come sono organizzati i thread per essere eseguiti da una GPU?