Confira !!
Na semana passada eu escrevi sobre o interessante back-end do HIPSPV para o LLVM para pegar o código AMD HIP - que geralmente começa como código NVIDIA CUDA antes da HIP-ification - e ser capaz de produzir a partir da pilha do compilador LLVM como a representação intermediária SPIR-V usada nos drivers OpenCL e Vulkan. O objetivo com isso é ser capaz de pegar o código AMD HIP e, finalmente, ser capaz de executá-lo em processadores gráficos Intel, mas potencialmente em outros fornecedores / drivers, dado o fornecedor neutro SPIR-V. Mais desse trabalho HIPSPV está agora chegando ao LLVM da linha principal.
O HIPSPV é bastante interessante por ser capaz de alavancar AMD HIP em ambientes não-AMD ou mesmo potencialmente usar, digamos, o driver Clover OpenCL da Mesa para kernels HIP em vez de ser vinculado à pilha AMD ROCm para HIP que nem sempre funciona bem em todas as distribuições Linux e tem um escopo limitado de suporte para GPU Radeon.
Quão bem HIPSPV funcionará na prática e quão robusto o suporte irá amadurecer para levar HIP para kernels SPIR-V ainda está para ser visto, mas dado que HIP tem sido capaz de pegar o código CUDA original e HIP'ify para obtê-lo rodando em outro lugar, se o HIPSPV funcionar bem, pode ser realmente um grande negócio para abrir ainda mais o acesso.
A Universidade de Tecnologia de Tampere tem trabalhado neste back-end HIPSPV para ir para SPIR-V em vez da abordagem HIP da ROCm de passar pelo back-end de sombreador LLVM AMDGPU. Os desenvolvedores envolvidos neste esforço estão atualmente focados na execução da GPU Intel com a pilha Intel Compute-Runtime OpenCL / Level Zero.
Desde que foi falado sobre o HIPSPV chegar para lançar luz sobre este projeto, a cadeia de ferramentas HIPSPV real agora foi incorporada ao LLVM upstream. O HIPSPVToolChain permite a emissão de código de dispositivo HIP como um binário SPIR-V. Atualmente, esta cadeia de ferramentas depende do SPIRV-LLVM-Translator externo, mas, como abordado anteriormente, um back-end apropriado do LLVM SPIR-V também está se aproximando . Enquanto isso, hoje mesclado está este patchhabilitando a emissão SPIR-V real para HIP. O código também adiciona uma opção "--offload" para poder especificar o destino de transferência - incluindo a adição de um novo destino "genérico".
O quarto e último patch da série ainda está pendente, mas também será mesclado em breve, adicionando uma opção ao LLC para a emissão de SPIR-V.
Este suporte inicial para HIPSPV será encontrado no LLVM 14.0, com lançamento previsto para março de 2022 e, nesse ponto, veremos como o suporte amadureceu para ser prático e útil para mais GPUs / drivers.
Até a próxima !!
Nenhum comentário:
Postar um comentário