FERRAMENTAS LINUX: O Desenvolvedor renomado da AMD Mesa, Marek Olšák, Continua Otimizando o Suporte do OpenGL no Mesa/Gallium3D

terça-feira, 18 de junho de 2024

O Desenvolvedor renomado da AMD Mesa, Marek Olšák, Continua Otimizando o Suporte do OpenGL no Mesa/Gallium3D

 

Marek Olšák, conhecido desenvolvedor da AMD, não mostra sinais de desaceleração em seus esforços para otimizar o suporte OpenGL dentro do stack de drivers Mesa/Gallium3D. 

Com mais de uma década desde que se juntou à AMD e mais de quinze anos envolvido com o Mesa desde seus dias como desenvolvedor estudantil, Marek continua a trazer otimizações de desempenho e novos recursos para beneficiar os drivers gráficos Radeon de código aberto no Linux.

O trabalho mais recente mesclado hoje para o próximo lançamento do Mesa 24.2 é a capacidade de vetorizar a entrada/saída dentro do linker GLSL. 





Isso é realizado como parte do código comum NIR e GLSL dentro do Mesa. Marek explicou no pedido de mesclagem:

"Em geral, queremos IO vetorizado saindo do linker GLSL. Como o linker escalariza para nir_opt_varyings, ele não tinha uma maneira de re-vetorizar IO até agora."

nir_opt_vectorize_io:

-Vetoriza carregamentos e armazenamentos de entrada/saída reduzidos

- Vetoriza carregamentos e armazenamentos de 16 bits baixos e altos mesclando-os em um único carregamento ou armazenamento de 32 bits (exceto load_interpolated_input, que precisa manter bit_size=16)

- Realiza a DCE (Eliminação de Código Morto) de armazenamentos de saída que sobrescrevem o valor anterior escrevendo no mesmo slot e componente.

A vetorização é local apenas dentro de blocos básicos. Não ocorre vetorização através de limites de blocos básicos, barreiras (apenas saídas TCS), emite (apenas saídas GS) e dependências de carga de saída <-> armazenamento de saída.




Todos os carregamentos e armazenamentos devem ser escalares antes do passe. Carregamentos e armazenamentos de 64 bits são proibidos.




Para cada bloco básico, a complexidade de tempo é O(n*log(n)), onde n é o número de instruções IO dentro desse bloco.

Não foram compartilhadas métricas de desempenho como parte da mudança no linker GLSL para (re)vetorizar o IO reduzido. Aqueles interessados podem encontrar todos os detalhes dentro deste pedido de mesclagem com mais de 600 linhas de código novo agora no Mesa 24.2-devel.




Fonte 
Até a próxima !

Nenhum comentário:

Postar um comentário