BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Artigos FPGAs superam desempenho computacional

FPGAs superam desempenho computacional

Pontos Principais

  • Os FPGAs podem atender à demanda de desempenho da inteligência artificial e Big Data, ambos em crescimento global exponencial;
  • Os FPGAs aumentam as velocidades de processamento e reduzem os custos de hardware ao executar um número massivo de processos concomitantemente e gerenciam bem o fluxo de dados;
  • Evoluções como as instâncias F1 da Amazon estão removendo barreiras de custo e usabilidade, tornando os FPGAs acessíveis a todos os negócios;
  • Os FPGAs são ideais para qualquer projeto que necessite de processamento de baixa latência de vastas quantidades de dados, incluindo inferência e Redes Neurais Profundas;
  • Conforme a programação para FPGA se torna mais simples e baseada em nuvem, usando mais linguagens acessíveis como Go, a adoção acontecerá será cada vez maior.

A criação de dados e seu consumo estão em situação de excesso, em partes devido ao crescimento das tecnologias de inteligência artificial (IA) e aprendizagem profunda. Nicolaus Henke, da McKinsey, estima que 90% dos dados acessíveis hoje simplesmente não existiam há dois anos atrás, enquanto o IDC prevê que o investimento global em Big Data passará de $203 bilhões até 2020; tudo isto está colocando demandas de desempenho exponencial na próxima geração de computação.

Tradicionalmente, as demandas por aumento de desempenho tem sido cumpridas pelo processo de encolhimento do silício mas, durante muito tempo, o simples encolhimento do tamanho do transistor não trouxe ganhos exponenciais de velocidade, devido à Escala de Dennard.

Escala multi-core e virtualização tem ajudado a mitigar isto, mas agora o processo está em desaceleração devido a limites de potência práticos.

Como resultado, a Intel está projetando para seus processadores apenas ganhos marginais em desempenho pelas próximas gerações. As demandas exponenciais por poder de computação já não podem mais ser cumpridas como antigamente.

Com os avanços de CPUs apenas entregando ganhos marginais, os negócios devem procuram por alternativas para alavancar o desempenho computacional.

Uma das soluções mais viáveis vem em forma de Field Programmable Gate Arrays (FPGAs), originalmente projetado para desenvolver novos hardwares.

Então, como FPGAs podem ser usadas para alavancar o desempenho computacional? Em uso desde os anos 80, FPGAs são os circuitos reprogramáveis em um chip.

Originalmente usados para simular chips e garantir que seu design estava funcionando, agora são alvo de um crescente interesse de engenheiros de software devido às suas habilidades de processar grandes volumes de dados de forma eficiente.

FPGAs são programáveis assim como GPUs ou CPUs, mas visam problemas paralelos, de baixa latência e alto débito, como inferências e Redes Neurais Profundas.

[Clique na imagem para aumentá-la]

O que torna os FPGAs tão extraordinários?

Os FPGAs possuem diversos benefícios que os tornam atraentes aos engenheiros de software, sendo a velocidade o mais notável deles. Os FPGAs executam em velocidade lenta de clock em relação às CPUs modernas, mas são fundamentalmente simultâneos; em vez de executar fluxos de instruções sequenciais, há um ótimo fluxo de dados entre essas operações paralelas, resultando em um dramático aumento no desempenho. Há potencial para aplicações executarem até 100 vezes mais rápido sobre o mesmo código em comparação as CPUs tradicionais.

Os FPGAs contêm milhões de blocos lógicos reprogramáveis que podem ser usados para executar muitas ações ao mesmo tempo, trazendo os benefícios do paralelismo e da concorrência. Ao escreverem código, os engenheiros podem tirar vantagem desta arquitetura paralela quebrando problemas em processos bem estruturados e independentes que podem executar concomitantemente.

Por exemplo, quando uma imagem é processada não-simultaneamente, uma única parte processaria a imagem inteira pixel por pixel. Entretanto, quando a mesma imagem é processada simultaneamente, ela é quebrada em peças que são processadas ao mesmo tempo por diferentes partes e depois são remontadas juntas. Isto torna o processo mais complexo, mas muito mais rápido. Os dados recebidos devem ser divididos de maneira ideal e distribuídos eficientemente para as partes, depois os dados coletados são processados e remontados, normalmente sem bloquear o pipeline de trabalho.

Em uma CPU normal, isso envolve: dados sendo enviados e retirados da memória; e protocolos onerosos de processos para concordar sobre qual é o estado atual da memória. Mesmo a maior CPU da Intel tem apenas 18 cores. Em comparação, em um FPGA, o fluxo de dados pode ser projetado e assim nunca sai do chip. Dezenas de milhares de processos concorrentes podem ocorrer, otimizando o tempo do processamento de forma que o rendimento é sempre o máximo.

As velocidades de processamento possíveis via FPGAs são responsáveis por seu segundo maior benefício: custo. Economias de custo significativas são alcançáveis usando FPGAs, tanto por permitirem aumentar a velocidade quanto por diminuir os requisitos de hardware, pois um FPGA pode executar as tarefas de vários servidores.

Por fim, os FPGAs tem uma poderosa interconectividade com a próxima geração e flexibilidade melhorada já que podem ser reprogramados para tirar vantagem dos últimos desenvolvimentos tecnológicos. Uma vez que estejam funcionando, os FPGAs podem ser alterados a qualquer momento para atender a requisitos comerciais em constante mudança.

Barreiras na adoção do FPGA

Apesar de tantos benefícios, os FPGAs trazem também diversos desafios. O alto custo inicial da aquisição do FPGA, o custo total da propriedade contínua e problemas com usabilidade têm impedido o uso de FPGA, tornando o algo "mainstream".

Até recentemente, programar FPGAs necessitava de engenheiros de hardware para executar a programação e reprogramação complexa e de baixo nível em linguagens de definição de hardware como a Verilog.

A engenharia de hardware é uma habilidade altamente especializada, necessitando de vários anos de experiência para ser um conhecimento efetivo. Além disso, as universidades formam muitos poucos graduados a cada ano com esta especialidade. O conjunto de habilidades necessário para um especialista de projeto de chip configurar o hardware manteve altos os custos do FPGA, o que significava que a inovação era limitada e verticalmente específica.

Historicamente, as companhias que desejaram utilizar os FPGAs precisaram adquirir hardware personalizado, construir equipes específicas de entrega e integrar tudo isto às suas soluções existentes. Apenas soluções de altíssimo valor - como projetos militares e investimentos de risco - obtiveram recursos suficientes para usar FPGAs para computação.

O futuro dos FPGAs

Enquanto a implementação dos FPGAs para computação permanece relativamente devagar, as recentes inovações estão constantemente quebrando barreiras para a adoção. Por exemplo, a resposta ao lançamento das instâncias F1 equipadas com FPGA, da Amazon Web Services - que visava a construção de aceleradores personalizados para processar problemas intensivos em computação - foi excepcionalmente positiva.

Os fabricantes de FPGA e provedores de plataforma estão permitindo programar em linguagens diferentes, como OpenCL, e o desenvolvimento do FPGA está gradualmente se tornando mais alcançável para os engenheiros de software com o potencial para programar FPGAs a partir de ambientes baseados na nuvem. Isto pode ser feito utilizando mais linguagens acessíveis como Go, que é mais fácil e produtiva para os usuários vindos de diferentes especialidades e experiências. A Microsoft insinuou que no futuro, o serviço de nuvem do Azure também dará aos desenvolvedores o acesso aos FPGAs.

[Clique na imagem para aumentá-la]

Esses desenvolvimentos irão ignorar a necessidade de conhecimentos de hardware difíceis de encontrar ou orçamentos de desenvolvimento dispendiosos. Embora os FPGAs ainda sejam caros, os custos associados com a aquisição e propriedade já são uma barreira menor do que costumavam ser porque agora é possível contratá-los por hora.

No passado, os FPGAs eram usados apenas para abordar grandes quantidades de dados, no qual o retorno de investimento era alto o suficiente para justificar um grande investimento, ou os problemas eram excepcionalmente complexos e desafiadores - por exemplo, nos setores militares e financeiros. Mas, conforme os FPGAs se tornaram mais acessíveis, a tecnologia pôde ser utilizada para qualquer projeto na qual a velocidade e custo são fatores importantes.

A computação paralela fornecida pelos FPGAs acelerou o processamento e análise de vastas quantidades de dados executando inúmeros processos computacionais simultâneos em um único servidor, significando que os FPGAs podem ser usados para processamento de vídeo e imagem, reconhecimento de fala online, análise de dados em tempo real, tecnologias de publicidade e rede definida por software (SDN).

Os FPGAs em nuvem estão sendo explorados por empresas de segurança para aceleração de algoritmos criptográficos, companhias telefônicas para redes e segurança, companhias aeroespaciais para processar dados de satélite e aplicar algoritmos de aprendizado de máquina, e por serviços financeiros para aceleração de hardware e determinação do risco de crédito de portfolios derivados.

Embora estes casos de uso sejam excitantes, eles apenas demonstram a ponta do iceberg sobre as capacidades do FPGA. Perceber todo o potencial dessa tecnologia ainda levará tempo. Embora novos produtos sejam regularmente lançados no mundo do hardware, as inovações nestes produtos tendem a ser incremental. Porém, conforme surgem plataformas para possibilitar inovações e projetos simultâneos no desenvolvimento de hardware, o uso do FPGA se tornará mais barato e mais realístico para todos os tipos de negócio - pequenos ou grandes - e sua adoção crescerá.

A indústria ainda está nos primórdios da adoção dos FPGAs, mas tão logo o uso aumente, eles permitirão que cada negócio - desde uma startup de uma pessoa só, até as companhias multinacionais já estabelecidas - tire vantagem do alto poder de computação paralela que impulsionará a continuação da inovação tecnológica.

Sobre o autor

Rob Taylor é um líder de tecnologia globalmente reconhecido que tem estado a frente da inovação de software e tecnologia open source desde os anos 90. Fundou duas fábricas de software GBP multi-milionárias, incluindo a Codethink, que tem entregado soluções de infraestrutura de software para a Nokia assim como para produtores líderes do mercado automobilístico e provedores de serviços financeiros. Ansiava construir um negócio focado em prover ferramentas para os desenvolvedores dos dias atuais em um mundo pós-Moore; em 2015, nasceu a Reconfigure.io, servindo seus clientes globais a partir de escritórios no Reino Unido e na América do Norte. Atualmente, a empresa já tem um total de investimentos de $500 mil, vindos de investidores-anjos do Reino Unido, Estados Unidos, Suíça, Japão e Holanda. Em abril de 2017, a Reconfigure.io foi anunciada como uma parceira inicial das instâncias F1 da Amazon Web Services.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT