Empresas como o Google, Amazonas, e a Intel adotou amplamente diferentes tipos de aceleradores de hardware em seus pipelines de computação em nuvem, mas muitos programas ainda não conseguem aproveitá-los totalmente. Crédito:Universidade de Michigan
Uma nova técnica desenvolvida por pesquisadores da Universidade de Michigan poderia permitir uma adoção mais ampla de componentes de computação da Lei de Moore pós-tradução automática. O sistema, chamado AutomataSynth, permite que os engenheiros de software aproveitem o poder de aceleradores de hardware como FPGAs sem conhecimento especializado de programação ou necessidade de reescrever antigos, Código centrado na CPU.
Com a Lei de Moore chegando ao fim, empresas e designers contam com várias técnicas de hardware para contornar os retornos decrescentes proporcionados por novas CPUs. Entre os candidatos de curto prazo mais viáveis estão aceleradores de hardware como matrizes de portas programáveis em campo (FPGAs), que pode ser dedicado a executar rapidamente funções comuns específicas e eliminar gargalos em aplicativos maiores.
Embora sua adoção por empresas como a Microsoft e Amazon Web Services já esteja em andamento, FPGAs são limitados em seu uso por requisitos de programação que são estranhos a muitos desenvolvedores de software. Esses requisitos também limitam seu uso em software legado pré-existente, que normalmente foi escrito para funcionar especificamente com CPUs.
A maioria dos programas em uso hoje precisa ser completamente reescrita em um nível muito baixo para colher os benefícios da aceleração de hardware. Por causa disso, os componentes estão sendo instalados mais rapidamente do que realmente estão sendo utilizados.
"As empresas estão tomando medidas para tentar tornar [FPGAs] mais acessíveis para as pessoas, "diz Kevin Angstadt, um Ph.D. candidato a liderar o projeto, "mas quando se trata de escrever novos programas, o processo ainda é muito primitivo. "
O time, que inclui os Profs. Westley Weimer e Jean-Baptiste Jeannin, procurou romper essas barreiras de adoção reescrevendo automaticamente certas funções de baixo nível usadas por muitos aplicativos maiores. Implementado em escala, isso significaria que os desenvolvedores poderiam fazer uso total dos FPGAs simplesmente adicionando algumas linhas ao código existente - sem a necessidade de reescrever.
Angstadt compara o processo de adaptação de unidades de processamento gráfico (GPUs) para computação de uso geral, habilitado inicialmente pela plataforma CUDA da NVIDIA. O CUDA forneceu aos desenvolvedores uma interface por meio da qual eles puderam aproveitar o poder de processamento da GPU em tarefas não gráficas.
"O objetivo deste trabalho era fazer algo semelhante com FPGAs, "Diz Angstadt." Você não pode simplesmente escrever na mesma língua quando os está usando, mas podemos dar-lhe a ilusão de escrever na mesma língua. "
Para alcançar isto, os pesquisadores usaram uma técnica chamada aprendizado de autômatos limitados. A técnica usa uma combinação de diferentes análises de programa para produzir uma máquina de estado que é equivalente em função ao código original e passível de aceleração com FPGAs. Essencialmente, seu sistema lê o código fornecido, aprende a funcionalidade do código, e escreve uma descrição de hardware desse comportamento para enviar ao acelerador.
Em um artigo apresentado sobre o trabalho, eles demonstraram sua técnica em uma classe de funções, kernels de corda, que tratam das operações de pesquisa e comparação realizadas no texto.
"Sempre que você pesquisa em um documento de texto, você está usando uma das formas mais primitivas desses kernels de string, "diz Angstadt. Mas eles podem ser muito mais complexos - as funções são fundamentais para aplicativos diversos, como detecção de spam, análise genética, recomendações de produtos, e física de partículas.
Executar AutomataSynth em um pacote de referência de funções de string do mundo real escritas para trabalhar com CPUs, a equipe descobriu que era capaz de aprender designs de hardware totalmente equivalentes em 72% dos casos e aproximações em outros 11%.
A aplicação desta técnica a outras classes de funções permanece um problema aberto para trabalhos futuros, mas Angstadt está confiante de que pode ser amplamente utilizado.
"Nossa pesquisa indica que, embora existam muitos tipos de funções além das que apoiamos, há mais aplicativos do que imaginamos que podem ser reescritos como kernels de string, "diz Angstadt." Portanto, ainda podemos aplicar técnicas semelhantes para oferecer suporte a outros tipos de código. "
Se for bem sucedido, pudemos ver os FPGAs se tornarem um componente padrão para computação de uso geral.
Os pesquisadores apresentaram suas descobertas no artigo "Accelerating Legacy String Kernels via Bounded Automata Learning, "aceito pela Conferência de Suporte à Arquitetura de 2020 para Linguagens de Programação e Sistemas Operacionais (ASPLOS).