A implementação Rust do OpenCL for Mesa fornece suporte para OpenCL 3.0

A nova implementação OpenCL (rusticl), escrita em Rust, sendo desenvolvida para o projeto Mesa, passou com sucesso no conjunto de testes CTS (Kronos Conformance Test Suite) usado pelo consórcio Khronos para avaliar a compatibilidade com as especificações OpenCL 3.0. O projeto está sendo desenvolvido por Karol Herbst da Red Hat, que está envolvido no desenvolvimento do Mesa, do driver Nouveau e da pilha aberta OpenCL. Observa-se que Carol entrou em contato com Khronos a respeito da certificação oficial de suporte OpenCL 3.0 em rústico.

Os testes foram concluídos em um sistema com GPU Intel de 12ª geração (Alder Lake). O trabalho foi realizado utilizando o driver Mesa Iris, mas o projeto também deverá funcionar com outros drivers Mesa que utilizam a representação intermediária sem tipo (IR) de shaders NIR. O pedido de fusão do Rusticle com o Mesa ainda está em análise e nenhuma decisão foi tomada sobre a inclusão do código Rust no Mesa. Antes de Rusticl ser aceito na composição principal do Mesa, você pode usar um branch separado para construção, ao compilar o qual você deve especificar os parâmetros de construção “-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= verdadeiro".

Rusticle atua como um análogo do frontend OpenCL Clover do Mesa e também é desenvolvido usando a interface Gallium fornecida no Mesa. A estaca Clover está abandonada há muito tempo e o rústico se posiciona como seu futuro substituto. Além de alcançar compatibilidade com OpenCL 3.0, o projeto Rusticle difere do Clover no suporte a extensões OpenCL para processamento de imagens, mas ainda não suporta o formato FP16.

Para gerar ligações para Mesa e OpenCL, permitindo chamar funções Rust a partir do código C e vice-versa, Rust-bindgen é usado no Rusticle. A possibilidade de utilização da linguagem Rust no projeto Mesa é discutida desde 2020. Entre as vantagens do suporte Rust, cita-se o aumento da segurança e qualidade dos drivers devido à eliminação de problemas típicos ao trabalhar com memória, bem como a possibilidade de incluir desenvolvimentos de terceiros no Mesa, como Kazan (uma implementação do Vulkan em ferrugem). As desvantagens incluem maior complexidade do sistema de construção, relutância em se vincular ao sistema de pacotes de carga, requisitos expandidos para o ambiente de construção e a necessidade de incluir o compilador Rust nas dependências de construção necessárias para construir os principais componentes de desktop no Linux.

Fonte: opennet.ru

Adicionar um comentário