Resumo executivo
A BittWare vem desenvolvendo soluções de placas de aceleração baseadas em FPGA com os FPGAs Intel há mais de duas décadas. Em sua última migração para os FPGAs Intel Agilex® 7 mais recentes, a BittWare está interessada em fornecer suporte para oneAPI em suas soluções de FPGA. Para isso, a BittWare recorreu ao Open FPGA Stack (OFS) e seu pacote de código aberto de suporte ao acelerador oneAPI (ASP) para habilitar a compilação de kernels de aplicativos de design de alto nível (HLD) em suas plataformas baseadas em FPGA Intel Agilex.
Segundo plano e desafios
A Intel lançou a família de produtos Intel Agilex 7 em 2019. Desde então, a família de produtos Intel Agilex expandiu-se para incluir vários FPGAs de baixa a alta potência e densidades lógicas em vários aplicativos. A série FPGA Intel Agilex 7 é a família FPGA Intel Agilex de alto desempenho original. A série FPGA incorpora os FPGAs de mais alto desempenho do setor, oferecendo desempenho de malha por watt1 aproximadamente duas vezes melhor do que os FPGAs de última geração concorrentes. Os novos FPGAs Intel Agilex são mais potentes, consomem menos energia e incluem recursos de E/S, como PCIe* 4.0 e 5.0, visando a uma ampla gama de aplicativos com uso intensivo de largura de banda, computação e memória.
Essas melhorias de desempenho oferecem aos clientes da BittWare um melhor valor, seja mais desempenho por watt para dispositivos de borda ou densidade de computação para o data center. Para aplicativos de computação de alto desempenho (HPC), os FPGAs trazem adaptação de aplicativos que estabelece uma melhor correspondência entre as cargas de trabalho e o silício do que os aceleradores de propósito geral. A Intel e a BittWare colaboraram para portar uma carga de trabalho de HPC do Centro de Supercomputação de Barcelona para a placa IA-840f usando a oneAPI, alcançando uma velocidade 233 vezes superior. Esse projeto é apresentado no webinar sob demanda da BittWare intitulado Computação de Alto Desempenho com FPGAs Intel Agilex de Última Geração.
A BittWare também oferece recursos para ferramentas de programação de alto nível, como publicações técnicas com código de amostra para download. Esses recursos mostram como as ferramentas de alto nível aceleram o processo de desenvolvimento enquanto se beneficiam do alto desempenho dos FPGAs Intel Agilex 7.
Ferramentas como a oneAPI oferecem uma linguagem de programação paralela que permite a abstração do desenvolvimento de FPGA para melhorar o tempo de aceleração e depuração. Comparável ao CUDA* da NVIDIA ou AMD ROCm*, a oneAPI oferece uma linguagem de programação paralela, Data Parallel C++ (DPC++), que implementa SYCL. No entanto, a distribuição da oneAPI pela Intel aborda uma solução para um ambiente de programação unificado, conjunto de ferramentas e bibliotecas, não apenas para GPUs, mas também para CPUs, FPGAs e VPUs, como processadores de IA Gaudi/Gaudi2.
Ao utilizar a oneAPI, os desenvolvedores menos familiarizados com a programação de FPGA podem beneficiar-se da arquitetura flexível e reprogramável exclusiva dos FPGAs enquanto usam linguagens de design familiares, como C/C++, e ambientes de desenvolvimento, como Visual Studio ou Eclipse. Usar fluxos de design de alto nível por meio da oneAPI também aumenta a portabilidade das cargas de trabalho em arquiteturas, a saber, CPUs, GPUs, FPGAs e fornecedores de placas.
A BittWare, que tem como empresa-mãe a Molex, é uma parceira da Intel de longa data que projeta e fabrica produtos de aceleração de hardware FPGA de classe empresarial para permitir que os clientes implementem suas soluções mais rapidamente com menor risco. Como líder de mercado no setor de aceleração de FPGA há 20 anos, a BittWare migrou dos antigos FPGAs Intel Stratix® e Intel Arria® para a família de produtos Intel Agilex, mais recente. Ao abordar sua versão mais recente da série “IA” de placas FPGA Intel Agilex, a empresa buscou aproveitar a infraestrutura de OFS para habilitar os fluxos de desenvolvimento da oneAPI em sua plataforma.
Provedores
Para garantir que suas placas habilitassem o fluxo de desenvolvimento da oneAPI, a BittWare aproveitou o recurso de desenvolvimento de FPGA de código aberto e a infraestrutura — OFS. O OFS é a primeira infraestrutura completa de hardware e software de código totalmente aberto e compreende código de hardware flexível e código do kernel transmitido para kernel.org para habilitar uma comunidade colaborativa de desenvolvedores de FPGA.
A infraestrutura de OFS consiste em um FPGA Interface Manager (FIM), comumente chamado de “shell”, e uma região de Unidade Funcional de Acelerador (AFU), uma região designada para desenvolvimento de cargas de trabalho. Usando OFS, os desenvolvedores de placas podem aproveitar a infraestrutura de código aberto para desenvolver rapidamente um FIM personalizado para sua placa com base no aplicativo de destino ou nos setores. Da mesma forma, o OFS inclui uma estrutura de software de código aberto onde os desenvolvedores podem aproveitar drivers de kernel de código aberto e transmitidos para acelerar a integração com estruturas comuns. A infraestrutura de OFS atende à demanda por placas de aceleração de FPGA e cargas de trabalho ao fornecer uma metodologia poderosa para desenvolver rapidamente sistemas de aceleração de FPGA. A infraestrutura de hardware e software de OFS fornecida pode ser aproveitada como está ou rapidamente personalizada para atender aos requisitos novos e dinâmicos do mercado.
O kit de ferramentas base oneAPI que a Intel oferece inclui um ambiente de compilador e tempo de execução. O compilador converte um kernel SYCL, ou um código de aplicativo FPGA, em um circuito de hardware. Esse circuito de hardware requer lógica adicional para se comunicar com o tempo de execução e periféricos da placa FPGA. O OFS oferece essa lógica adicional no ASP oneAPI. O ASP oneAPI está incluído nos repositórios de OFS GitHub de código aberto e é necessário para compilar e executar kernels de aplicativos HLD em plataformas suportadas por OFS. A documentação técnica correspondente também é fornecida e inclui um guia de início rápido para configurar o kit de ferramentas Intel oneAPI base em uma plataforma de OFS.
Usando os repositórios de OFS de código aberto e a documentação fornecidos, a BittWare pôde implementar o fluxo de design oneAPI (não RTL) em seus dispositivos Intel Agilex com pequenas modificações adicionais.
Resultados
A BittWare foi a primeira a lançar no mercado FPGAs Intel Agilex Série F. A tabela abaixo ilustra as duas placas desenvolvidas com a infraestrutura de OFS e o ASP oneAPI.
|
|
Oferecer aos nossos clientes acesso a um silício poderoso que proporcione um fluxo de desenvolvimento simples é uma fórmula vencedora, especialmente porque esta família de FPGAs Intel Agilex de última geração apresenta um desempenho muito superior. Nosso trabalho com a oneAPI provou seu valor para uma variedade de usuários para chegar ao mercado mais rapidamente, mantendo o alto desempenho.
Como começar a acelerar o FPGA usando OFS
Os desenvolvedores de FPGA podem escolher entre as placas habilitadas por OFS IA-420f ou IA-840f da BittWare e usar a documentação de código aberto e o código fonte para começar a criar sua carga de trabalho personalizada.
A tabela a seguir descreve como um desenvolvedor pode iniciar o desenvolvimento de cargas de trabalho baseadas em FPGA usando uma placa de aceleração BittWare.
Aproveite a aceleração de FPGA para sua carga de trabalho |
|
---|---|
Etapa 1: escolha uma placa |
As placas habilitadas por OFS da BittWare, as IA-420f e IA-840f. |
Etapa 2: avalie os recursos de código aberto de OFS |
A BittWare fornecerá a versão correspondente da documentação técnica de OFS. |
Etapa 3: acesse o código de hardware e software de código aberto |
A BittWare fornecerá o código de software e hardware de OFS correspondentes. Esta é a distribuição específica da BittWare do código base de OFS (fornecido pela Intel). |
Etapa 4: desenvolva carga de trabalho usando RTL ou C/C++ (usando oneAPI) |
Siga o fluxo de RTL de OFS OU O OFS habilita a compilação de kernels oneAPI. Utilize o fluxo de desenvolvimento oneAPI e crie cargas de trabalho de FPGA em C/C++. |