¿Cuántas "unidades paralelas" tiene una GPU?

8

Me gustaría saber cuántas unidades paralelas para procesar vértices tiene una GPU.

Esta página de Wikipedia proporciona un GFLOPS y una velocidad de reloj, por ejemplo, para el Radeon 5850 "Broadway PRO", obtienes 1000 GFLOPS. Suponga que ejecutar un sombreador de vértices es de 100 flops, entonces eso significa que puede procesar 1000e9 / 100 = 10e9 vértices por segundo.

¿Existe un número de unidades de procesamiento en paralelo publicado por el fabricante , o una forma de saber ese número?

bobobobo
fuente
8
Varía de cada modelo de tarjeta a la siguiente. ¿Cuál es el objetivo de esta pregunta?
AttackingHobo
Estoy de acuerdo con AttackingHobo, es irrelevante el número de núcleos porque cada chip tiene una cantidad diferente y también funcionan de manera diferente, por lo que en un modelo 30 núcleos pueden ser más potentes que uno con 60 núcleos. También tendrá que consultar cada especificación de chip del fabricante si no confía en la información allí en wikipedia (que probablemente sea precisa)
Pablo Ariel
1
stackoverflow.com/questions/6490572/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Respuestas:

27

Suponga que ejecutar un sombreador de vértices es de 100 flops, entonces eso significa que puede procesar 1000e9 / 100 = 10e9 vértices por segundo.

No, lo más seguro es que no.

Básicamente, debe considerar sospechoso cualquier cálculo de la velocidad de ejecución de cualquier código basado únicamente en el recuento "FLOPS". De hecho, generalmente es mejor si ignoras completamente FLOPS por completo.

No definió el término "unidad paralela"; sin esa definición, solo podríamos adivinar lo que quieres.

Tome la Radeon 5870. Tiene 1600 unidades de punto flotante. Eso significa que, para cada ciclo, puede ejecutar 1600 operaciones de punto flotante escalar a la vez. Sin embargo, cada código de operación VLIW funciona en registros matemáticos vectoriales de 5 vías. Entonces, la granularidad más pequeña posible del código real es 1600/5, o 320 (nota: esta es una gran simplificación). Eso es 320 hilos.

Sin embargo , no es así como funciona. No tienes 320 rutas de ejecución separadas. No puede tener 320 piezas diferentes de código ejecutándose en 320 unidades diferentes. Vea, los VLIW de 5 vías están agrupados en núcleos SIMD de 4 vías. Cada SIMD puede tener su propia ruta de ejecución y su propio código fuente. Cada VLIW dentro de un núcleo SIMD puede tener datos separados, para que calculen valores separados. Pero cada VLIW dentro de un núcleo SIMD ejecuta las mismas instrucciones en paso de bloqueo con los otros VLIW en ese núcleo.

Entonces, realmente, solo tienes 320/4 u 80 hilos en total. Pero, de nuevo, depende de qué tipo de "unidad paralela" esté hablando. Técnicamente, 1600, 320 y 80 son respuestas legítimas.

Y eso es solo para una arquitectura específica . La línea Fermi de NVIDIA (GeForce 4xx y superior) utiliza una arquitectura muy diferente. La línea Cayman de ATI (Radeon 69xx) cambia los VLIW de 5 vías a VLIW de 4 vías. Su próxima arquitectura también puede tener algunas diferencias significativas.

Sin saber lo que está buscando, simplemente no hay forma de responder la pregunta.

Nicol Bolas
fuente
Excelente. También encontré este artículo sobre arquitectura de GPU, pero ¿dónde encontraste los recuentos de unidades de punto flotante? Eso es lo que estaba buscando.
bobobobo
@bobobobo: Estaba en la página de Wikipedia a la que te vinculaste. Además, ese artículo de GPU Gems es específico de la línea GeForce 6-7. También tiene 6 años.
Nicol Bolas
Es interesante que pronuncies SIMD por sus letras individuales. VLIW es un bocado confuso por cualquier otra cosa que no sean sus letras, pero la mayoría (todos, de hecho) programadores de sistemas con los que he trabajado dicen "sim dee".
Andon M. Coleman
@NicolBolas, Dude, 80 instrucciones concurrentes? Esa franja aún supera los 8 o 16 habituales que obtienes de la CPU.
Pacerier el
3

No entiendo, ¿qué quieres decir con unidad de procesamiento en paralelo? unidades de sombreado? Debido a que una ppu y una gpu hoy en día son básicamente lo mismo, quiero decir que la ppu ES la gpu si estamos hablando de ati radeon.

Supongo que te refieres a las unidades funcionales, tienes que leer el Config corecampo en wikipedia:

Config Core – The layout of the graphics pipeline, in terms of functional units. Over time the number, type and variety of functional units in the GPU core has changed significantly; before each section in the list there is an explanation as to what functional units are present in each generation of processors.

así que para el radeon dices que tendría:

Unified Shaders (Vertex shader/Geometry shader/Pixel shader) : Texture mapping unit : Render Output unit

que para el broadway pro es: 800:40:16

Esto significa que tiene 800 unidades de sombreado, 40 unidades de mapeo de textura y 16 unidades de salida de render.

EDITAR: Bueno, no, parece que la unidad de procesamiento en paralelo también se aplica a lo que quieres decir, así que supongo que es un poco confuso llamarlos de esa manera. Yo los llamaría unidades sombreadoras o núcleos simd.

Pablo Ariel
fuente
¿Qué es una PPU?
Pacerier