O SPIR-V é uma representação intermediária comum usada por OpenGL, OpenCL e Vulkan.
Funciona como uma linguagem intermediária consumida pelos drivers de dispositivos. Recentemente, a AMD introduziu uma nova abordagem no LLVM, conhecida como SPIR-V com "sabor" de fornecedor, que contém informações extras relevantes para o dispositivo ou driver GPU alvo.
Alex Voicu, da equipe ROCm da AMD, implementou no LLVM a ideia de SPIR-V com sabor de fornecedor, especificamente para ser consumido pelo back-end do compilador LLVM AMDGPU. Esse SPIR-V é intencionalmente específico para dispositivos/back-ends e sacrifica a genericidade absoluta para obter maior expressividade para recursos específicos do alvo.
O commit de mesclagem esclarece que este ainda é o SPIR-V, mas relaxado em termos de pré-condições e restrito em termos de pós-condições. Ele é garantido para ser utilizável apenas em alvos AMDGCN, embora ainda seja possível obter SPIR-V portátil através do uso do alvo com sabor.
Com o SPIR-V saborizado AMDGCN, a montagem inline AMDGCN é suportada em conjunto com a extensão SPV_INTEL_inline_assembly. Os built-ins específicos do alvo AMDGCN também são suportados, e o conjunto de recursos SPIR-V se alinha melhor ao alvo do AMDGCN específico.
Outras correções em torno deste SPIR-V com sabor de fornecedor estão sendo desenvolvidas. Será interessante ver como a AMD pretende utilizar este SPIR-V flavorizado e os benefícios líquidos em termos de melhor performance e recursos ao não ser limitado às restrições padrão do SPIR-V.
A introdução do SPIR-V com sabor de fornecedor pela AMD no LLVM representa um avanço significativo para a otimização de desempenho e recursos específicos de dispositivos AMDGCN. A capacidade de incluir montagens inline e built-ins específicos do alvo oferece uma maior expressividade e potencial de desempenho que as restrições padrão do SPIR-V não permitiriam.
À medida que a AMD continua a trabalhar em mais patches para este SPIR-V flavorizado, o impacto completo dessa inovação será melhor compreendido, possivelmente resultando em melhorias significativas para os usuários finais.
Para mais informações consulte essa solicitação de pull da AMD que foi mesclada na codebase do LLVM 19.
Nenhum comentário:
Postar um comentário