Como os Shaders são mapeados para o hardware real da GPU

1

Em uma tentativa de entender melhor a GPU e a GPU, eu gostaria de obter uma melhor imagem mental dos shaders e como eles são implementados na GPU. Existe uma relação de 1 para 1 entre um programa de sombreador e um núcleo de GPU? Então, um programa de shader de vértice é executado em um núcleo enquanto o shader de fragmento é executado em outro núcleo? Então, os dados são transmitidos do núcleo do shader de vértice para o núcleo do shader de fragmento? Ou cada núcleo individual em uma GPU é responsável por todos os shaders e todo o pipeline de gráficos? O significado de um núcleo de GPU contém o sombreador de vértice, o sombreamento de tesselação, o sombreamento de geometria etc., e cada núcleo emitirá um pixel final. Qualquer informação para ajudar a solidificar minha imagem mental seria útil.

    
por Boagz 19.10.2016 / 06:24

1 resposta

0

A relação exata depende do cartão e do motorista. Os programas Shader são convertidos de formulários genéricos (OpenGL ou DirectX, por exemplo) em algo que a placa pode ser executada diretamente, como uma compilação just-in-time para linguagens como Java que usam bytecode.

Assim, o relacionamento depende da natureza do programa e do cartão. A placa pode precisar atribuir vários núcleos se o programa for grande e complexo, mas é mais provável que um único núcleo execute muitas instâncias do sombreador em vários processadores de fluxo.

Os cartões modernos atribuem o trabalho dinamicamente, de modo que raramente há um relacionamento de 1: 1. Cada núcleo tem vários processadores de fluxo, portanto, pode manipular vários shaders simultaneamente, se eles não forem muito complexos.

    
por 19.10.2016 / 10:41