Matrizes de portas programáveis em campo podem acelerar aplicações que vão desde o alinhamento genômico ao aprendizado profundo.
Michael Reiser é, como ele mesmo diz, “fanático por tempo”. Um neurocientista do Campus de Pesquisa Janelia do Howard Hughes Medical Institute em Ashburn, Virginia, Reiser estuda a visão de mosca. Alguns de seus experimentos envolvem colocar moscas em uma arena de realidade virtual imersiva e redesenhar perfeitamente a cena enquanto rastreia como os insetos respondem. Os PCs modernos, com seus sistemas operacionais complexos e unidades de processamento central multitarefa (CPUs), não podem garantir a precisão temporal necessária. Então Reiser, junto com engenheiros da Sciotex, uma empresa de tecnologia em Newtown Square, Pensilvânia, encontrou um hardware de computação que poderia: um FPGA.
Um FPGA, ou array de portas programáveis em campo, é basicamente “lama eletrônica”, diz Bruno Levy, cientista da computação e diretor do centro de pesquisa Inria Nancy Grand-Est em Villers-lès-Nancy, França. É uma coleção de centenas ou mesmo milhões de elementos lógicos não configurados em um chip de silício que, como a argila, pode ser ?moldado? – e até mesmo remodelado – para acelerar aplicações que vão do alinhamento genômico ao processamento de imagem e aprendizado profundo.
Suponha que um pesquisador precise processar rapidamente o fluxo de dados de uma câmera em blocos de 1.000 bits. A maioria das CPUs modernas tem processadores de 64 bits e teria que dividir o problema em partes menores. Mas é possível configurar um FPGA para fazer esse cálculo em uma única etapa, diz Inria Nancy, cientista da computação Sylvain Lefebvre. Mesmo que cada etapa do FPGA seja mais lenta do que sua contraparte da CPU, “é realmente uma vitória, você está indo mais rápido”, diz ele, porque o problema não é resolvido. Os FPGAs se destacam em aplicações que requerem temporização precisa, algoritmos de velocidade crítica ou baixo consumo de energia, acrescenta.
Javier Serrano, gerente de design eletrônico e software de baixo nível no CERN, o laboratório de física de partículas da Europa perto de Genebra, na Suíça, e seus colegas usaram FPGAs, além do White Rabbit – uma extensão sob medida para o protocolo de rede Ethernet – para criar um sistema que pode capturar instabilidades no feixe de partículas do Large Hadron Collider com precisão de nanossegundos.
Na Queens University Belfast, Reino Unido, o especialista em hardware de computador Roger Woods está construindo um sistema de câmera de fibra óptica que usa FPGAs para processar imagens multiespectrais de artérias coronárias com rapidez suficiente para uso durante a cirurgia. E na Janelia, o cientista sênior Chuntao Dan criou um sistema de imagem em loop fechado que pode interpretar e responder ao posicionamento das asas da mosca conforme elas batem a cada 5 milissegundos. O sistema operacional Windows da Microsoft apresenta uma variação de tempo de até 30 milissegundos, diz Dan. Mas, usando um FPGA, “conseguimos todas as análises em 145 microssegundos”, o que significa que a resolução temporal nunca é um problema, apesar das limitações de um computador convencional.
FPGAs são configurados usando uma linguagem de descrição de hardware (HDL), como VHDL ou Verilog, com a qual os pesquisadores podem implementar qualquer coisa, desde LEDs piscando até uma CPU totalmente desenvolvida. Outra opção é Silice, uma linguagem com sintaxe semelhante a C que Lefebvre, que a desenvolveu, anexou ao Verilog. Qualquer que seja o HDL usado, uma ferramenta de síntese o traduz em uma lista de elementos lógicos e uma ferramenta de localização e rota combina esses elementos com o chip físico. O fluxo de bits resultante é então enviado para o FPGA.
O código de configuração, ou gateware, como Serrano o chama, não é necessariamente difícil de escrever. Mas isso requer uma mentalidade diferente da programação tradicional, diz Olof Kindgren, diretor e co-fundador da Free and Open Source Silicon Foundation, com sede no Reino Unido. Enquanto o código do software é procedural, o gateware é descritivo. “Você descreve como os dados se movem entre os registros em seu projeto a cada ciclo de clock, o que não é o que muitos desenvolvedores de software pensam”, diz Kindgren. Como resultado, mesmo os pesquisadores mais experientes em computação podem querer consultar um especialista para obter o máximo de velocidade de seus projetos.
A tecnologia FPGA data de meados da década de 1980, mas as melhorias no software de design a tornaram cada vez mais acessível. Xilinx (de propriedade da fabricante de chips AMD) e Altera (de propriedade da fabricante de chips Intel) dominam o mercado e ambas oferecem ferramentas de desenvolvimento e chips de complexidade e custo variáveis. Um punhado de ferramentas de código aberto também existe, incluindo Yosys (uma ferramenta de síntese) e nextpnr (local e rota), ambos desenvolvidos pela cientista da computação Claire Wolf, que é diretora de tecnologia da empresa de software YosysHQ, com sede em Viena. Lefebvre recomenda começar com uma placa FPGA pronta para usar que inclui memória e periféricos, como portas USB e HDMI. O Xilinx PYNQ, que pode ser programado em Python, e o iCEBreaker e ULX3S de hardware aberto, são boas opções.
Os colaboradores de Reiser na Sciotex usaram um FPGA da National Instruments, com sede em Austin, Texas, que eles programaram usando o ambiente de codificação gráfico do LabVIEW da empresa. O hardware, incluindo componentes para aquisição de dados, custa cerca de US $ 5.000, diz Reiser. Mas com isso, ele obteve sua resposta: as moscas podem reagir a objetos em movimento em seu campo de visão cerca de duas vezes mais rápido do que as pessoas, ele descobriu. Provar esse limite exigia uma exibição que sua equipe pudesse atualizar dez vezes mais rápido do que as reações que estavam sondando. “Gostamos da precisão temporal”, afirma Reiser. “Isso torna nossas vidas muito mais fáceis.”
Publicado em 10/12/2021 08h06
Artigo original:
Estudo original: