Análise de desempenho de algoritmos de enxame paralelizados em GPU - Menezes, Angelo Geovanni Amaral (2019)
Algoritmos de enxames são um conjunto de heurísticas utilizados na busca de soluções ótimas em aplicações onde existem uma infinidade de possibilidades de respostas. Eles são extremamente versáteis e bastante utilizados em uma gama de diversos problemas, como por exemplo, no roteamento de veículos (BELL; MCMULLEN, 2004), predição de tendências do mercado financeiro (SHEN et al., 2011), problemas de fluxo de potência ótimo (MOHAMED et al., 2017), entre outros. Na busca por soluções ótimas, sendo que não se é necessário aos algoritmos compreenderem ou conhecerem completamente a função a ser avaliada, mantém-se a qualidade de resposta mesmo em casos de funções black box. Por natureza, estes algoritmos tem como característica uma relativa facilidade em sua paralelização, devido a uma certa independência dos componentes que formam o enxame, sendo que eles podem ser executados em um grande número de threads. Algumas aplicações que adotam algoritmos de enxame para a resolução de um problema exploram o paralelismo oferecido em CPU. Porém, a grande maioria não utiliza da computação em GPGPU para paralelização dos algoritmos. GPU oferecem um imenso número de threads, e alto desempenho em funções de cálculo básicas que são usadas na computação de fitness de um indivíduo ou de um enxame. Desta forma, este trabalho analisa e compara o desempenho de algoritmos de enxame implementados tanto em CPU quanto em GPU. Os resultados obtidos mostram que o desempenho em GPU é superior a CPU quando um número grande de elementos de enxame é utilizado.