Systolic Genetic Search, a Parallel Metaheuristic for Gpus
Total Page:16
File Type:pdf, Size:1020Kb
Tesis de Doctorado en Informática Systolic Genetic Search, A Parallel Metaheuristic for GPUs Martín Pedemonte Director de Tesis: Prof. Enrique Alba Torres Co-Director de Tesis: Prof. Francisco Luna Valero Director Académico: Prof. Héctor Cancela PEDECIBA Informática Instituto de Computación – Facultad de Ingeniería Universidad de la República Setiembre 2017 “Life is what happens to you, while you’re busy making other plans” John Lennon, Beautiful Boy (Darling Boy) To Juan Pablo and Isabel, two by-products of this thesis. Agradecimientos Finalmente ha llegado el día y el Doctorado está terminando. Este momento nunca hubiera sido posible sin la colaboración de un conjunto de personas, que me apoyaron a lo largo de este proceso, a las que quiero expresar mi agradecimiento. En primer lugar, quiero agradecer a mis directores de Tesis Enrique y Paco por su guía académica, su aporte a este trabajo, y la confianza en mí y en mi trabajo. También agradezco a Héctor, quien fue mi director académico, por su ayuda y su estímulo. A Pablo y Ernesto por aportarme otras perspectivas, por los intercambios de ideas y por sus valiosos comentarios que contribuyeron con este trabajo. A Eduardo por sus sugerencias e ideas para el diseño de una nueva grilla. Agradezco a mi compañera Leonella por su apoyo incondicional y su paciencia infinita, y también por haberme facilitado las cosas para que pudiera dedicarle tiempo a esta tesis. También agradezco a mis hijos Juan Pablo e Isabel por todos los ratos que les tuve que robar. A mi madre Graciela y a mi hermano Gerardo por su continuo aliento y por su cariño. También agradezco a mis compañeros de la sala 048 del INCO por el buen ambiente de trabajo que hemos creado y a los integrantes del grupo NEO de la UMA por el buen rollo y por tratarme como uno más. Por último agradezco a aquellas instituciones que brindaron soporte económico para realizar tareas en el marco de esta investigación. En particular, a la Agencia Nacional de Investigación e Innovación que a través del fondo María Viñas financió el proyecto “Metaheurísticas paralelas en GPU”, y a la RED CYTED - CADING (Computación de Alto Desempeño en Ingeniería), al PEDECIBA Informática y a CSIC que financiaron parcialmente pasantías, asistencias a congresos y compras de equipamiento. Abstract The use of Graphics Processing Units (GPUs) for general purpose computing has experienced a tremendous growth in recent years, based on its wide availability, low economic cost and inherent parallel architecture, as well as on the emergence of general purpose programming languages that have eased the development of applications onto this parallel computing platforms. In this context, the design of new parallel algorithms that profit from the GPUs platform is certainly a promising and interesting research line. Metaheuristics are stochastic algorithms which are able to provide optimization problems with very accurate (many times, optimal) solutions in a reasonable amount of time. However, as many optimization problems involve tasks demanding large computational resources, and/or problem instances in today’s research are becoming very large, even metaheuristics may be highly computationally expensive. In this situation, parallelism comes out as a successful strategy for speeding up the search of those kind of algorithms. Parallel meta- heuristics do not only allow to reduce the runtime of the algorithms, but also often improve the quality of the results obtained by traditional sequential algorithms. Although the use of GPUs has also represented an inspiring domain for the research in parallel metaheuristics, most previous works were aimed at porting existing family of algorithms onto this new kind of hardware. As a consequence, many published material is targeted to show the time savings of running different parallel types of metaheuristics on GPUs. In spite of this considerable work on the parallelization of metaheuristics in GPUs, there are few novel ideas for designing new algorithms and/or parallel models that explicitly exploit the high degree of parallelism available in modern GPU architectures. This thesis addresses the design of an innovative proposal of a parallel optimization family of algorithms, called Systolic Genetic Search (SGS), that merges ideas from the fields of metaheuristics and systolic computing. SGS, as well as systolic computing, are inspired by the same biological phenomenon: the systolic contraction of the heart that makes possible blood circulation. In SGS, solutions circulate synchronously through a grid of processing cells. When two solutions meet in a cell, adapted evolutionary operators are applied to generate new solutions that continue moving through the grid. The implementation of this viii new proposal takes special advantage of the specific features of the massively parallel GPU platforms. An extensive experimental analysis, which considers several classical benchmark prob- lems and two real-world problems from the Software Engineering field, shows that the newly proposed algorithm is highly effective, finding optimal or near optimal solutions in short execution times. Moreover, the numerical results obtained by SGS are competitive with the state-of-the-art results for the two real-world problems also targeted in this PhD thesis. On the other hand, the parallel GPU implementation of SGS has achieved a high performance, obtaining a large runtime reduction from the sequential implementation and showing that it scales properly on instances of increasing size. A theoretical analysis of the search capabilities of SGS has been also performed for understanding how some aspects of the behaviour of the algorithm affect the numerical results of SGS. This analysis gives an important insight in the behavior of SGS that can be used to improve the design of future variants of the algorithm. Keywords: Evolutionary Algorithms, Systolic Computing, Parallel Metaheuristics, GPU, Search-Based Software Engineering. Resumen La utilización de unidades de procesamiento gráfico (GPUs) para la resolución de problemas de propósito general ha experimentado un crecimiento vertiginoso en los últimos años, sustentado en su amplia disponibilidad, su bajo costo económico y en contar con una arquitectura inherentemente paralela, así como en la aparición de lenguajes de programación de propósito general que han facilitado el desarrollo de aplicaciones en estas plataformas. En este contexto, el diseño de nuevos algoritmos paralelos que puedan beneficiarse del uso de GPUs es una línea de investigación prometedora e interesante. Las metaheurísticas son algoritmos estocásticos capaces de encontrar soluciones muy precisas (muchas veces óptimas) a problemas de optimización en un tiempo razonable. Sin embargo, como muchos problemas de optimización involucran tareas que exigen grandes recursos computacionales y/o el tamaño de las instancias que se están abordando actualmente se están volviendo muy grandes, incluso las metaheurísticas pueden ser computacionalmente muy costosas. En este escenario, el paralelismo surge como una alternativa exitosa con el fin de acelerar la búsqueda de este tipo de algoritmos. Además de permitir reducir el tiempo de ejecución de los algoritmos, las metaheurísticas paralelas a menudo son capaces de mejorar la calidad de los resultados obtenidos por los algoritmos secuenciales tradicionales. Si bien el uso de GPUs ha representado un dominio inspirador también para la investi- gación en metaheurísticas paralelas, la mayoría de los trabajos previos tenían como objetivo portar una familia existente de algoritmos a este nuevo tipo de hardware. Como consecuencia, muchas publicaciones están dirigidas a mostrar el ahorro en tiempo de ejecución que se puede lograr al ejecutar los diferentes tipos paralelos de metaheurísticas existentes en GPU. En otras palabras, a pesar de que existe un volumen considerable de trabajo sobre este tópico, se han propuesto pocas ideas novedosas que busquen diseñar nuevos algoritmos y/o modelos de paralelismo que exploten explícitamente el alto grado de paralelismo disponible en las arquitecturas de las GPUs. Esta tesis aborda el diseño de una propuesta innovadora de algoritmo de optimización paralelo denominada Búsqueda Genética Sistólica (SGS), que combina ideas de los campos de metaheurísticas y computación sistólica. SGS, así como la computación sistólica, se inspiran en el mismo fenómeno biológico: la contracción sistólica del corazón que hace x posible la circulación de la sangre. En SGS, las soluciones circulan de forma síncrona a través de una grilla (rejilla) de celdas. Cuando dos soluciones se encuentran en una celda se aplican operadores evolutivos adaptados para generar nuevas soluciones que continúan moviéndose a través de la grilla (rejilla). La implementación de esta nueva propuesta saca partido especialmente de las características específicas de las GPUs. Un extenso análisis experimental que considera varios problemas de benchmark clásicos y dos problemas del mundo real del área de Ingeniería de Software, muestra que el nuevo algoritmo propuesto es muy efectivo, encontrando soluciones óptimas o casi óptimas en tiempos de ejecución cortos. Además, los resultados numéricos obtenidos por SGS son competitivos con los resultados del estado del arte para los dos problemas del mundo real en cuestión. Por otro lado, la implementación paralela en GPU de SGS ha logrado un alto rendimiento, obteniendo grandes reducciones de tiempo de ejecución con respecto a la implementación secuencial y mostrando que escala