A Nvidia agora proibiu a execução de software baseado em CUDA em outras plataformas de hardware usando camadas de tradução. Isso parece ter sido projetado para impedir que a iniciativa ZLUDA e, mais importante, os fabricantes chineses de GPU utilizem código CUDA com camadas de tradução. Entramos em contato com a Nvidia para comentar e iremos atualizá-lo com detalhes ou esclarecimentos adicionais quando obtivermos uma resposta.
Chifre Longo, engenheiro de software, percebeu os termos atualizados. “Você não pode fazer engenharia reversa, descompilar ou desmontar qualquer parte da saída gerada usando elementos de software com a finalidade de traduzir tais artefatos de saída para uma plataforma que não seja da Nvidia”, diz uma nova cláusula em CUDA 11.5.
Ser líder tem um lado bom e um lado ruim: por um lado, todos dependem de você; por outro lado, todo mundo quer ficar sobre seus ombros. Aparentemente, o último é o que aconteceu com CUDA. Como a combinação de hardware CUDA e Nvidia provou ser incrivelmente eficiente, muitos programas dependem dela. No entanto, à medida que hardware mais competitivo entra no mercado, mais usuários tendem a executar seus programas CUDA em outras plataformas de hardware. Existem duas maneiras fáceis de fazer isso: recompilar o código (disponível para desenvolvedores dos respectivos programas) e usar uma camada de tradução.
Por razões óbvias, usar uma camada de tradução como ZLUDA é a maneira mais fácil de executar um programa CUDA em hardware que não seja da Nvidia. Tudo o que se precisa fazer é pegar os binários já compilados e executá-los usando ZLUDA ou outras camadas de tradução. ZLUDA parece estar em dificuldades agora, com a AMD e a Intel tendo desperdiçado a oportunidade de desenvolvê-lo ainda mais.
No entanto, vários fabricantes chineses de GPU, incluindo um financiado pelo governo chinês, afirmam executar código CUDA. A Denglin Technology projeta processadores com uma “arquitetura de computação compatível com modelos de programação como CUDA/OpenCL”. Dado que a engenharia reversa de uma GPU Nvidia é difícil (a menos que alguém já tenha todos os detalhes de baixo nível sobre as arquiteturas de GPU Nvidia roubando-as), provavelmente estamos lidando com algum tipo de camada de tradução aqui também.
Um dos maiores fabricantes chineses de GPU, Moore Threads, também possui uma ferramenta MUSIFY projetada para permitir que o código CUDA funcione com suas GPUs. No entanto, ainda não se sabe se o MUSIFY se enquadra ou não na classificação de uma camada de tradução completa (alguns dos aspectos do MUSIFY podem envolver a portabilidade do código).
Por razões óbvias, o uso de camadas de tradução pode ameaçar a hegemonia da Nvidia no espaço da computação acelerada, especialmente com aplicações de IA. Este é provavelmente o ímpeto por trás da decisão da Nvidia de proibir a execução de seus aplicativos CUDA em outras plataformas de hardware usando camadas de tradução a partir do CUDA 11.5.
A cláusula estava ausente na versão CUDA 11.4, então parece que a execução de aplicativos compilados usando CUDA 11.4 e compiladores anteriores em processadores não-Nvidia usando camadas de tradução ainda é adequada. Para esse fim, a Nvidia não atingirá seu objetivo de impedir que todos executem software desenvolvido para seu hardware em outras plataformas de hardware usando camadas como ZLUDA no curto prazo. No entanto, a empresa certamente colocará barreiras legais para a execução de programas CUDA por meio de camadas de tradução em hardware de terceiros, o que poderia ter um efeito positivo para a Nvidia e negativo para AMD, Intel, Biren e outros desenvolvedores de hardware de computação de IA.
A recompilação de programas CUDA existentes permanece perfeitamente legal. Para simplificar isso, tanto a AMD quanto a Intel possuem ferramentas para portar programas CUDA para seus ROCm (1) e API aberta plataformas, respectivamente.
Deve-se notar que à medida que AMD, Intel, Tenstorrent e outras empresas desenvolvem hardware melhor, mais desenvolvedores de software estarão inclinados a projetar para essas plataformas, de modo que o domínio CUDA da Nvidia poderá diminuir com o tempo. Além disso, programas desenvolvidos e compilados especificamente para processadores específicos funcionarão inevitavelmente melhor do que software executado através de camadas de tradução, o que significa melhores posições competitivas para AMD, Intel, Tenstorrent e outros contra a Nvidia. Entramos em contato com a Nvidia para comentar e atualizaremos conforme necessário.