El RV770 tiene 10 núcleos SIMD, cada uno formado por 16 núcleos de sombreado, cada uno de los cuales consta de 5 ALU (arquitectura VLIW5). Un total de 800 ALU que pueden hacer cálculos paralelos. No creo que haya una manera de sacar todos estos números de OpenCL. Tampoco estoy seguro de qué equivaldría a un núcleo de CPU. Tal vez un núcleo shader? Puede leer sobre VLIW at Wikipedia. Es un diseño interesante.
Si dice que un núcleo de CPU solo está ejecutando una "tarea" en un momento dado, aunque tiene varias ALU funcionando en paralelo, entonces creo que puede decir que el RV770 estaría trabajando en 160 tareas. Pero con las diferencias en cómo funcionan los diferentes chips, creo que "núcleo" y "tarea" pueden ser difíciles de definir. Una CPU con hyperthreading puede incluso ejecutar dos juegos de códigos al mismo tiempo. Con OpenCL no creo que sea posible ejecutar más de un kernel en un momento dado, a menos que las actualizaciones recientes del controlador hayan cambiado eso.
De todos modos, creo que es más importante presentar su trabajo a la GPU de una manera que ofrezca el mejor rendimiento. Lamentablemente, no hay forma de encontrar el mejor tamaño de grupo de trabajo aparte de la experimentación. Al menos no que yo sepa. Una ayuda es que si los controladores admiten OpenCL 1.1 puede consultar CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE y establecer el tamaño de su trabajo en un múltiplo de eso. De lo contrario, ir por un múltiplo de 64 es probablemente una apuesta segura.
¿Qué quieres decir? ¿Cuántos kernels se pueden ejecutar a la vez o cuántos hilos se pueden ejecutar en la GPU? –
Probablemente núcleos. He visto la especificación, se llama "Elemento de procesamiento". Entonces la pregunta puede ser reformulada: "¿Cuántos elementos de procesamiento tiene mi GPU?" – Dmitriy
No se puede decir tan fácilmente. Una GPU tiene varias unidades de cálculo, cada una de las cuales ejecuta varios hilos ("warp" o "wavefront") simultáneamente, en paralelo. Para nVidia esto es actualmente 32, para ATI 64. No estoy seguro de si hay un límite CL que se relaciona con el tamaño de la urdimbre. Además, cada unidad puede tener un número desconocido (nVidia dice 1024 en algún documento) de subprocesos en vuelo por unidad de cómputo que están programados por hardware cuando una disformidad bloquea por alguna razón. Suponiendo números similares, eso haría que tu GPU esté más cerca de los 320,000 hilos. – Damon