Library-based solutions for algorithms with complex patterns of parallelism
Use this link to cite
http://hdl.handle.net/2183/14385Collections
- Teses de doutoramento [2165]
Metadata
Show full item recordTitle
Library-based solutions for algorithms with complex patterns of parallelismAuthor(s)
Directors
Fraguela Rodríguez, Basilio BernardoDate
2015Center/Dept./Entity
Universidade da Coruña.Departamento de Electrónica e SistemasAbstract
[Resumen]
Con la llegada de los procesadores multinúucleo y la caída del crecimiento de la
capacidad de procesamiento por núcleo en cada nueva generación, la paralelización
es cada vez más crítica para mejorar el rendimiento de todo tipo de aplicaciones. Por
otra parte, si bien hay un buen conocimiento y soporte de los patrones de paralelismo
más sencillos, esto no es así para los patrones complejos e irregulares, cuya paralelización requiere o bien herramientas de bajo nivel que afectan negativamente a la
productividad, o bien soluciones transaccionales con requisitos específicos de hardware o que implican grandes sobrecostes. El aumento del número de aplicaciones que exhiben estos patrones complejos hace que este sea un problema con importancia creciente. Esta tesis trata de mejorar la comprensión y el soporte de tres tipos de patrones complejos, mediante la identificación de abstracciones y semánticas claras que ayuden su paralelización en entornos de memoria compartida. El enfoque elegido fue la creación de librerías, ya que facilitan la reutilización de código, reducen los requisitos del compilador, y tienen una curva de aprendizaje relativamente corta. El lenguaje empleado para la implementación es C++, pues proporciona un buen rendimiento y capacidad para expresar las abstracciones necesarias. Los ejemplos y evaluaciones en esta tesis muestran que nuestras propuestas permiten expresar de manera elegante las aplicaciones que presentan estos patrones, mejorando su programabilidad al tiempo que proporcionan un rendimiento similar o superior al de
otras soluciones existentes. [Abstract]
With the arrival of multi-core processors and the reduction in the growth rate
of the processing power per core in each new generation, parallelization is becoming
increasingly critical to improve the performance of every kind of application. Also, while simple patterns of parallelism are well understood and supported, this is not the case for complex and irregular patterns, whose parallelization requires either low level tools that hurt programmers' productivity or transactional based approaches that need specific hardware or imply potentially large overheads. This is becoming an increasingly important problem as the number of applications that exhibit these latter patterns is steadily growing. This thesis tries to better understand and support three kinds of complex patterns through the identification of abstractions and clear semantics that help bring structure to them and the development of libraries based on our observations that facilitate their parallelization in shared memory environments.
The library approach was chosen given its advantages for code reuse, reduced compiler requirements, and relatively short learning curve. The implementation language selected being C++ due to its good performance and capability to express abstractions. The examples and evaluations in this thesis show that our proposals allow to elegantly express the applications that present these patterns, improving their programmability while providing similar or even better performance than existing approaches. [Resumo]
Coa chegada dos procesadores multinúcleo e a caída do crecemento da capacidade
de procesamento por núcleo en cada nova xeración, a paralelización é cada
vez máis crítica para mellorar o rendemento de todo tipo de aplicacións. Ademais,
hai un bo co~necemento e soporte dos patróns de paralelismo máis sinxelos, mais
non sendo así para patróns complexos e irregulares, cuxa paralelización require ben
ferramentas de baixo nivel que afectan negativamente á produtividade, ben solucións transaccionais con requisitos específicos de hardware ou que implican grandes
sobrecostes. O aumento do número de aplicacións que exhiben estes patróns complexos fai que este sexa un problema con importancia crecente. Esta tese trata de
mellorar a comprensión e o soporte de tres tipos de patróns complexos mediante a
identificación de abstraccións e semánticas claras que axuden a súa paralelización
en entornos de memoria compartida. O enfoque elixido foi a creación de librarías,
xa que facilitan a reutilización de código, reducen os requisitos do compilador, e
teñen unha curva de aprendizaxe relativamente curta. A linguaxe empregada para a implementación é C++, pois proporciona un bo rendemento e capacidade para expresar as abstraccións necesarias. Os exemplos e avaliacións nesta tese mostran que
as nosas propostas permiten expresar de xeito elegante as aplicacións que presentan
estes patróns, mellorando a súa programabilidade ao tempo que proporcionan un
rendemento similar ou superior ao de outras solucións existentes.
Keywords
Paralelismo (Informática)
C++ (Lenguaje de progrmación)
C++ (Lenguaje de progrmación)
Rights
Os titulares dos dereitos de propiedade intelectual autorizan a visualización do contido desta tese a través de Internet, así como a súa reproducción, gravación en soporte informático ou impresión para o seu uso privado e/ou con fins de estudo e de investigación. En nengún caso se permite o uso lucrativo deste documento. Estos dereitos afectan tanto ó resumo da tese como o seu contido Los titulares de los derechos de propiedad intelectual autorizan la visualización del contenido de esta tesis a través de Internet, así como su repoducción, grabación en soporte informático o impresión para su uso privado o con fines de investigación. En ningún caso se permite el uso lucrativo de este documento. Estos derechos afectan tanto al resumen de la tesis como a su contenido