FERRAMENTAS LINUX: Os Desenvolvedores da Red Hat estão trabalhando em direção a uma Pilha de Computação Neutra para Fornecedores para Adotar a CUDA da NVIDIA

domingo, 18 de novembro de 2018

Os Desenvolvedores da Red Hat estão trabalhando em direção a uma Pilha de Computação Neutra para Fornecedores para Adotar a CUDA da NVIDIA







Confira !!



Na semana passada, na Conferência de desenvolvedores do Linux, David Airlie, começou a falar sobre a possibilidade de uma pilha de computação neutra de fornecedor nas plataformas de GPU Intel, Radeon e NVIDIA que poderia potencialmente assumir a dominância CUDA da NVIDIA.

Tem havido o trabalho de suporte de computação open-source da NVIDIA (Nouveau) SPIR-V durante todo o ano e isso ainda não está sendo alcançado com a Mesa principal. Esse esforço foi amplamente trabalhado por Karol Herbst e Rob Clark, ambos desenvolvedores de drivers de GPU de código aberto na Red Hat. Houve também outro trabalho de driver / infraestrutura de código aberto motivado por computação fora da Red Hat, como o trabalho contínuo do kernel de Jerome Glisse em torno do Gerenciamento de Memória Heterogênea.(HMM). Também houve o piloto Radeon RADV que David Airlie da Red Hat co-fundou e continua contribuindo significativamente para o seu avanço. E também houve outras contribuições para gráficos / computação, com a Red Hat sendo um dos maiores contribuidores de upstream do ecossistema.

Par que funciona com o ecossistema vibrante e em rápido crescimento em torno do SPIR-V / Vulkan e tudo isso poderia culminar com algo muito interessante ... Uma pilha de computação de GPU que é neutra em relação a fornecedores, de código aberto e amplamente compartilhada Fornecedores de GPU, e poderia potencialmente assumir o domínio do CUDA da NVIDIA para computação de GPU, particularmente com HPC.




O colaborador de driver de gráficos de código aberto de longa data e mantenedor do subsistema de DRM, David Airlie da Red Hat, apresentou na Linux Plumbers Conference desta semana uma pilha de computação desse tipo. " Até agora, o líder de mercado claro tem sido a pilha CUDA da NVIDIA, que é uma solução de código fechado que roda no Linux. Aplicativos de código aberto como o tensorflow (AI / ML) dependem desta pilha fechada para utilizar GPUs para acelerar ... talk discutirá a possibilidade de criar uma pilha de computação de referência neutra para fornecedores baseada em tecnologias de código aberto e modelos de desenvolvimento de código aberto que poderiam executar tarefas de computação em várias GPUs de fornecedores. para uma tarefa futura que o desenvolvimento de ferramentas e recursos como parte de um sistema operacional de desktop. "

Sua palestra enfocou não apenas a CUDA (Compute Unified Device Architecture) de código fechado da NVIDIA, mas também como a pilha de computação ROCm / HIP da AMD é de código aberto, mas específica do fornecedor. Há também o projeto de driver de computação NEO da Intel, que é o OpenCL, mas também se concentra apenas em seu próprio hardware. Há muita fragmentação no espaço de computação da GPU, mesmo quando se trata de projetos de código aberto, com não um monte de código comum / compartilhado. Cada projeto também geralmente depende de sua própria implementação LLVM / Clang.


A pilha de computação da GPU proposta seria neutra em relação ao fornecedor, ofereceria uma base de código compartilhada o máximo possível, seria baseada em padrões abertos (Khronos), ofereceria uma API e uma representação intermediária (IR) comuns e ofereceria ferramentas comuns.



Sob essa pilha proposta, o C ++ com o SYCL do Khronos seria o meio pelo qual os programadores poderiam direcionar esse ambiente de computação. O SYCL é o modelo de programação de fonte única Khronos baseado em C ++ para servir como uma camada de abstração para o host e o código de dispositivo e é uma estrutura heterogênea para a segmentação de OpenCL e outros sistemas. 


A segmentação de SYCL também permitiria executar o código C ++ na CPU via OpenMP para multiencadeamento. O corpo de padrões C ++ também está se movendo para assumir possíveis offloading / programação de GPU em uma futura revisão da linguagem de programação C ++, que precisaria de um ambiente de execução que essa nova pilha de computação teórica pudesse preencher.

Com essa pilha proposta, o front-end Clang SYCL seria usado para seguir a rota de execução na CPU com o compilador do host e alavancar o OpenMP. Ou, graças aos projetos centralizados em torno do LLVM, use essa rota para cuspir SPIR-V que poderia ser consumida pelos drivers de dispositivo, mas distribuída aos usuários ainda como um arquivo de objeto ELF. 


O código de computação de código aberto do Mesa, incluindo o rastreador de estado OpenCL Gallium "Clover" de longa data, preencheria a função como parte do tempo de execução antes de atingir os drivers de hardware / SPIR-V para execução. Usar o Mesa como um tempo de execução reduziria a quantidade de código específico da GPU e forneceria uma API clara. 

Não há nenhuma pilha de computação pronta hoje, mas todos os bits necessários estão se movendo nessa direção. Será interessante ver se / quando se materializa completamente e a adoção que ele recebe se houver um momento suficiente em torno dos padrões abertos Khronos com SYCL / SPIR-V que ele poderia ter em CPU NVIDIA para programação HPC onde o OpenCL não conseguiu realmente fora. Mesmo para aplicativos de desktop Linux, muito poucos estão realmente usando o OpenCL para GPGPU ... Espero que o C ++ SYCL possa se tornar um alvo mais atrativo tanto para computação na CPU quanto para GPUs para melhor utilizar o hardware atual. 

O deck de slides do LPC 2018 pode ser visto aqui . 

Atualizção:David Airlie esclareceu que pelo menos neste momento não é um projeto oficial da Red Hat, enquanto "todo o trabalho feito por Karol, Rob e Jerome tem um objetivo real". Um vídeo da apresentação será lançado em breve e deverá esclarecer a proposta.



Até a próxima !!

Nenhum comentário:

Postar um comentário