Desenvolvimento de uma plataforma com uma arquitetura escalável para multiplicação de matrizes densas em sistemas reconfiguráveis de alto desempenho - Holanda Tavares Charamba Dutra, Bruno (2011)
O surgimento de novas gerações de FPGAs (Field Program Gate Array) de larga escala, com uma maior densidade de elementos lógicos e de memória interna, motivou a comunidade científica e a indústria a investir no desenvolvimento de plataformas reconfiguráveis de alto desempenho que utilizam FPGAs como co-processadores. Com os microprocessadores atuais atingindo seus limites de freqüência de operação e tendo o desempenho limitado pela baixa largura de banda no acesso a memória, os dispositivos lógicos programáveis, como os FPGAs, surgem como uma alternativa para o processamento de aplicações que requerem alto desempenho, uma vez que possuem uma grande quantidade de pinos que podem ser conectados a interfaces de memória externas além de possibilitar a exploração do paralelismo inerente das implementações em linguagens de descrição de hardware. Além do ganho de desempenho possível, os FPGAs dissipam uma quantidade potência bastante inferior comparada aos processadores de propósito geral produzindo uma relação desempenho por potência dissipada muito mais favorável quando comparado aos microprocessadores. Dentre as várias aplicações que exigem computação de alto desempenho a comunidade científica tem concentrado esforços para acelerar funções da biblioteca BLAS (Basic Linear Algebra Subprogram) que consiste em uma biblioteca open-source de operações básicas de álgebra linear. Uma das operações mais importantes desta biblioteca é multiplicação de matrizes que está presente em aplicações de diferentes áreas. Neste trabalho foi desenvolvida uma plataforma de alto de desempenho que utiliza um FPGA como co-processador para multiplicação de matrizes densas. A plataforma foi desenvolvida de forma a ser escalável podendo processar matrizes de diferentes tamanhos. Além disso, outra característica importante da plataforma é o fato de ter sido desenvolvida com o intuito de abstrair todos os detalhes de hardware para o usuário. O desempenho da plataforma foi comparado com implementações otimizadas do algoritmo de multiplicação de matrizes executando em um processador de propósito geral