• Nenhum resultado encontrado

Nesta seção, serão analisados quatro artigos sobre o uso de computação hetero- gênea (combinação de processadores ARM/X86 mais FPGAs) para processamento Big Data.

1. ZCluster: A Zynq-based Hadoop Cluster (LIN; CHOW, 2013): O design apre- sentado neste artigo difere de outros trabalhos por usar um sistema baseado em ARM de baixa consumo com comunicação on-chip fortemente acoplada a um FPGA

em um único dispositivo. Este artigo detalha os esforços para construir um cluster do Hadoop usando os chips Zynq presentes na placa ZedBoards. Aceleradores de hardware personalizados são adicionados para aumentar a capacidade de computa- ção dos processadores ARM. Todas as cargas de trabalho são executadas nos nós escravos baseados em ARM. O processador usado no nó mestre é um processador Intel Core i5-2500, rodando a 3.3GHz com 4GB de memória DDR3. A mídia de armazenamento no nó mestre é uma unidade de disco rígido de 1 TB e o sistema operacional é o Ubuntu 13.04 de 64 bits. Cada nó escravo no cluster é um ZedBo- ard da Xilinx (AVNET, 2018). A ZedBoard possui um Zynq SoC Xilinx XC7Z020, que integra um MPCore ARM Cortex-A9 dual core rodando a 667MHz e um FPGA Artix-7 com células lógicas de 85K e RAM Block de 560KB. A memória princi- pal de 512 MB DDR3 no ZedBoard está conectada ao Subsistema de Processador (PS) com uma interface de 32 bits. Como não há disco rígido conectado ao ZedBo- ard, a mídia de armazenamento é um cartão SD de classe 4 de 8GB, que tem uma velocidade de gravação de cerca de 4MB/s. Cada sistema ZedBoard executa um sistema operacional Xillinux (LTD., 2018), que é uma distribuição Linux baseada no Ubuntu LTS 12.04 para ARM. Este artigo apresenta a primeira implementação de um cluster Hadoop baseado em ARM usando os ZedBoards. Um acelerador de hardware para um filtro FIR é implementado no FPGA, que atinge um aumento de velocidade de 2,4 vezes em comparação com a implementação de software puro no processador ARM. O cluster do Hadoop é demonstrado escalar linearmente com diferentes números de escravos. O cluster de oito nós atinge uma aceleração de 3,3 vezes em comparação com uma implementação de software nativa em um único processador ARM e uma melhoria de cerca de 20% em comparação com um clus- ter baseado em ARM sem aceleradores de hardware.

2. Accelerating Machine-Learning Kernels in Hadoop Using FPGAs (NESHAT- POUR; MALIK; HOMAYOUN, 2015): Para melhorar significativamente o de- sempenho do processamento de aplicações Big Data, foi estudada uma arquitetura heterogênea que integra processadores de uso geral com aceleradores dedicados em FPGA. O perfil completo do Hadoop foi usado para encontrar as regiões “quen- tes” de várias aplicações de aprendizado de máquina e mineração de dados ampla- mente usadas. Os equivalentes de hardware das regiões “quentes” foram desenvol- vidos usando ferramentas de síntese de alto nível. Com o co-design de software- hardware, descarregamos as regiões “quentes” no hardware para encontrar o design

com a maior velocidade. Uma análise abrangente dos overheads de comunicação e de computação foi usada para entender como o aumento de velocidade de cada apli- cação contribuirá para sua execução geral em uma implementação final do Hadoop. O nó mestre executa o HDFS e é responsável pelo escalonamento dos trabalhos entre todos os nós escravos (nós workers). Cada nó worker tem um número fixo de slots map e reduce que é estaticamente configurado. (Considera um slot mapper para cada Zynq). Foi usado um Intel Atom C2758 como nó mestre. O Intel Atom C2758 tem 8 núcleos no processador, com uma cache de dois nivéis (L1 e L2 ca- che com tamanho de 24KB e 1024KB, respectivamente), e uma frequência de 2,4 Ghz com Turbo Boost. Cada escravo é equipado com um processador Zynq, que é considerado como um slot mapper. Os dispositivos Zynq são placas ZedBoards compostas pelo SoC XC7Z020 Zynq. A placa ZedBoard integra dois ARM Cortex- A9 a 667 Mhz com uma Artix-7 FPGA com 85 KB logic cells e 560 KB block RAM. Quatro aplicações amplamente utilizadas foram selecionadas para serem es- tudadas neste artigo. São elas: K-means clustering, KNN classification, SVM-learn e Naive Bayes classification, e caracterizando cada uma delas para encontrar suas respectivas regiões “quentes” para serem movidas para o FPGA. A análise de sen- sibilidade foi realizada no tamanho das divisões dos dados de entrada para entender a sensibilidade da aceleração ao tamanho dos dados. Os resultados mostram que uma aceleração do kernel de até 94 com co-design de software-hardware pode ser alcançada. Isso resulta em uma aceleração de 2,69 em um ambiente Hadoop, considerando várias transferências de dados e o overhead de comunicação.

3. Energy-Efficient Acceleration of Big Data Analytics Applications Using FPGAs (NESHATPOUR et al., 2015): Neste artigo é pressuposto que se conhecemos uma aplicação em então podemos encontrar a melhor correspondência possível para a aplicação em termos de uma implementação em software-hardware. Para o ma- peamento de aplicações de análise de Big Data para FPGA, foram executadas as seguintes tarefas: a) Mapeamento de regiões “quentes” de vários algoritmos de mineração de dados e aprendizado de máquina para o FPGA; b) Análise de custo de comunicação das regiões “quentes” em movidas para o FPGA; c) Avaliação da implementação de algoritmos HW + SW em um sistema MapReduce em ter- mos de desempenho e eficiência energética; d) Análise de sensibilidade baseada no número de slots de mapper e na diversidade da microarquitetura do servidor; processador Xeon (alto desempenho) vs processador Atom (baixo consumo). O

nó mestre executa o HDFS e é responsável pelo escalonamento dos trabalhos en- tre todos os nós escravos (nós workers). Cada nó worker tem um número fixo de slots map e reduce que é estaticamente configurado. (Considera um slot mapper para cada Zynq). Como nó mestre foram usadas duas configurações diferentes: Um Intel Atom C2758 e um Intel Xeon E5. O Intel Atom C2758 tem 8 núcleos no processador, com uma cache de dois nivéis (L1 e L2 cache com tamanho de 24KB e 1024KB, respectivamente), e uma frequência de 2,4 Ghz com Turbo Boost. O intel Xeon E5-2420 tem dois processadores, cada processador contém seis núcleos de processamento com três niveis de cache: L1 e L2 são privados de cada núcleo com o L3 compartilhado entre todos os núcleos. L1, L2 e L3 caches tem 32 KB, 256 KB e 15 MB, respectivamente. Cada escravo é equipado com um processador Zynq, que é considerado como um slot mapper/reducer. Os dispositivos Zynq são placas ZedBoards compostas pelo SoC XC7Z020 Zynq. A placa ZedBoard integra dois ARM Cortex-A9 a 667 Mhz com uma Artix-7 FPGA com 85 KB logic cells e 560 KB block RAM. Quatro aplicações amplamente utilizadas foram selecionadas para serem estudadas neste artigo. São elas:K-means clustering, KNN classifica- tion, SVM-learn e Naive Bayes classification. Para cada aplicação foi primeiro feito um profiling dela, utilizando duas entradas diferentes. Após foi feita uma aná- lise de alto nível das funções “quentes” que consiste em pegar as principais funções mapeadas através do profiling que podem ser convertidas para o FPGA. A redução de energia através aceleração de hardware é menor para o processador Atom, já que ele consome menos energia. Além disso, a eficiência energética é melhorada de forma mais significativa para o processador Xeon. No geral, os resultados indi- cam o benefício do uso aceleração em FPGA para os dois tipos de processadores. Os resultados mostram que uma aceleração do kernel de até 321,5 com co-design software-hardware pode ser alcançada. Isso resulta em aceleração de 2,72, redu- ção do consumo de 2,13 e eficiência energética de 15,21 (EDP) em um ambiente Hadoop considerando várias transferências de dados e o overhead de comunicação. 4. Spark acceleration on FPGAs: A use case on machine learning in Pynq (KORO- MILAS et al., 2017): Neste artigo, foi apresentada uma estrutura para a utilização contínua de aceleradores de hardware em SoCs heterogêneos que são usados para acelerar o processamento de aplicações de análise de dados do Spark. As princi- pais contribuições deste trabalho são as seguintes: a) Uma estrutura eficiente para a utilização contínua de aceleradores de hardware para aplicações Spark; b) Uma

implementação para um MPSoC (Zynq) totalmente programável e altamente hete- rogêneo baseado no framework Pynq; c) Uma avaliação de desempenho para um caso de uso sobre aprendizado de máquina que mostra como a estrutura proposta poderia alcançar uma aceleração de até 11x em comparação com os processadores ARM no Zynq. A Xilinx lançou em 2016 o framework Pynq que permite a pro- gramação rápida de todo SoC heterogêneo programável (XILINX, 2018). Usando a linguagem Python e bibliotecas, designers pode explorar os benefícios da lógica programável e microprocessadores na Zynq para construir sistemas. Circuitos ló- gicos programáveis são apresentados como bibliotecas chamados overlays. Esses overlays são análogas para bibliotecas de software. Um engenheiro de software pode selecionar um overlays que melhor corresponde à sua aplicação. A plata- forma Pynq é baseada no Zynq all-programmable SoC. Zynq FPGA incorpora dois núcleos ARM Cortex A9 e uma unidade lógica programável em um único chip [7]. Cada um desses núcleos tem 32 KB de cache L1 de instrução e de dados e com- partilham 512 KB de cahe L2. Os processadores têm clock de 667 Mhz e eles têm suporte coerente a multiprocessadores. Em cima do framework Pynq, foi mapeado eficientemente o framework Spark com adaptações para se comunicar com os ace- leradores de hardware localizados na parte programável lógica da Zynq. O Spark está hospedado nos processadores ARM, em cima do Python que está hospedada no sistema operacional. Tanto o mestre quanto o os nós escravos são hospedados nos núcleos do ARM. Além disso, um API python é usada para a comunicação com o acelerador de hardware. A API Python está se comunicando com a biblioteca C que serve como driver do acelerador de hardware. Na parte lógica reconfigurável, os aceleradores de hardware para a aplicação específica são hospedados. A ace- leração de hardware é invocada pela API python do aplicativo Spark. Portanto, a única modificação que é exigida pelo usuário do Spark é a substituição das chama- das da função da biblioteca pelo API python para comunicação com o acelerador de hardware. Os aceleradores de hardware podem melhorar significativamente o de- sempenho e a eficiência de energia das aplicações analíticas de dados. No entanto, atualmente, estruturas de análise de dados como o Spark não suportam a utilização contínua de aceleradores de hardware. Neste artigo, foi apresentado um novo es- quema para a utilização contínua de aceleradores de hardware usando o framework Spark, amplamente usada na análise de dados. Implementamos um acelerador de hardwarepara regressão logística que é conectado aos processadores através da in-

terface AXI e integramos o acelerador com o framework Spark em um único SoC que suporta lógica programável. A avaliação de desempenho mostra até 11x de aceleração para a regressão logística e mostra que o framework proposto pode ser utilizado para suportar qualquer tipo de acelerador de hardware.