Compilation techniques for automatic extraction of parallelism and locality in heterogeneous architectures

Use this link to cite
http://hdl.handle.net/2183/15854Collections
- Teses de doutoramento [2219]
Metadata
Show full item recordTitle
Compilation techniques for automatic extraction of parallelism and locality in heterogeneous architecturesAuthor(s)
Directors
Rodríguez Álvarez, GabrielArenaz Silva, Manuel
Date
2015Center/Dept./Entity
Universidade da Coruña. Departamento de Electrónica e SistemasAbstract
[Abstract]
High performance computing has become a key enabler for innovation in science
and industry. This fact has unleashed a continuous demand of more computing
power that the silicon industry has satisfied with parallel and heterogeneous
architectures, and complex memory hierarchies. As a consequence, software
developers have been challenged to write new codes and rewrite the old
ones to be efficient in these new systems. Unfortunately, success cases are scarce
and require huge investments in human workforce. Current compilers generate
peak-peformance binary code in monocore architectures. Following this victory,
this thesis explores new ideas in compiler design to overcome this challenge with
the automatic extraction of parallelism and locality. First, we present a new compiler
intermediate representation based on diKernels named KIR, which is insensitive
to syntactic variations in the source code and exposes multiple levels of
parallelism. On top of the KIR, we build a source-to-source approach that generates
parallel code annotated with compiler directives: OpenMP for multicores
and OpenHMPP for GPUs. Finally, we model program behavior from the point
of view of the memory accesses through the reconstruction of affine loops for sequential
and parallel codes. The experimental evaluations throughout the thesis
corroborate the effectiveness and efficiency of the proposed solutions. [Resumen]La computación de altas prestaciones se ha convertido en un habilitador clave
para la innovación en la ciencia y la industria. Este hecho ha propiciado una
demanda continua de más poder computacional que la industria del silicio ha
satisfecho con arquitecturas paralelas y heterogéneas, y jerarquías de memoria
complejas. Como consecuencia, los desarrolladores de software han sido desafiados
a escribir códigos nuevos y reescribir los antiguos para que sean eficientes
en estos nuevos sistemas. Desafortunadamente, los casos de éxito son escasos y
requieren inversiones enormes en fuerza de trabajo. Los compiladores actuales
generan código binario con rendimiento máximo en las arquitecturas mononúcleo.
Siguiendo esta victoria, esta tesis explora nuevas ideas en el diseño de compiladores
para superar este reto con la extracción automática de paralelismo y
localidad. En primer lugar, presentamos una nueva representación intermedia de
compilador basada en diKernels denominada KIR, la cual es insensible a variaciones
sintácticas en el código de fuente y expone múltiples niveles de paralelismo.
Sobre la KIR, construimos una aproximación fuente-a-fuente que genera código
paralelo anotado con directivas: OpenMP para multinúcleos y OpenHMPP para
GPUs. Finalmente, modelamos el comportamiento del programa desde el punto
de vista de los accesos de memoria a través de la reconstrucción de bucles afines
para códigos secuenciales y paralelos. Las evaluaciones experimentales a lo largo
de la tesis corroboran la efectividad y eficacia de las soluciones propuestas. [Resumo]A computación de altas prestacións converteuse nun habilitador clave para a innovación
na ciencia e na industria. Este feito propiciou unha demanda continua
de máis poder computacional que a industria do silicio satisfixo con arquitecturas
paralelas e heteroxéneas, e xerarquías de memoria complexas. Como consecuencia,
os desenvolvedores de software foron desafiados a escribir códigos novos e
reescribir os antigos para que sexan eficientes nestes novos sistemas. Desafortunadamente,
os casos de éxito son escasos e requiren investimentos enormes en
forza de traballo. Os compiladores actuais xeran código binario con rendemento
máximo nas arquitecturas mononúcleo. Seguindo esta vitoria, esta tese explora
novas ideas no deseño de compiladores para superar este reto coa extracción automática
de paralelismo e localidade. En primeiro lugar, presentamos unha nova
representación intermedia de compilador baseada en diKernels denominada KIR,
a cal é insensible a variacións sintácticas no código fonte e expón múltiples niveis
de paralelismo. Sobre a KIR, construímos unha aproximación fonte-a-fonte
que xera código paralelo anotado con directivas: OpenMP para multinúcleos e
OpenHMPP para GPUs. Finalmente, modelamos o comportamento do programa
desde o punto de vista dos accesos de memoria a través da reconstrución de bucles
afíns para códigos secuenciais e paralelos. As avaliacións experimentais ao
longo da tese corroboran a efectividade e eficacia das solucións propostas.
Keywords
Compiladores (Programas de ordenador)
Paralelismo (Informática)
Paralelismo (Informática)
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