3 research outputs found

    Compile-time support for thread-level speculation

    Get PDF
    Una de las principales preocupaciones de las ciencias de la computaci贸n es el estudio de las capacidades paralelas tanto de programas como de los procesadores que los ejecutan. Existen varias razones que hacen muy deseable el desarrollo de t茅cnicas que paralelicen autom谩ticamente el c贸digo. Entre ellas se encuentran el inmenso n煤mero de programas secuenciales existentes ya escritos, la complejidad de los lenguajes de programaci贸n paralelos, y los conocimientos que se requieren para paralelizar un c贸digo. Sin embargo, los actuales mecanismos de paralelizaci贸n autom谩tica implementados en los compiladores comerciales no son capaces de paralelizar la mayor铆a de los bucles en un c贸digo [1], debido a la dependencias de datos que existen entre ellos [2]. Por lo tanto, se hace necesaria la b煤squeda de nuevas t茅cnicas, como la paralelizaci贸n especulativa [3-5], que saquen beneficio de las potenciales capacidades paralelas del hardware y arquitecturas multiprocesador actuales. Sin embargo, 茅sta y otras t茅cnicas requieren la intervenci贸n manual de programadores experimentados. Antes de ofrecer soluciones alternativas, se han evaluado las capacidades de paralelizaci贸n de los compiladores comerciales, exponiendo las limitaciones de los mecanismos de paralelizaci贸n autom谩tica que implementan. El estudio revela que estos mecanismos de paralelizaci贸n autom谩tica s贸lo alcanzan un 19% de speedup en promedio para los benchmarks del SPEC CPU2006 [6], siendo este un resultado significativamente inferior al obtenido por t茅cnicas de paralelizaci贸n especulativa [7]. Sin embargo, la paralelizaci贸n especulativa requiere una extensa modificaci贸n manual del c贸digo por parte de programadores. Esta Tesis aborda este problema definiendo una nueva cl谩usula OpenMP [8], llamada 驴speculative驴, que permite se帽alar qu茅 variables pueden llevar a una violaci贸n de dependencia. Adem谩s, esta Tesis tambi茅n propone un sistema en tiempo de compilaci贸n que, usando la informaci贸n sobre los accesos a las variables que proporcionan las cl谩usulas OpenMP, a帽ade autom谩ticamente todo el c贸digo necesario para gestionar la ejecuci贸n especulativa de un programa. Esto libera al programador de modificar el c贸digo manualmente, evitando posibles errores y una tediosa tarea. El c贸digo generado por nuestro sistema enlaza con la librer铆a de ejecuci贸n especulativamente paralela desarrollada por Estebanez, Garc铆a-Yag眉ez, Llanos y Gonzalez-Escribano [9,10].Departamento de Inform谩tica (Arquitectura y Tecnolog铆a de Computadores, Ciencias de la Computaci贸n e Inteligencia Artificial, Lenguajes y Sistemas Inform谩ticos

    Design and evaluation of a Thread-Level Speculation runtime library

    Get PDF
    En los pr贸ximos a帽os es m谩s que probable que m谩quinas con cientos o incluso miles de procesadores sean algo habitual. Para aprovechar estas m谩quinas, y debido a la dificultad de programar de forma paralela, ser铆a deseable disponer de sistemas de compilaci贸n o ejecuci贸n que extraigan todo el paralelismo posible de las aplicaciones existentes. As铆 en los 煤ltimos tiempos se han propuesto multitud de t茅cnicas paralelas. Sin embargo, la mayor铆a de ellas se centran en c贸digos simples, es decir, sin dependencias entre sus instrucciones. La paralelizaci贸n especulativa surge como una soluci贸n para estos c贸digos complejos, posibilitando la ejecuci贸n de cualquier tipo de c贸digos, con o sin dependencias. Esta t茅cnica asume de forma optimista que la ejecuci贸n paralela de cualquier tipo de c贸digo no de lugar a errores y, por lo tanto, necesitan de un mecanismo que detecte cualquier tipo de colisi贸n. Para ello, constan de un monitor responsable que comprueba constantemente que la ejecuci贸n no sea err贸nea, asegurando que los resultados obtenidos de forma paralela sean similares a los de cualquier ejecuci贸n secuencial. En caso de que la ejecuci贸n fuese err贸nea los threads se detendr铆an y reiniciar铆an su ejecuci贸n para asegurar que la ejecuci贸n sigue la sem谩ntica secuencial. Nuestra contribuci贸n en este campo incluye (1) una nueva librer铆a de ejecuci贸n especulativa f谩cil de utilizar; (2) nuevas propuestas que permiten reducir de forma significativa el n煤mero de accesos requeridos en las peraciones especulativas, as铆 como consejos para reducir la memoria a utilizar; (3) propuestas para mejorar los m茅todos de scheduling centradas en la gesti贸n din谩mica de los bloques de iteraciones utilizados en las ejecuciones especulativas; (4) una soluci贸n h铆brida que utiliza memoria transaccional para implementar las secciones cr铆ticas de una librer铆a de paralelizaci贸n especulativa; y (5) un an谩lisis de las t茅cnicas especulativas en uno de los dispositivos m谩s vanguardistas del momento, los coprocesadores Intel Xeon Phi. Como hemos podido comprobar, la paralelizaci贸n especulativa es un campo de investigaci贸n activo. Nuestros resultados demuestran que esta t茅cnica permite obtener mejoras de rendimiento en un gran n煤mero de aplicaciones. As铆, esperamos que este trabajo contribuya a facilitar el uso de soluciones especulativas en compiladores comerciales y/o modelos de programaci贸n paralela de memoria compartida.Departamento de Inform谩tica (Arquitectura y Tecnolog铆a de Computadores, Ciencias de la Computaci贸n e Inteligencia Artificial, Lenguajes y Sistemas Inform谩ticos
    corecore