7 research outputs found

    Compiler support for parallel code generation through kernel recognition

    Get PDF
    [Abstract] Summary form only given. The automatic parallelization of loops that contain complex computations is still a challenge for current parallelizing compilers. The main limitations are related to the analysis of expressions that contain subscripted subscripts, and the analysis of conditional statements that introduce complex control flows at run-time. We use the term complex loop to designate loops with such characteristics. We describe the parallelization of sequential complex loop nests using a generic compiler framework (proposed in an earlier paper [Arenaz et al., ICS'2003] ) that accomplishes kernel recognition through the analysis of the gated single assignment program representation. Specifically, we focus on an extension of this framework that enables its use as a powerful tool for gathering source code information that is relevant for the parallelization of each computational kernel. A set of example codes are analyzed in detail to illustrate the potential of our approach. Experimental results using a benchmark suite of complex loop nests are also presented

    A Novel Compiler Support for Automatic Parallelization on Multicore Systems

    Get PDF
    [Abstract] The widespread use of multicore processors is not a consequence of significant advances in parallel programming. In contrast, multicore processors arise due to the complexity of building power-efficient, high-clock-rate, single-core chips. Automatic parallelization of sequential applications is the ideal solution for making parallel programming as easy as writing programs for sequential computers. However, automatic parallelization remains a grand challenge due to its need for complex program analysis and the existence of unknowns during compilation. This paper proposes a new method for converting a sequential application into a parallel counterpart that can be executed on current multicore processors. It hinges on an intermediate representation based on the concept of domain-independent kernel (e.g., assignment, reduction, recurrence). Such kernel-centric view hides the complexity of the implementation details, enabling the construction of the parallel version even when the source code of the sequential application contains different syntactic variations of the computations (e.g., pointers, arrays, complex control flows). Experiments that evaluate the effectiveness and performance of our approach with respect to state-of-the-art compilers are also presented. The benchmark suite consists of synthetic codes that represent common domain-independent kernels, dense/sparse linear algebra and image processing routines, and full-scale applications from SPEC CPU2000.[Resumen] El uso generalizado de procesadores multin煤cleo no es consecuencia de avances significativos en programaci贸n paralela. Por el contrario, los procesadores multin煤cleo surgen debido a la complejidad de construir chips monon煤cleo que sean eficiente energ茅ticamente y tengan altas velocidades de reloj. La paralelizaci贸n autom谩tica de aplicaciones secuenciales es la soluci贸n ideal para hacer la programaci贸n paralela tan f谩cil como escribir programas para ordenadores secuenciales. Sin embargo, la paralelizaci贸n autom谩tica continua a ser un gran reto debido a su necesidad de complejos an谩lisis del programa y la existencia de inc贸gnitas durante la compilaci贸n. Este art铆culo propone un nuevo m茅todo para convertir una aplicaci贸n secuencial en su contrapartida paralela que pueda ser ejecutada en los procesadores multin煤cleo actuales. Este m茅todo depende de una representaci贸n intermedia basada en el concepto de n煤cleos independientes del dominio (p. ej., asignaci贸n, reducci贸n, recurrencia). Esta visi贸n centrada en n煤cleos oculta la complejidad de los detalles de implementaci贸n, permitiendo la construcci贸n de la versi贸n paralela incluso cuando el c贸digo fuente de la aplicaci贸n secuencial contiene diferentes variantes de las computaciones (p. ej., punteros, arrays, flujos de control complejos). Se presentan experimentos que eval煤an la efectividad y el rendimiento de nuestra aproximaci贸n con respecto al estado del arte. La serie programas de prueba consiste en c贸digos sint茅ticos que representan n煤cleos independientes del dominio comunes, rutinas de 谩lgebra lineal densa/dispersa y de procesamiento de imagen, y aplicaciones completas del SPEC CPU2000.[Resumo] O uso xeralizado de procesadores multin煤cleo non 茅 consecuencia de avances significativos en programaci贸n paralela. Pola contra, os procesadores multin煤cleo xurden debido 谩 complexidade de construir chips monon煤cleo que sexan eficientes enerx茅ticamente e te帽an altas velocidades de reloxo. A paralelizaci贸n autom谩tica de aplicaci贸ns secuenciais 茅 a soluci贸n ideal para facer a programaci贸n paralela tan sinxela como escribir programas para ordenadores secuenciais. Sen embargo, a paralelizaci贸n autom谩tica continua a ser un gran reto debido a s煤a necesidade de complexas an谩lises do programa e a existencia de inc贸gnitas durante a compilaci贸n. Este artigo prop贸n un novo m茅todo para convertir unha aplicaci贸n secuencias na s煤a contrapartida paralela que poida ser executada nos procesadores multin煤cleo actuais. Este m茅todo depende dunha representaci贸n intermedia baseada no concepto dos n煤cleos independentes do dominio (p. ex., asignaci贸n, reducci贸n, recurrencia). Esta visi贸n centrada en n煤cleos oculta a complexidade dos detalles de implementaci贸n, permitindo a construcci贸n da versi贸n paralela incluso cando o c贸digo fonte da aplicaci贸n secuencial cont茅n diferentes variantes das computaci贸ns (p. ex., punteiros, arrays, fluxos de control complejo). Pres茅ntanse experimentos que eval煤an a efectividade e o rendemento da nosa aproximaci贸n con respecto ao estado da arte. A serie de programas de proba consiste en c贸digos sint茅ticos que representan n煤cleos independentes do dominio comunes, rutinas de 谩lxebra lineal densa/dispersa e de procesamento de imaxe, e aplicaci贸ns completas do SPEC CPU2000.Ministerio de Econom铆a y Competitividad; TIN2010-16735Ministerio de Educaci贸n y Cultura; AP2008-0101

    Compiler support for parallel code generation through kernel recognition

    No full text

    Compiler Support for Parallel Code Generation through Kernel Recognition

    No full text
    The automatic parallelization of loops that contain complex computations is still a challenge for current parallelizing compilers. The main limitations are related to the analysis of expressions that contain subscripted subscripts, and the analysis of conditional statements that introduce complex control flows at run-time. We use the term complex loop to designate loops with such characteristics. In this paper, we focus on the generation of parallel code for sequential complex loop nests using a generic compiler framework (proposed in an earlier paper [3]) that accomplishes kernel recognition through the analysis of the Gated Single Assignment program representation. Specifically, we present an extension of this framework that enables its use as a powerful tool for gathering source code information that is relevant for the parallelization of each computational kernel. A set of example codes are analyzed in detail to illustrate the potential of our approach. Experimental results using a benchmark suite of complex loop nests are also presented

    Systematic analysis of the cache behavior of irregular codes

    Get PDF
    [Resumen] El rendimiento de las jerarqu铆as de memoria, en las cuales la cach茅 juega un papel fundamental, es cr铆tico en los computadores de proposito general actuales y en los sistemas embebidos, debido al creciente problema del cuello de botella del sistema de memoria. Desafortunadamente, el comportamiento de la cach茅 es muy inestable y dif铆cil de predecir. Esto es especialmente cierto en presencia de patrones de acceso irregulares, los cuales exhiben poca localidad. Tales patrones son muy comunes por ejemplo en aplicaciones en las cuales algunas referencias est谩n afectadas por sentencias condicionales o en las que el almacenamiento comprimido de matrices dispersas da lugar a la aparici贸n de indirecciones. SIn embargo, el comportamiento cach茅 en presencia de patrones de acceso irregulares no ha sido estudiado ampliamente. En esta tesis presentamos extensiones de una t茅cnica de modelado anal铆tico sistem谩tico basadas en PMEs (Ecuaciones probabil铆sticas de fallos) que permiten el an谩lisis autom谩tico del comportamiento cach茅 para c贸digos que incluyen sentencias condicionales cuyo valor de verdad puede no ser determinable en tiempo de compilaci贸n y c贸digos con referencias irregulares debidas a indirecciones, respectivamente. El modelo genera predicciones muy precisar a pesar de la irregularidad y tiene un bajo coste computacional siendo el primer modelo que reune estas dos caracter铆sticas capaz de analizar autom谩ticamente esta clase de c贸digos. Estas propiedades convierten al modelo en adecuado para servir de gu铆a en optimizaciones del compilador. La extensi贸n del modelo para c贸digos irregulares con indirecciones ha sido integrada en el compilador XARK, un compilador orientado al reconocimiento autom谩tico de kernels en aplicaciones cient铆ficas. Mostramos como explotar las potentes capacidades de extracci贸n de informaci贸n de este compilador para permitir el modelado autom谩tico de c贸digos cient铆ficos basados en bucles
    corecore