2012-03-23 18 views
9

Theoritically que puede tener 65.535 bloques por Diamension de la red, hasta 65535 * 65535 * 65535.¿Cuál es el conteo máximo de bloques posible en CUDA?

Mi pregunta es: si llama a un núcleo como esto kernel<<< BLOCKS,THREADS >>>() (sin DIM3 objetos), ¿cuál es el número máximo disponible para BLOQUES?

En una aplicación de la mía, la he instalado hasta 192.000 y parecía funcionar bien ... El problema es que el kernel Solía ​​cambia el contenido de una enorme variedad, así que aunque he comprobado algunas partes del array y parecía estar bien, no puedo estar seguro de si el kernel se comportó de forma extraña en otras partes.

Para el registro tengo un 2.1 GPU, GTX 500 ti.

Respuesta

9

Puede tener como máximo 65535 bloques en una dimensión. Ver la Tabla F-2. Especificaciones técnicas por capacidad de cálculo (página 136) de CUDA C Programming Guide Version 4.1.

Como Pavan señaló, si no proporciona un dim3 para la configuración de la grilla, solo usará la dimensión x, por lo tanto, el límite por dimensión se aplica aquí.

+3

Probablemente buen mencionar que los bloques sin DIM3 sólo especifica el número de bloques que desee a lo largo de x dimensión y por lo tanto el límite es todavía 65535 –

+0

Sé que usted puede utilizar hasta esa cantidad de bloques por dimensión, lo escribí a mi pregunta también. La cuestión es que cuando llamas a un kernel de la forma en que lo hice, ¿cuál es el número máximo de bloques? ¿es 65535 o 65535^3? – STE

+0

Muy bien, Pavan gracias! ¿Sabemos qué pasa si pones más bloques que disponibles? Porque parece funcionar bien – STE

2

65535 en una sola dimensión. Aquí está la completa table

4

En caso de que alguien aquí tierras basa en una búsqueda de Google (como acabo de hacer):

Nvidia cambió la especificación desde que se hizo esta pregunta. Con la capacidad de cálculo 3.0 y posterior, la dimensión x de una grilla de bloques de hilos puede tener hasta 2'147'483'647 o 2^31 - 1.

Véase la corriente: Technical Specification

Cuestiones relacionadas