2012-03-23 19 views
9

theoritically si può avere 65535 blocchi per diamension della griglia, fino a 65535 * 65535 * 65535.Qual è il numero massimo di blocchi possibile in CUDA?

La mia domanda è: Se si chiama un kernel come questo kernel<<< BLOCKS,THREADS >>>() (senza DIM3 oggetti), qual è il numero massimo disponibile per BLOCCHI?

In un'applicazione mia, l'ho impostato su 192000 e sembrava funzionare bene ... Il problema è che il kernel che ho usato cambia il contenuto di un enorme array, quindi, anche se ho controllato alcune parti del array e sembrava buono, non posso essere sicuro se il kernel si è comportato in modo strano in altre parti.

Per la cronaca ho una GPU 2.1, GTX 500 ti.

risposta

9

È possibile avere al massimo 65535 blocchi in una dimensione. Vedere la tabella F-2. Specifiche tecniche per capacità di calcolo (pagina 136) di CUDA C Programming Guide Version 4.1.

Come sottolineato da Pavan, se non si fornisce un dim3 per la configurazione della griglia, verrà utilizzata solo la dimensione x, quindi il limite per dimensione si applica qui.

+3

Probabilmente bello di dire che i blocchi senza DIM3 specifica solo il numero di blocchi che si desidera lungo x dimensione e quindi il limite è ancora 65535 –

+0

So che è possibile utilizzare fino a che molti blocchi per dimensione, l'ho scritto anche alla mia domanda. Il fatto è che quando chiami un kernel come ho mostrato, qual è il numero massimo di blocchi? è 65535 o 65535^3? – STE

+0

Bene, Pavan ringrazia! Lo sappiamo, cosa succede se metti più blocchi di quelli disponibili? Perché sembra funzionare bene – STE

2

65535 in una singola dimensione. Ecco il completo table

4

Nel caso in cui nessuno terre qui basata su una ricerca di Google (come ho appena fatto):

Nvidia ha cambiato le specifiche dal momento che questa domanda è stato chiesto. Con capacità di calcolo 3.0 e successive, la x-Dimension di una griglia di blocchi di thread è consentita fino a 2'147'483'647 o 2^31 - 1.

Vedere la corrente: Technical Specification

Problemi correlati