Quantas "unidades paralelas" uma GPU possui?

8

Gostaria de saber quantas unidades paralelas para processamento de vértices uma GPU possui.

Esta página da Wikipedia fornece GFLOPS e velocidade de relógio, por exemplo, para a Radeon 5850 "Broadway PRO", você recebe 1000 GFLOPS. Suponha que a execução de um shader de vértice seja 100 flops, então isso significa que você pode processar 1000e9 / 100 = 10e9 vértices por segundo.

Existe um número publicado pelo fabricante do número de unidades de processamento paralelo ou uma maneira de saber esse número?

bobobobo
fonte
8
Varia de cada modelo de cartão para o próximo. Qual é o objetivo desta pergunta?
AttackingHobo
Concordo com o AttackingHobo, é irrelevante o número de núcleos, pois cada chip possui uma quantidade diferente e eles também funcionam de maneira diferente. Portanto, em um modelo, 30 núcleos podem ser mais poderosos que um com 60 núcleos. Além disso, você deverá consultar as especificações de cada chip do fabricante, se não confiar nas informações da wikipedia (que provavelmente são precisas)
1213 Pablo Ariel

Respostas:

27

Suponha que a execução de um shader de vértice seja 100 flops, então isso significa que você pode processar 1000e9 / 100 = 10e9 vértices por segundo.

Não, certamente não.

Basicamente, você deve considerar suspeito qualquer cálculo da velocidade de execução de qualquer código baseado apenas na contagem de "FLOPS". De fato, geralmente é melhor que você ignore completamente o FLOPS.

Você não definiu o termo "unidade paralela"; sem essa definição, poderíamos adivinhar o que você está querendo.

Pegue a Radeon 5870. Possui 1600 unidades de ponto flutuante. Isso significa que, para cada ciclo, ele pode executar 1600 operações escalares de ponto flutuante de uma só vez. No entanto, cada código de operação VLIW funciona em registros matemáticos vetoriais de 5 vias. Portanto, a menor granularidade possível do código real é 1600/5 ou 320 (nota: essa é uma grande simplificação). São 320 tópicos.

No entanto , não é assim que funciona. Você não tem 320 caminhos separados de execução em andamento. Você não pode ter 320 partes diferentes de código em execução em 320 unidades diferentes. Veja, os VLIWs de 5 vias estão agrupados em núcleos SIMD de 4 vias. Cada SIMD pode ter seu próprio caminho de execução e seu próprio código-fonte. Cada VLIW em um núcleo SIMD pode ter dados separados, para que eles calculem valores separados. Mas cada VLIW dentro de um núcleo SIMD executa as mesmas instruções na etapa de bloqueio com os outros VLIWs nesse núcleo.

Realmente, você só tem 320/4, ou 80 threads no total. Mas, novamente, depende de que tipo de "unidade paralela" você está falando. Tecnicamente, 1600, 320 e 80 são todas respostas legítimas.

E isso é apenas para uma arquitetura específica . A linha Fermi da NVIDIA (GeForce 4xx e superior) usa uma arquitetura muito diferente. A linha Cayman da ATI (Radeon 69xx) altera os VLIWs de 5 vias para VLIWs de 4 vias. Sua próxima arquitetura também pode ter algumas diferenças significativas.

Sem saber o que você está procurando, simplesmente não há como responder à pergunta.

Nicol Bolas
fonte
Ótimo. Também encontrei este artigo sobre arquitetura de GPU, mas onde você encontrou a unidade de ponto flutuante? Era isso que eu estava procurando.
precisa saber é o seguinte
@obobobo: Estava na página da Wikipedia que você vinculou. Além disso, o artigo GPU Gems é específico para a linha GeForce 6-7. Também tem 6 anos.
Nicol Bolas
É interessante que você pronuncia SIMD por suas letras individuais. O VLIW é um bocado confuso por qualquer coisa que não seja suas letras, mas a maioria dos programadores de sistemas com quem trabalhei diz "sim dee".
Andon M. Coleman
@NicolBolas, Cara, 80 instruções simultâneas? Essa frustração ainda supera os 8 ou 16 habituais que você obtém da CPU.
Pacerier 3/11
3

Eu não entendo, o que você quer dizer com unidade de processamento paralelo? unidades shader? Como hoje em dia um ppu e um gpu são basicamente a mesma coisa, quero dizer que o ppu é o gpu se estamos falando de ati radeon.

Suponho que você queira dizer as unidades funcionais, você deve ler o Config corecampo na 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.

então para o radeon você diz que teria:

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

qual para o broadway pro é: 800:40:16

isso significa que possui 800 unidades de shader, 40 unidades de mapeamento de textura e 16 unidades de saída de renderização.

EDIT: Bem, não, parece que a unidade de processamento paralelo também é aplicada ao que você quer dizer, então acho que é meio confuso chamá-los dessa maneira. Eu os chamaria de unidades shader ou núcleos simd.

Pablo Ariel
fonte
O que é um PPU ??
Pacerier 3/11