Publication:
Application parallelization and debugging using pattern-based programming

Loading...
Thumbnail Image
Official URL
Full text at PDC
Publication Date
2020
Editors
Journal Title
Journal ISSN
Volume Title
Publisher
Citations
Google Scholar
Research Projects
Organizational Units
Journal Issue
Abstract
The search for improved performance of our computer systems is a never-ending journey. Up until the early 2000s, single-core processors dominated the technology market; however, the problem of heat and the limitations of instruction-level parallelism sentenced this branch of computers to obsolescence, in favour of multicore processors. Now, the challenge for programmers is to write programs that can take full advantage of the CPU resources, thanks to parallelism. Programmers are now presented with multiple parallel pattern frameworks and APIs (C++ threads, OpenMP, Intel TBB, etc), each of which has its own programming standard. The lack of high-level parallel pattern abstractions and the difficulty to port programs between these very specialised parallel pattern models increase the complexity in developing parallel applications. GrPPI is a generic high-level C++ parallel pattern interface that presents itself as a solution to this problem, for it provides users with a common API for a collection of these parallel frameworks. In this work, we study the performance of GrPPI by using it to adapt four programs from the PARSEC benchmark suite and comparing its execution time to the original parallel implementation. We compare its performance for three execution back-ends (sequential, parallel native and OpenMP). We will see that the results of the tests testify in favour of GrPPI, which has an execution time as good as the original, more specific parallel versions of the programs while needing fewer lines of code and no knowledge about the different programming standards.
La búsqueda de un rendimiento mejorado de nuestros sistemas informáticos es un viaje interminable. Hasta principios de los 2000, los ordenadores uni-core dominaban el marcado tecnológico; sin embargo, el problema del calor y las limitaciones del paralelismo a nivel de instrucción (ILP) condenaron esta rama de las computadoras a la obsolescencia, a favor de los procesadores multicore. Ahora, el desafío para los programadores es escribir programas que puedan aprovechar al máximo los recursos de la CPU, gracias al paralelismo. Los programadores se enfrentan a múltiples marcos de patrones paralelos y APIs (C++ Multihreads, OpenMP, Intel TBB, etc.), cada uno de los cuales tiene su propio estándar de programación. La falta de abstracciones de patrones paralelos de alto nivel y la dificultad de traducir programas entre estos modelos de patrones paralelos tan especializados aumentan la complejidad en el desarrollo de aplicaciones paralelas. GrPPI es una interfaz de alto nivel genérica de patrones paralelos de C++ que se presenta como una solución a este problema, ya que proporciona a los usuarios una API común para una colección de estos marcos paralelos. En este trabajo, estudiamos el rendimiento de GrPPI usándolo para adaptar cuatro programas del conjunto de benchmark de referencia PARSEC y comparando su tiempo de ejecución con la implementación paralela original. Comparamos su rendimiento para tres back-end de ejecución (secuencial, paralelo nativo y OpenMP). Veremos que los resultados de las pruebas testifican a favor de GrPPI, que tiene un tiempo de ejecución tan bueno como las versiones paralelas originales y más específicas de los programas, a la vez que necesita menos líneas de código y ningún conocimiento sobre los diferentes estándares de programación.
Description
Trabajo de Fin de Doble Grado en Ingeniería Informática y Matemáticas, Facultad de Informática UCM, Departamento de Arquitectura de Computadores y Automática, Curso 2019/2020
Unesco subjects
Keywords
Citation