Redução Paralela Otimizada para Segmentos Regulares e Irregulares em GPU - Cordeiro, Michel B.; Zola, Wagner M. Nunan (Anais do Simpósio em Sistemas Computacionais de Alto Desempenho (SSCAD); 2024: Anais do XXV Simpósio em Sistemas Computacionais de Alto DesempenhoDO - 10.5753/sscad.2024.244797, 2024)
Redução é uma operação que combina todos os elementos de uma coleção aplicando uma operação binária, como soma, máximo ou mínimo, a todos os elementos para obter um único valor resultante. Este trabalho tem como objetivo investigar estratégias de implementação para redução segmentada em GPUs. Técnicas existentes de redução segmentada costumam ter um desempenho consistente, mas são relativamente ineficientes quando aplicadas a segmentos irregulares. Essas técnicas são frequentemente otimizadas para cargas de trabalho específicas e, como resultado, podem apresentar desempenho degradado para certos conjuntos de dados, especialmente quando os segmentos têm tamanhos muito variados. O algoritmo apresentado neste artigo utiliza três estratégias diferentes para lidar com tamanhos variados de segmentos e tem a capacidade de escolher a melhor estratégia em tempo de execução para otimizar o processamento de cada segmento conforme seu tamanho. O algoritmo proposto oferece um desempenho consistente, alcançando uma aceleração de até 49.47 vezes para segmentos de tamanhos variados e até 12.62 vezes para segmentos de tamanhos regulares, em comparação aos algoritmos de redução segmentada das melhores bibliotecas paralelas em GPU. Além disso, este artigo também explora estratégias para acelerar a redução não segmentada, resultando em uma melhoria de até 1.77 vezes em comparação às outras implementações.