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.