36 research outputs found
Improving the Perfomance of a Pointer-Based, Speculative Parallelization Scheme
La paralelización especulativa es una técnica que intenta extraer paralelismo de los
bucles no paralelizables en tiempo de compilación. La idea subyacente es ejecutar el
código de forma optimista mientras un subsistema comprueba que no se viole la semántica
secuencial. Han sido muchos los trabajos realizados en este campo, sin embargo, no
conocemos ninguno que fuese capaz de paralelizar aplicaciones que utilizasen aritmética
de punteros. En un trabajo previo del autor de esta memoria, se desarrolló una librería
software capaz de soportar este tipo de aplicaciones. No obstante, el software desarrollado
sufría de una limitación muy importante: el tiempo de ejecución de las versiones paralelas
era mayor que el de las versiones secuenciales. A lo largo de este Trabajo de Fin de
Máster, se aborda esta limitación, encontrando y corrigiendo las razones de esta falta de
eficiencia, y situando el trabajo realizado en perspectiva, dentro de las contribuciones mundiales en este ámbito. Los resultados experimentales obtenidos con aplicaciones reales nos permiten afirmar
que estas limitaciones han sido solventadas, ya que obtenemos speedups de hasta de un
1.61 . Así, con la nueva versión de la librería se han llegado a obtener mejoras de hasta
el 421.4% respecto al tiempo de ejecución generado por la versión original de la librería
especulativa.InformáticaMáster en Investigación en Tecnologías de la Información y las Comunicacione
Aplicación web rutas y deportes: milrutas
El objetivo de este proyecto es la implementación de una aplicación software que permita al usuario ver los eventos y rutas disponibles, así como sus propias rutas realizadas, todo ello ha de ser posible tanto en dispositivos móviles como en ordenadores de sobremesa.Grado en Ingeniería Informátic
Design and evaluation of a Thread-Level Speculation runtime library
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
7th International Symposium on High-Level Parallel Programming and Applications (HLPP 2014)
Producción CientíficaSoftware-based, thread-level speculation (TLS) is a software technique that optimistically executes in parallel loops whose fully-parallel semantics can not be guaranteed at compile time. Modern TLS libraries allow to handle arbitrary data structures speculatively. This desired feature comes at the high cost of local store and/or remote recovery times: The easier the local store, the harder the remote recovery. Unfortunately, both times are on the critical path of any TLS system. In this paper we propose a solution that performs local store in constant time, while recover values in a time that is in the order of T , being T the number of threads. As we will see, this solution , together with some additional improvements, makes the difference between slowdowns and noticeable speedups in the speculative parallelization of non-synthetic, pointer-based applications on a real system. Our experimental results show a gain of 3.58× to 28× with respect to the baseline system, and a relative efficiency of up to, on average, 65% with respect to a TLS implementation specifically tailored to the benchmarks used.This research is partly supported by the Castilla-Leon Regional Government (VA172A12-2); Ministerio de Industria, Spain (CENIT OCEANLIDER); MICINN (Spain) and the European Union FEDER (MOGECOPP project TIN2011-25639, CAPAP-H3 network TIN2010-12011-E, CAPAP-H4 network TIN2011-15734-E)
New data structures to handle speculative parallelization at runtime
Producción CientíficaSoftware-based, thread-level speculation (TLS) is a software technique that optimistically executes in parallel loops whose fully-parallel semantics can not be guaranteed at compile time. Modern TLS libraries allow to handle arbitrary data structures speculatively. This desired feature comes at the high cost of local store and/or remote recovery times: The easier the local store, the harder the remote recovery. Unfortunately, both times are on the critical path of any TLS system. In this paper we propose a solution that performs local store in constant time, while recover values in a time that is in the order of T, being T the number of threads. As we will see, this solution, together with some additional improvements, makes the difference between slowdowns and noticeable speedups in the speculative parallelization of non-synthetic, pointer-based applications on a real system. Our experimental results show a gain of 3.58× to 28× with respect to the baseline system, and a relative efficiency of up to, on average, 65 % with respect to a TLS implementation specifically tailored to the benchmarks used.Castilla-Leon Regional Government (VA172A12-2); Ministerio de Industria, Spain (CENIT OCEANLIDER); MICINN (Spain) and the European Union FEDER (MOGECOPP project TIN2011-25639, CAPAP-H3 net- work TIN2010-12011-E, CAPAP-H4 network TIN2011-15734-E)
A Survey on Thread-Level Speculation Techniques
Producción CientíficaThread-Level Speculation (TLS) is a promising technique that allows the parallel execution of sequential code without relying on a prior, compile-time-dependence analysis. In this work, we introduce the technique, present a taxonomy of TLS solutions, and summarize and put into perspective the most relevant advances in this field.MICINN (Spain) and ERDF program of the European Union: HomProg-HetSys project (TIN2014-58876-P), CAPAP-H5 network (TIN2014-53522-REDT), and COST Program Action IC1305: Network for Sustainable Ultrascale Computing (NESUS)
Euro-Par 2014
Producción CientíficaIn this paper we propose a compile-time system that adds support for Thread-Level Speculation (TLS) into OpenMP. Our solution augments the original user code with calls to a TLS library that handles the speculative parallel execution of a given loop, with the help of a new OpenMP speculative clause for variable usage classification. To support it, we have developed a plugin-based compiler pass for GCC that augments the code of the loop. With this approach, we only need one additional code line to speculatively parallelize the code, compared with the tens or hundreds of changes needed (depending on the number of accesses to speculative variables) to manually apply the required transformations. Moreover, the plugin leads to a faster performance than the manual parallelization.This research is partly supported by the Castilla-Leon Regional Government (VA172A12-2, PIRTU); Ministerio de Industria, Spain (CENIT OCEANLIDER); MICINN (Spain) and the European Union FEDER (MOGECOPP project TIN2011-25639, CAPAP-H3 network TIN2010-12011-E, CAPAP-H4 network TIN2011-15734-E)
Sistemas de almacenamiento y generación para nivelar la potencia suministrada por un parque eólico.
En este trabajo se han analizado varias estrategias distintas que permitan a las energías renovables tener mayor protagonismo en los sistemas de generación de electricidad gracias a la disminución de la incertidumbre, que aportan al sistema de forma natural, mediante su combinación con otras fuentes de energía y/o elaborando sistemas de almacenamiento diferentes. En particular, se han propuesto soluciones para nivelar la curva de potencia entregada por un parque eólico de 50 MW, que posteriormente han sido analizadas. Además, se han definido para cada estrategia los distintos equipos de generación y almacenamiento de energía que permitan realizar la estabilización de la curva. Por último, se ha llevado a cabo un estudio económico para poder determinar que estrategia es la más rentable, que al fin y al cabo es lo que termina siendo el factor diferencial en la toma de decisiones antes de llevar a cabo cualquier proyecto, teniendo en cuenta el coste de inversión y los costes de operación y mantenimiento de los diferentes equipos empleados, el precio de la energía y los costes derivados de no producir la energía prevista.<br /
An OpenMP Extension that Supports Thread-Level Speculation
Producción CientíficaOpenMP directives are the de-facto standard for shared-memory parallel programming. However, OpenMP does not guarantee the correctness of the parallel execution of a given loop if runtime data dependences arise. Consequently, many highly-parallel regions cannot be safely parallelized with OpenMP due to the possibility of a dependence violation. In this paper, we propose to augment OpenMP capabilities, by adding thread-level speculation (TLS) support. Our contribution is threefold. First, we have defined a new speculative clause for variables inside parallel loops. This clause ensures that all accesses to these variables will be carried out according to sequential semantics. Second, we have created a new, software-based TLS runtime library to ensure correctness in the parallel execution of OpenMP loops that include speculative variables. Third, we have developed a new GCC plugin, which seamlessly translates our OpenMP speculative clause into calls to our TLS runtime engine. The result is the ATLaS C Compiler framework, which takes advantage of TLS techniques to expand OpenMP functionalities, and guarantees the sequential semantics of any parallelized loop.Castilla-Leon Regional Government (VA172A12-2, PIRTU); Ministerio de Industria, Spain (CENIT OCEANLIDER); MICINN (Spain) and the European Union FEDER (MOGECOPP project TIN2011- 25639, CAPAP-H3 network TIN2010-12011-E, CAPAPH4 network TIN2011-15734-E)
Diseño hidráulico de una instalación para una batería de flujo redox
El agravamiento de la crisis medioambiental, climática y de recursos que tiene lugaren la actualidad ha hecho patente la necesidad de un cambio en el modelo deproducción de energía global, cambiando las fuentes fósiles por otras renovables. Paracompensar la intermitencia de éstas, surgen nuevos sistemas de almacenamiento deenergía y, de entre todos ellos, unos de los más atractivos dadas sus ventajas son lasbaterías de flujo redox.Este proyecto presenta el diseño de una instalación para una batería de flujo redoxde 5 kW de potencia y 10 kW·h de capacidad. Para conseguir estas especificaciones,es necesario bombear dos fluidos desde sendos depósitos hacia la batería. Lacomposición de estos fluidos, el volumen y el caudal son los que condicionan la potenciay la capacidad del sistema electroquímico, por lo que el primer paso de este trabajo esdeterminar estos parámetros. Con los parámetros de la batería se definen los requisitosque deben cumplir tanto la estación de bombeo (diámetros, materiales que se puedenemplear, etc.) como la estructura metálica donde se dispone la instalación.También se desarrollan distintos cálculos hidráulicos para seleccionar todos loselementos comerciales que componen la instalación (instrumentación, bombas,depósitos…) y garantizar su correcto funcionamiento en cuanto a caudales y pérdidasde presión. Así mismo, se ha elaborado un presupuesto detallado de los distintoscomponentes y se ha realizado un análisis de las medidas de seguridad y salud que sedeben adoptar tanto para el personal como para la propia instalación.En el trabajo, además, se detallan los resultados experimentales obtenidos de unabatería de menor tamaño, analizando las medidas de pérdida de presión en un electrodoporoso de fieltro de carbono, los ciclos de carga/descarga de la batería y la generaciónde electrolitos.El desarrollo de este proyecto ha tenido lugar en el Laboratorio de Investigación enFluidodinámica y Tecnologías de la Combustión (LIFTEC), donde se pretende construirla instalación diseñada, y posteriormente evaluar la operación de la batería de flujoredox.<br /