Por favor, use este identificador para citar o enlazar este ítem: https://repositorio.ufu.br/handle/123456789/43738
ORCID:  http://orcid.org/0009-0000-5383-3098
Tipo de documento: Trabalho de Conclusão de Curso
Tipo de acceso: Acesso Aberto
Título: Paralelização do algoritmo K-means em GPUs NVIDIA utilizando a biblioteca Numba
Título (s) alternativo (s): Parallelization of the K-means algorithm in NVIDIA GPUs using the Numba library
Autor: Praxedes, Vinícius Henrique Almeida
Primer orientador: Abdala, Daniel Duarte
Primer miembro de la banca: Souza, Júlia Tannús de
Segundo miembro de la banca: Santos, Anderson Rodrigues dos
Resumen: O K-means é um algoritmo notório de agrupamento de dados que vem sendo usado extensivamente desde sua concepção no meio do século XX. Utilizando-o como exemplo de implementação, essa pesquisa visou implementar uma versão paralelizada, usando o processamento vetorial de uma GPU NVIDIA, para obter um ganho de performance significativo, sem afetar a precisão dos resultados. Buscou-se realizar essa implementação utilizando ferramentas de programação de mais alto-nível de abstração, especificamente a linguagem Python e as bibliotecas Numba, Numpy e Pandas, explorando a possibilidade de se atingir grandes aumentos em velocidade de execução sem abrir mão da facilidade de desenvolvimento proporcionada pelo Python, se comparada com a complexidade de realizar uma implementação equivalente em C++ utilizando a API CUDA diretamente. Foi constatada maior velocidade de execução em C++ se comparado ao Python em testes com implementações paralelas em GPU de soma de vetores unidimensionais com mais de 400 milhões de elementos, C++ sendo cerca de 22,63x mais rápido que Python. Não obstante, ao se testar implementações seriais e paralelas em Python do algoritmo k-means foram obtidos ganhos de performance dentro da magnitude esperada ao se comparar com resultados de outros trabalhos da literatura com objetivos semelhantes de otimização do k-means. Esses experimentos foram realizados utilizando cinco conjuntos de dados com o número de instâncias variando entre 3.810 e 13.932.632 e o número de features entre 3 a 50. Um aumento médio de peformance entre 9x a 42x foi atingido com sucesso sem prejudicar mensuravelmente a qualidade dos resultados, ao se comparar uma implementação serial em Python usando as bibliotecas Pandas e Numpy e uma paralela em Python usando, além dessas, a biblioteca Numba para rodar funções em uma GPU NVIDIA. Além disso foi observado que o ganho de performance tende a aumentar para conjuntos de dados maiores.
Palabras clave: K-means
agrupamento de dados
GPGPU
CUDA
Numba
computação paralela
Área (s) del CNPq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::TEORIA DA COMPUTACAO
Idioma: por
País: Brasil
Editora: Universidade Federal de Uberlândia
Cita: PRAXEDES, Vinícius Henrique Almeida. Paralelização do Algoritmo K-means em GPUs NVIDIA Utilizando a Biblioteca Numba. 2024. 75 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) – Universidade Federal de Uberlândia, Uberlândia, 2024.
URI: https://repositorio.ufu.br/handle/123456789/43738
Fecha de defensa: 25-abr-2024
Aparece en las colecciones:TCC - Ciência da Computação

Ficheros en este ítem:
Fichero Descripción TamañoFormato 
ParalelizaçãoAlgoritmoKmeans.pdfTCC4.56 MBAdobe PDFVista previa
Visualizar/Abrir


Este ítem está sujeto a una licencia Creative Commons Licencia Creative Commons Creative Commons