Implementación de algoritmos de agrupamiento en CUDA

Abstract

Con el avance cada vez más rápido de la tecnología, una gran parte de las aplicaciones generan una cantidad cada vez más grande de datos a gran velocidad; datos que sin una interpretación carecen de una utilidad real; por ello es que el análisis de datos se ha convertido en un método común tanto en la industria como en la investigación científica moderna; lo que nos pone frente al reto de mejorar los algoritmos o procedimientos de análisis tradicionales. Es aquí donde campos de investigación como aprendizaje de máquina (Machine Learning) aportan soluciones tales como los algoritmos de clasificación utilizados principalmente como métodos de aprendizaje supervisado y algoritmos de clustering (agrupamiento de datos) utilizados en su mayoría como métodos de aprendizaje no supervisado. Dichos algoritmos al enfrentarse a las nuevas características de los datos incrementan su complejidad computacional. Una de las alternativas de solución es implementar dichos algoritmos en esquemas de computación paralela. Dentro del siguiente trabajo se presenta un análisis realizado sobre las características con las que un algoritmo de aprendizaje máquina debe contar para ser implementado en CUDA con mayor éxito, además de un análisis sobre las ventajas y desventajas que ofrece CUDA frente a otros modelos de programación paralela. A través de puntualizar las características de los cuatro tipos de computación paralela (paralelismos a nivel bit, a nivel de instrucción, a nivel de datos, a nivel de tareas) se intenta obtener una generalización que nos ayude a definir cuándo y con qué tipo de programación paralela es recomendable implementar un algoritmo de aprendizaje máquina. Se realiza también una comparación entre los tiempos de ejecución y el performance que presenta el algoritmo Mezcla de Gaussianas, viéndolo como un caso particular del algoritmo EM (Expectation-Maximization), implementado en serie con Python y en paralelo con CUDA

    Similar works