Categorias
Drivers

Melhorias no Rusticl aumentam desempenho do driver OpenCL com variantes de shaders

O Rusticl, driver OpenCL escrito em Rust, ganhou variantes de shaders e kernel otimizado, acelerando a execução de pequenos programas em GPUs. A novidade foi integrada ao Mesa 24.3, com promessas de maior desempenho para tarefas gráficas.

O Rusticl, um driver OpenCL escrito em Rust e desenvolvido por Karol Herbst, engenheiro da Red Hat, recebeu recentemente melhorias importantes. Entre elas, está o suporte para variantes de shaders e a introdução de uma versão otimizada do kernel. Essas alterações visam melhorar o desempenho de forma significativa, especialmente ao processar pequenos programas, conhecidos como kernels, que rodam em placas de vídeo (GPUs).

Para entender melhor, OpenCL (Open Computing Language) é uma plataforma que permite que programas utilizem GPUs para acelerar cálculos. Ao invés de usar apenas o processador principal (CPU), o OpenCL distribui tarefas complexas para a GPU, que consegue processar várias coisas ao mesmo tempo de maneira muito mais rápida. Já o Rust é uma linguagem de programação moderna, conhecida por ser rápida e segura, usada na criação de software de alto desempenho como o Rusticl.

No pedido de merge para integrar essas melhorias ao código do Rusticl, Karol Herbst explicou a funcionalidade das variantes de shaders:

“Essa era uma funcionalidade que eu queria implementar há algum tempo. Agora, podemos compilar diferentes versões de shaders (pequenos programas que rodam na GPU) para otimizar a performance, principalmente em casos onde algumas condições simplificam o trabalho, como quando os offsets (ajustes) são zero. Isso elimina a necessidade de realizar operações desnecessárias.”

Resumindo, essa nova função permite ao driver compilar versões diferentes de código para a GPU, levando em conta determinadas situações. Quando certas condições estão presentes (como o fato de não precisar de ajustes), a versão otimizada do shader pode rodar muito mais rápido.

Herbst também explicou no commit sobre o kernel otimizado:

“Por padrão, precisamos prever que a aplicação pode configurar diferentes ajustes ou que uma execução de kernel pode não ser suficiente para o hardware realizar todo o trabalho de uma vez. Para reduzir a sobrecarga (processamento extra) gerada no tempo de execução do kernel, compilamos um kernel otimizado, com algumas suposições. Também aproveitamos a dica do tamanho de grupo de trabalho (workgroup_size_hint) como uma otimização adicional. Isso deve acelerar significativamente kernels relativamente pequenos, reduzindo pela metade a quantidade de instruções executadas.”

Em termos mais simples, Herbst está dizendo que as novas melhorias permitem ao driver rodar certos programas (kernels) de forma mais eficiente. Isso é possível ao “adivinhar” algumas situações comuns, eliminando processamento desnecessário e economizando recursos.

Embora ainda não tenham sido divulgados números de desempenho concretos, espera-se que essas melhorias nas variantes de shaders tragam avanços consideráveis para o Rusticl, que é um driver open-source (código aberto) e compatível com várias marcas de hardware. Essas novidades serão lançadas como parte da próxima versão do Mesa 24.3, um componente essencial para o funcionamento de drivers gráficos no Linux, prevista para o próximo trimestre.

Herbst também mencionou que planeja realizar testes de desempenho mais detalhados (benchmarks) para avaliar os benefícios das otimizações introduzidas.

Por Emanuel Negromonte

Fundador do SempreUPdate. Acredita no poder do trabalho colaborativo, no GNU/Linux, Software livre e código aberto. É possível tornar tudo mais simples quando trabalhamos juntos, e tudo mais difícil quando nos separamos.

Sair da versão mobile