A AMD fez o upstream de um mecanismo básico de RPC (chamada de procedimento remoto) para uso de GPU para o libc do LLVM e o conectou para uso de AMDGPU.
O engenheiro da AMD, Joseph Huber, contribuiu com essa implementação cliente-servidor RPC básica para a libc do LLVM para uso da GPU e, dado que seu foco está atualmente conectado ao back-end AMDGPU. Huber explicou no commit:
Este patch adiciona o suporte inicial para uma arquitetura cliente/servidor RPC. A GPU é incapaz de executar vários utilitários do sistema por conta própria, portanto, para implementar recursos como impressão ou alocação de memória, precisamos ser capazes de nos comunicar com o processo em execução. Isso é feito por meio de um buffer de memória "compartilhável". Ou seja, um buffer com um ponteiro unificado que tanto o cliente quanto o servidor podem usar para se comunicar.
A implementação aqui é baseada no exemplo mínimo de RPC de Jon Chesterfield em seu trabalho. Usamos uma `caixa de entrada` e `caixa de saída` para comunicar se há uma solicitação RPC e para indicar quando o trabalho está concluído. Usamos um buffer de tamanho fixo para o canal de comunicação. Este é um tamanho fixo para que possamos garantir que haja espaço suficiente para todas as unidades de computação na GPU emitirem trabalho para qualquer uma das portas. No momento, a implementação é de thread único, portanto, há apenas um único buffer que não é compartilhado.
Esta implementação ainda tem vários recursos faltando para ser concluída. Como suporte multiencadeado e chamadas assíncronas.
Essa implementação inicial de GPU RPC chegou por meio desse commit .
Outros trabalhos pendentes em torno do back-end AMDGPU para upstream LLVM podem ser encontrados por meio desta consulta LLVM Phabricator .
Até a próxima !!
Nenhum comentário:
Postar um comentário