O progresso do upstreaming está sendo feito em uma nova cadeia de ferramentas "HIPSPV" para o caminho HIP da AMD para que os kernels SPIR-V possam ser executados e, finalmente, permitindo a execução por drivers OpenCL. Este esforço HIPSPV conduzido fora da AMD visa permitir que o código HIP funcione em outros drivers de GPU, como os da Intel.
O HIP da AMD é sua API de tempo de execução C ++ e linguagem kernel para aplicativos portáteis em GPUs AMD e NVIDIA a partir de uma única árvore de origem. O HIP foi a resposta da AMD ao CUDA da NVIDIA, com o objetivo de facilitar a portabilidade do código CUDA para execução em hardware AMD Radeon / Instinct. Com ferramentas como o HIPIFY de código aberto, eles até mesmo pretendem torná-lo mais fácil e automatizado possível para converter fontes CUDA em HIP.
O HIP faz parte da pilha de drivers Radeon Open eCosystem "ROCm" da AMD para computação em GPU. O HIP / ROCm aproveita a pilha do compilador LLVM de código aberto e, a partir daí, gera o código do dispositivo GPU da AMD para execução.
Está sendo trabalhado agora por outros desenvolvedores "HIPSPV" como uma nova cadeia de ferramentas HIP complementar para LLVM. Com o HIPSPV, em vez de ir para o back-end AMDGPU, o HIPSPV visa gerar código SPIR-V a partir do HIP. Esses módulos SPIR-V gerados, por sua vez, podem ser executados sobre um driver OpenCL, assumindo que todas as extensões necessárias e outros requisitos estejam em vigor. SPIR-V, é claro, sendo a representação intermediária moderna do Khronos Group para computação / gráficos usados agora em OpenCL / OpenGL / Vulkan entre fornecedores.
Houve esforços anteriores em torno da conversão de HIP em SPIR-V para a execução da GPU Intel, enquanto agora o HIPSPV está trabalhando em direção ao LLVM upstream. Henry Linjamäki, da Universidade de Tecnologia de Tampere, na Finlândia, está liderando esse esforço do HIPSPV com mais detalhes por meio desta postagem do llvm-dev .
Ontem, este trabalho de refatoração do conjunto de ferramentas HIP foi um pré-requisito para o lançamento do HIPSPV. O trabalho real do HIPSPV e os patches relacionados ainda estão pendentes .
O HIPSPV pretende fazer uso do novo back-end SPIR-V do LLVM, que em breve deverá ser integrado, enquanto no momento está utilizando o tradutor externo LLVM SPIR-V.
Será muito interessante ver como o HIPSPV funciona bem na prática e quão robusto o suporte da cadeia de ferramentas é para converter o HIP para SPIR-V e quão facilmente ele será executado em ambientes OpenCL. Além de ser benéfico para a Intel com seu Compute-Runtime / Nível Zero para então lidar com códigos HIP / CUDA, o HIPSPV também pode ser benéfico para HIP em outros drivers OpenCL de código aberto, potencialmente como o Clover da Mesa e similares. Com software como o Blender agora oferecendo suporte AMD HIP, será interessante ver se HIPSPV poderia funcionar aqui, etc. Tempos interessantes à frente e é ótimo ver todas as inovações de código aberto contínuas em torno do LLVM.
Até a próxima !!
Nenhum comentário:
Postar um comentário