• Nenhum resultado encontrado

DISCUS ˜ OES FINAIS DO CAP´ITULO E CONTRIBUIC ¸ ˜ OES

Neste cap´ıtulo foram apresentadas as implementa¸c˜oes de hardware dos operadores de c´alculo aritm´etico e trigonom´etrico usando a representa¸c˜ao aritm´etica de ponto flutu- ante.

Os dados de custo em ´area l´ogica demonstram que os dispositivos FPGA s˜ao uma solu¸c˜ao fact´ıvel para a implementa¸c˜ao dos operadores estudados. Em geral o con- sumo de recursos de hardware ´e satisfat´orio, havendo suficiente ´area l´ogica para imple- menta¸c˜oes futuras. Entretanto, o n´umero de blocos DSP dedicados ´e um parˆametro cr´ıtico, especificamente para representa¸c˜oes de alta precis˜ao (64 bits). Entre os opera- dores aritm´eticos, a unidade de soma/subtra¸c˜ao requer de mais recursos de hardware, embora n˜ao fa¸ca uso de blocos DSP embarcados.

Os resultados de s´ıntese permitiram concluir que a representa¸c˜ao de 27 bits (1 bit de sinal, 8 bits de mantissa e 18 bits de mantissa) permite realizar implementa¸c˜oes mais eficiente em termos de consumo de recursos se comparado com a representa¸c˜ao de precis˜ao simples (32 bits). Especificamente, foi observado que a implementa¸c˜ao de 27 bits usa 50% menos blocos DSPs do que a implementa¸c˜ao de 32 bits. Isto ´e devido a que os blocos DSPs usados nos dispositivos FPGAs da Xilinx s˜ao baseados em multiplicadores de 18x18 nas fam´ılias Spartan e de 18x25 nas fam´ılias Virtex e Kintex da Xilinx. Desta forma, para a implementa¸c˜ao de uma opera¸c˜ao de multiplica¸c˜ao usando blocos DSPs de 18x25 bits, a representa¸c˜ao de 27 bits n˜ao realiza produtos parciais em contraste com a implementa¸c˜ao de 32 bits em que s˜ao necess´arios dois produtos parciais para multiplicar as mantissas de 23x23 bits.

Adicionalmente, a implementa¸c˜ao de 27 bits apresenta uma faixa dinˆamica similar `a implementa¸c˜ao de 32 bits (expoentes do mesmo tamanho), por´em com um detrimento no erro associado. Este ´ultimo fato ´e derivado do decremento de 5 bits no tamanho da mantissa e afeta, principalmente, os algoritmos que fazem uso de multiplica¸c˜oes intermedi´arias. Contudo, para as implementa¸c˜oes almejadas no contexto deste traba- lho, a economia de recursos de hardware, especificamente de blocos DSPs, ´e o fator que mais limita a escalabilidade dos algoritmos de inteligˆencia de enxames, particu- larmente do n´umero de part´ıculas paralelas implementadas. Portanto, a representa¸c˜ao aritm´etica de 27 bits foi escolhida para mapear os algoritmos paralelos por inteligˆencia de enxames.

Uma das principais contribui¸c˜oes deste trabalho est´a relacionada com a implementa¸c˜ao hardware de bibliotecas parametriz´aveis dos operadores em ponto flutuante. Diversos trabalhos encontrados na literatura tˆem realizado propostas para a implementa¸c˜ao em FPGAs de operadores aritm´eticos e trigonom´etricos em aritm´etica de ponto fixo e de ponto flutuante. Enquanto ao desenvolvimento de bibliotecas parametriz´aveis em FPGAs usando aritm´etica de ponto flutuante podem-se destacar as propostas de Wang [134] e Govindu [146] para operadores aritm´eticos. Por outro lado, poucos trabalhos s˜ao reportados na literatura sobre a implementa¸c˜ao de bibliotecas parametriz´aveis de fun¸c˜oes trigonom´etricas usando ponto flutuante. Contudo, nos trabalhos pr´evios n˜ao se considera a precis˜ao como crit´erio de projeto das arquiteturas de hardware. Neste trabalho a precis˜ao foi tratada como uma vari´avel de projeto na implementa¸c˜ao das arquiteturas propostas. Isto permitiu realizar uma an´alise de tradeoff entre o erro associado e outros trˆes parˆametros de projeto de circuitos: custo em ´area l´ogica, tempo de execu¸c˜ao e consumo de potˆencia. Detalhes sobre esta an´alise de tradeoff para os operadores desenvolvidos podem ser encontrados em [130] e [131].

Uma segunda contribui¸c˜ao do trabalho est´a relacionada com a implementa¸c˜ao da arqui- tetura CordicTaylorexp para o c´alculo da fun¸c˜ao exponencial (vide figura 3.8), a qual ´e produto da abordagem de desenvolvimento explicada anteriormente. Esta arquitetura foi desenvolvida inicialmente implementando o algoritmo CORDIC em coordenadas hiperb´olicas. No entanto, durante a fase de an´alise do erro associado foi poss´ıvel cons- tatar que o algoritmo apresenta erros de aproxima¸c˜ao quando o argumento de entrada ´e pequeno. Visando contornar este problema, a arquitetura proposta utiliza os mesmos recursos de hardware para implementar a expans˜ao por s´eries de Taylor de segunda or- dem da fun¸c˜ao exponencial. Desta forma, ´e poss´ıvel multiplexar entre as duas l´ogicas implementadas ap´os a compara¸c˜ao do valor do argumento de entrada. Uma nova fase de an´alise do erro associado mostrou a eficiˆencia do resultado apresentado pela arquitetura h´ıbrida, vide figura 3.9. Embora possam ser usadas algumas t´ecnicas para melhorar a precis˜ao do algoritmo CORDIC para o c´alculo da fun¸c˜ao exponencial, ´e importante res- saltar que a abordagem CordicTaylor, apresentada neste trabalho, mostrou-se eficiente em termos de desempenho, erro associado e tempo de execu¸c˜ao.

Uma contribui¸c˜ao final dos t´opicos abordados neste cap´ıtulo ´e a ferramenta vFPU- gen. Esta ferramenta permite a gera¸c˜ao autom´atica de c´odigo VHDL dos operadores aritm´eticos e trigonom´etricos usando ponto flutuante, de forma que o tamanho de pa- lavra e os parˆametros dos algoritmos s˜ao configurados offline segundo os requerimentos de precis˜ao, custo em ´area l´ogica e tempo de execu¸c˜ao de uma aplica¸c˜ao espec´ıfica. ´E

importante destacar que esta ferramenta facilita o uso de FPGAs em variadas aplica¸c˜oes em engenharia e permite diminuir o tempo de desenvolvimento.

Como trabalhos futuros sobre a implementa¸c˜ao dos operadores aritm´eticos espera-se um melhoramento no erro de aproxima¸c˜ao da unidade de multiplica¸c˜ao mediante a substitui¸c˜ao dos processos de truncamento por estados de arredondamento. Por ou- tro lado, os operadores desenvolvidos poder˜ao ser usados como co-processadores de hardware e integrados no MicroBlaze, sendo acessados por meio de instru¸c˜oes cus- tomizadas, permitindo acelerar a execu¸c˜ao de algoritmos baseados em software. A estima¸c˜ao do consumo de potˆencia dos operadores implementados ´e uma tarefa impor- tante para a complementa¸c˜ao dos resultados obtidos, visando futuras aplica¸c˜oes em sistemas embarcados. Finalmente, uma implementa¸c˜ao em Java da ferramenta vFPU- gen e a constru¸c˜ao de uma interface de usu´ario permitir´a a dissemina¸c˜ao da ferramenta entre a comunidade cient´ıfica al´em de viabilizar a independˆencia de plataforma.

Cap´ıtulo 4

IMPLEMENTAC¸ ˜OES E RESULTADOS DOS

ALGORITMOS DE OTIMIZAC¸ ˜AO POR INTELIGˆENCIA

DE ENXAMES

Este cap´ıtulo apresenta as arquiteturas paralelas propostas para os algoritmos de oti- miza¸c˜ao por inteligˆencia de enxames estudados neste trabalho. As arquiteturas pro- postas foram mapeadas em um dispositivo FPGA da fam´ılia Virtex5 da Xilinx e o custo em ´area l´ogica foi estimado usando os resultados de s´ıntese. As implementa¸c˜oes foram validadas por meio de experimentos computacionais usando fun¸c˜oes de teste benchmark, permitindo realizar compara¸c˜oes num´ericas do desempenho dos algoritmos implementados em hardware com a sua respectiva realiza¸c˜ao em software. Por fim, uma compara¸c˜ao do tempo de execu¸c˜ao entre as solu¸c˜oes de hardware e software ´e apresentada. O cap´ıtulo finaliza com uma discuss˜ao dos resultados obtidos.

4.1 CONSIDERAC¸ ˜OES INICIAIS

Os algoritmos de inteligˆencia de enxames descritos a seguir fazem uso dos operadores aritm´eticos e trigonom´etricos de aritm´etica de ponto flutuante apresentados no cap´ıtulo anterior. Esta escolha ´e justificada dado que problemas de otimiza¸c˜ao geralmente requerem de uma representa¸c˜ao num´erica de alta precis˜ao com uma alta faixa dinˆamica.

As primeiras implementa¸c˜oes de hardware das arquiteturas paralelas dos algoritmos PSO, SFLA e ABC foram baseadas em uma representa¸c˜ao num´erica de 32 bits. De- talhes destas implementa¸c˜oes e seus respectivos resultados podem ser encontradas nas publica¸c˜oes realizadas no contexto deste trabalho [147], [148], [149], [150], [151], [152]. Os resultados de s´ıntese obtidos para uma representa¸c˜ao de 32 bits apontaram um alto consumo de recursos de hardware, especificamente de blocos DSP embarcados. Contudo, como demonstrado no cap´ıtulo anterior, dado que dispositivos FPGAs usam blocos DSPs de 9x9 bits ou 18x18 bits, uma representa¸c˜ao de ponto flutuante de 27 bits (8 bits de expoente e 18 bits de mantissa) permite realizar implementa¸c˜oes de hardware eficientes em termos de consumo de recursos mantendo a precis˜ao e faixa dinˆamica dos

operadores aritm´eticos.

Visando acelerar o tempo de desenvolvimento, uma ferramenta de software para gera¸c˜ao autom´atica de c´odigo VHDL dos algoritmos de inteligˆencia de enxames foi desenvol- vida no Matlab. Esta ferramenta, chamada de Swarm Generator, permite selecio- nar o n´umero de part´ıculas, dimensionalidade do problema de otimiza¸c˜ao, n´umero de itera¸c˜oes, entre outros parˆametros de cada algoritmo. Adicionalmente, esta ferramenta permite escolher o tamanho de palavra da representa¸c˜ao em ponto flutuante segundo os requerimentos de custo em ´area l´ogica, precis˜ao e faixa dinˆamica. As implementa¸c˜oes apresentadas neste trabalho usam uma representa¸c˜ao num´erica de 27 bits.

Conforme explicado na Se¸c˜ao 2.7, trˆes m´etodos de adi¸c˜ao de diversidade artificial foram estudados e implementados em hardware. Inicialmente estes m´etodos foram aplicados para o algoritmo PSO. Em Mu˜noz et al. [148] apresenta-se uma descri¸c˜ao detalhada da implementa¸c˜ao em hardware da metodologia atrativa-repulsiva. Em Mu˜noz et al. [151] ´e descrita a implementa¸c˜ao hardware do m´etodo de congrega¸c˜ao passiva seletiva, a qual usa a segunda melhor part´ıcula para evitar o problema de convergˆencia prematura. Em Mu˜noz et al. [153] ´e apresentada uma implementa¸c˜ao da metodologia de aprendizado em oposi¸c˜ao a qual foi aplicada no treinamento de uma rede neural artificial.

No Apˆendice B deste trabalho apresenta-se um quadro comparativo dos resultados obtidos de uma implementa¸c˜ao software das trˆes t´ecnicas de diversidade artificial apli- cadas no algoritmo PSO para problemas becnhmark. Entretanto, devido `a facilidade de implementa¸c˜ao e baixo consumo de recursos de hardware, a t´ecnica de aprendizado em oposi¸c˜ao (OBL) foi escolhida para ser aplicada em todos os algoritmos de inte- ligˆencia de enxames estudados neste trabalho. A abordagem OBL usa o conceito de n´umero oposto (vide equa¸c˜ao 2.18), possibilitando que as part´ıculas sejam teletrans- portadas em regi˜oes opostas no espa¸co de busca. Observe-se que em espa¸cos de busca sim´etricos a implementa¸c˜ao da abordagem OBL pode ser facilmente aplicada mediante uma opera¸c˜ao de nega¸c˜ao.