O kit de ferramentas ZLUDA foi publicado, permitindo que você execute aplicativos CUDA em GPUs AMD

O projeto ZLUDA preparou uma implementação aberta da tecnologia CUDA para GPUs AMD, que permite executar aplicativos CUDA não modificados com desempenho próximo ao desempenho de aplicativos executados sem camadas. O kit de ferramentas publicado fornece compatibilidade binária com aplicativos CUDA existentes compilados usando o compilador CUDA para GPUs NVIDIA. A implementação funciona com base na pilha ROCm e no tempo de execução HIP (Heterogeneous-computing Interface for Portability) desenvolvido pela AMD. O código do projeto é escrito em Rust e distribuído sob as licenças MIT e Apache 2.0. Suporta trabalho em Linux e Windows.

A camada para organizar o trabalho CUDA em sistemas com GPUs AMD foi desenvolvida nos últimos dois anos, mas o projeto tem uma história mais longa e foi originalmente criado para garantir o trabalho CUDA em GPUs Intel. A mudança na política de suporte de GPU é explicada pelo fato de que a princípio o desenvolvedor ZLUDA era um funcionário da Intel, mas em 2021 esta empresa considerou que fornecer a capacidade de executar aplicativos CUDA em GPUs Intel não tinha interesse comercial e não acelerou o desenvolvimento da iniciativa.

No início de 2022, o desenvolvedor deixou a Intel e foi contratado pela AMD para desenvolver uma camada para compatibilidade com CUDA. Durante o desenvolvimento, a AMD pediu para não anunciar o interesse da AMD no projeto ZLUDA e não fazer commits no repositório público ZLUDA. Dois anos depois, a AMD decidiu que executar aplicativos CUDA em GPUs AMD não era do interesse dos negócios, o que, de acordo com os termos do contrato, permitiu ao desenvolvedor descobrir seu trabalho. Como os fabricantes de GPU pararam de financiar o projeto, seu destino depende agora do interesse da comunidade e do recebimento de propostas de cooperação de outras empresas. Sem apoio externo, o projeto só poderá se desenvolver em direções que sejam pessoalmente interessantes para o autor, como DLSS (Deep Learning Super Sampling).

Na sua forma atual, o nível de qualidade da implementação é avaliado como uma versão alfa. No entanto, o ZLUDA já pode ser usado para executar muitos aplicativos CUDA, incluindo Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM e Arnold. Fornece suporte mínimo para primitivas e bibliotecas cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL e NVML.

A primeira inicialização de aplicativos CUDA executando ZLUDA ocorre com atrasos perceptíveis devido ao fato de ZLUDA compilar código GPU. Não há tal atraso nas execuções subsequentes, pois o código compilado é armazenado no cache. Ao executar código compilado, o desempenho é próximo do nativo. Ao executar o Geekbench em uma GPU AMD Radeon 6800 XT, a versão ZLUDA do conjunto de benchmark CUDA teve um desempenho visivelmente melhor do que a versão OpenCL.

O kit de ferramentas ZLUDA foi publicado, permitindo que você execute aplicativos CUDA em GPUs AMD

O suporte para a API oficial do driver CUDA e a parte de engenharia reversa da API CUDA não documentada é implementada no ZLUDA, substituindo chamadas de função por funções semelhantes fornecidas no tempo de execução HIP, que é semelhante em muitos aspectos ao CUDA. Por exemplo, a função cuDeviceGetAttribute() é substituída por hipDeviceGetAttribute(). A compatibilidade com bibliotecas NVIDIA como NVML, cuBLAS e cuSPARSE é garantida de maneira semelhante - para tais bibliotecas, ZLUDA fornece bibliotecas de tradução com o mesmo nome e o mesmo conjunto de funções, construídas como complementos sobre bibliotecas AMD semelhantes.

O código do aplicativo GPU compilado na representação PTX (Parallel Thread Execution) é primeiro traduzido por um compilador especial na representação intermediária LLVM IR, com base na qual o código binário para GPUs AMD é gerado.

O kit de ferramentas ZLUDA foi publicado, permitindo que você execute aplicativos CUDA em GPUs AMD


Fonte: opennet.ru

Adicionar um comentário