1,721,005 research outputs found

    High-performant and easy-to-use solutions for complex parallel problems

    Get PDF
    [Abstract]: In the multicore architectures and distributed systems available today, exploitingapplication parallelism has become a necessity to achieve high-performance levels.Being able to take advantage of all the resources of these systems through parallelprogramming is not trivial, and commonly requires great eort on the part ofthe programmer and a high level of knowledge of the technology and systems used.Although there is multiple research in the eld of parallel application development,many of the current solutions have signicant limitations in terms of their applicability,performance and/or usability. This Thesis introduces new tools to support thedevelopment of parallel applications in the form of software libraries with the aim ofreducing their development and maintenance costs. These tools provide ecient solutionsto complex problems, internally making use of advanced parallel techniquesto achieve high performance, while remaining user-friendly. The rst two proposalsare parallel skeleton libraries that aim to solve divide-and-conquer problems, especiallythose with large imbalances and high levels of recursion. The rst does itfor shared memory systems, while the second does it for hybrid distributed-sharedmemory systems. Finally, a new thread-level speculative parallelization model andits implementation in a library are presented. This strategy makes use of speculativeparallel execution techniques to allow the parallelization of almost any loop,even those with dependencies that are initially dicult to parallelize, with hardlyany modications to the original code. The language used for the implementationsis C++. This widely used language provides an excellent performance level while allowing general programming through templates and other abstractions, which areperfect for developing advanced libraries with great applicability.[Resumen]: En las arquitecturas multinúcleo y sistemas distribuidos disponibles en la actualidad,explotar el paralelismo de las aplicaciones es necesario para alcanzar altos niveles de rendimiento. Lograr aprovechar todos los recursos de estos sistemas mediante la programación paralela no es algo trivial, y comúnmente se requiere un gran esfuerzo por parte del programador y un alto conocimiento de la tecnología y de los sistemas utilizados. A pesar de que existen múltiples investigaciones en el campo de desarrollo de aplicaciones paralelas, muchas de las soluciones actuales tienen limitaciones significativas en cuanto a su aplicabilidad, rendimiento y/o usabilidad. En esta Tesis se presentan nuevas herramientas de soporte al desarrollo de aplicaciones paralelas en forma de librerías de software con el objetivo de reducir así sus costes de desarrollo y mantenimiento. Estas herramientas proporcionan soluciones eficientes a problemas complejos, haciendo uso internamente de avanzadas técnicas paralelas para alcanzar altos rendimientos, mientras se mantiene de fácil uso para el usuario.Las dos primeras propuestas son librerías paralelas basadas en esqueletos que tienen como objetivo resolver problemas de divide y vencerás, especialmente aquellos desbalanceados y con altos niveles de recursividad. La primera lo hace para sistemas de memoria compartida, mientras que la segunda lo hace para sistemas híbridos de memoria distribuida-compartida. Finalmente, se presenta un nuevo modelo de paralelización especulativa a nivel de hilos y su implementación en una librería. Esta estrategia hace uso de técnicas de ejecución paralela especulativa para permitir la paralelización de casi cualquier bucle, incluso aquellos con dependencias que los hacen inicialmente difíciles de paralelizar, sin apenas necesitar realizar modificaciones en el código original. El lenguaje empleado para las implementaciones es C++, pues es un lenguaje ampliamente utilizado que proporciona un muy buen nivel de rendimiento,al mismo tiempo que permite programación genérica mediante plantillas y otras abstracciones, las cuales son perfectas para el desarrollo de librerías avanzadas de gran aplicabilidad.[Resumo]: Nas arquitecturas multinúcleo e sistemas distribuídos dispoñibles na actualidade,explotar o paralelismo das aplicacións é necesario para alcanzar altos niveis de rendemento. Poder aproveitar todos os recursos destes sistemas a través da programación paralela non é nada trivial, e normalmente require un gran esforzo por partedo programador e un alto nivel de coñecemento da tecnoloxía e dos sistemas empregados.Aínda que existen múltiples investigacións no campo do desenvolvementode aplicacións paralelas, moitas das solucións actuais teñen limitacións significativas en canto a súa aplicabilidade, rendemento e/ou usabilidade. Esta Tese presentanovas ferramentas para apoiar o desenvolvemento de aplicacións paralelas en formade librarías de software co obxectivo de reducir os seus custos de desenvolvemento emantemento. Estas ferramentas proporcionan solucións eficientes a problemas complexos,facendo uso internamente de técnicas paralelas avanzadas para alcanzar altos rendementos, mantendo un uso amigable para o usuario. As dúas primeiras propostas son librerías paralelas baseadas en esqueletos que teñen como obxectivo resolver problemas de divide e vencerás, especialmente aqueles desbalanceados e con altos niveis de recursividade. A primeira faino para sistemas de memoria compartida, mentresque a segunda faino para sistemas híbridos de memoria distribuída-compartida.Finalmente, preséntase un novo modelo de paralelización especulativa a nivel de fíos xunto coa súa implementación nunha librería. Esta estratexia fai uso de técnicas deexecución paralela especulativa para permitir a paralelización de case calquera bucle,incluso aqueles con dependencias que os fan inicialmente difíciles de paralelizar, sen apenas necesitar de modificacións no código orixinal. A linguaxe empregada paraas implementacións é C++, pois trátase dunha linguaxe amplamente utilizada que proporciona un moi bo nivel de rendemento, ao tempo que permite programación xenérica mediante modelos e outras abstraccións, perfectos para o desenvolvemento de librarías avanzadas de gran aplicabilidade

    Desarrollo de una aplicación para el análisis automatizado de datos de producción científica

    Get PDF
    [Resumen] En este proyecto se ha elaborado una aplicación Web destinada al colectivo de usuarios que desean o necesitan saber información relacionada con citas de revistas de artículos científicos. Dada la gran cantidad de datos que existen por la red y la dificultad para realizar un análisis de forma rápida, reunir la información resulta un tanto tedioso y complejo. Con esta nueva aplicación que integra datos de diversas fuentes de forma transparente al usuario, se intenta ofrecer un modo de uso sencillo y rápido de trabajar. La idea principal es un sistema que permita al usuario buscar autores según su nombre y apellidos, para posteriormente observar sus datos y trabajar con ellos. La aplicación permitirá filtrar por diversos criterios de forma que se pueda observar los datos que se necesiten y no siempre los datos globales. También proporcionará la posibilidad de descargar los datos en formato CSV, facilitando de este modo las consultas y operaciones sobre el dato, cuando es necesario profundizar más en él de lo que una interfaz pueda permitir. Como la mayoría de las aplicaciones Web, cubrirá las típicas necesidades como son registro para información personalizada, atajos a perfiles de autores mediante el uso de favoritos, etc. El conjunto de datos utilizados vendrá de Scopus, Web of Science, Google Scholar y GGS, consiguiendo una amplia cobertura independientemente de la información que tenga el autor buscado. Algunas de estas fuentes de datos serán accedidas mediante una API o mediante técnicas de extracción de información, y otras mediante el uso de documentos locales. La propuesta trata de conseguir que esta integración de datos sea abstracta al usuario, ofreciendo toda la información unificada. La aplicación se implementó en un PC con prestaciones estándar, con sistema operativo Linux, y fue desarrollada con varios lenguajes de programación (Python, HMTL y JavaScript) sobre el Framework Django.Traballo fin de grao (UDC.FIC). Enxeñaría informática. Curso 2018/201

    Modelado analítico del comportamiento de memorias caché

    No full text
    [Resumen] El principal cuello de botella que limita las tasas de computación que pueden alcanzar los sistemas actuales radica en la diferencia creciente de velocidad entre el procesador y las memorias, Para responder a este problemas se ha dotado a los computadores de una jerarquía de niveles de memoria donde los niveles más cercanos al procesador, las memorias caché, juegan un papel fundamental. Las aproximaciones más típicas para el estudio de estas memorias, las simulaciones guiadas por trazas y la monitorización hardware, tienen problemas de flexibilidad y de requerimientos de tiempos de computación elevados, además de dar poco información sobre el comportamiento de los programas. Una tercera técnica, el modelado analítico, supera esto problemas pero tradicionalmente, ha sido poco precisa. En esta tesis proponemos una serie de técnicas, para el modelo analítico del comportamiento de estas memorias. Realizamos un desarrollo sistemático y modular que posibilita su aplicación uncódigo cualquiera siguiendo metodos bien estructurados. Además, soportamos patrones de acceso tantos regulares como irregulares, habiendo sido estos últimos muy poco estudiados hasta la fecha, a pesar de revestir un gran interés por su complejidad y su efecto negativo sobre el rendimiento del sistema. Ilustramos nuestra técnica aplicándose a una serie de códigos típicos que incluyen patrones irregulares siguiendo un orden de complejidad creciente. Así mismo demostramos tanto la utilidad (al proponer mejoras en los códigos o las memorias) como la precisión del modelo. Esta última es mucho mayor que la de los modelos analíticos del comportamiento de memorias propuestas hata el momento, pese a que modelamos códigos mucho más complejos que los empleados en la bibliografía

    A Portable High-Productivity Approach To Program Heterogeneous Systems

    No full text
    The exploitation of heterogeneous resources is becoming increasingly important for general purpose computing. Unfortunately heterogeneous systems require much more effort to be programmed than the traditional single or even multi-core computers most programmers are familiar with. Not only new concepts but also new tools with different restrictions must be learned and applied. Additionally many of these approaches are specific to one vendor or device resulting in little portability or rapid obsolescence for the applications built on them. Open standards for programming heterogeneous systems such as OpenCL contribute to improve the situation but the requirement of portability has led to a programming interface more complex than that of other approaches. In this paper we present a novel library-based approach to programming heterogeneous systems that couples portability with ease of use. Our evaluations indicate that while the performance of our library called Heterogeneous Programming Library (HPL) is on par with that of OpenCL the current standard for portable heterogeneous computing the programming effort required by HPL is 3 to 10 times smaller than that of OpenCL based on the authors' implementation of five benchmarks

    Easy Dataflow Programming in Clusters with UPC++ DepSpawn

    Get PDF
    Versión final aceptada de: https://doi.org/10.1109/TPDS.2018.2884716This version of the article has been accepted for publication, after peer review. Personal use of this material is permitted. Permission from IEEE must be obtained for all other uses, in any current or future media, including reprinting/republishing this material for advertising or promotional purposes, creating new collective works, for resale or redistribution to servers or lists, or reuse of any copyrighted component of this work in other works. The Version of Record is available online at: https://doi.org/10.1109/TPDS.2018.2884716[Abstract]: The Partitioned Global Address Space (PGAS) programming model is one of the most relevant proposals to improve the ability of developers to exploit distributed memory systems. However, despite its important advantages with respect to the traditional message-passing paradigm, PGAS has not been yet widely adopted. We think that PGAS libraries are more promising than languages because they avoid the requirement to (re)write the applications using them, with the implied uncertainties related to portability and interoperability with the vast amount of APIs and libraries that exist for widespread languages. Nevertheless, the need to embed these libraries within a host language can limit their expressiveness and very useful features can be missing. This paper contributes to the advance of PGAS by enabling the simple development of arbitrarily complex task-parallel codes following a dataflow approach on top of the PGAS UPC++ library, implemented in C++. In addition, our proposal, called UPC++ DepSpawn, relies on an optimized multithreaded runtime that provides very competitive performance, as our experimental evaluation shows.This research was supported by the Ministerio de Economía, Industria y Competitividad of Spain and FEDER funds of the EU (TIN2016-75845-P), and by the Xunta de Galicia co-founded by the European Regional Development Fund (ERDF) under the Consolidation Programme of Competitive Reference Groups (ED431C 2017/04) as well as under the Centro Singular de Investigación de Galicia accreditation 2016-2019 (ED431G/01). We also acknowledge the Centro de Supercomputación de Galicia (CESGA) for the use of their computers.Xunta de Galicia; ED431C 2017/04Xunta de Galicia; ED431G/0

    The New UPC++ DepSpawn High Performance Library for Data-Flow Computing with Hybrid Parallelism

    Get PDF
    This versión of the contribution has been accepted for publication, after peer review but is not the Version of Record and does not reflect post-acceptance improvements, or any corrections. The Version of Record is available online at: https://doi.org/10.1007/978-3-031-08751-6_55. Use of this Accepted Version is subject to the publisher’s Accepted Manuscript terms of use https://www.springernature.com/gp/open-research/policies/accepted-manuscript-terms[Abstract] Data-flow computing is a natural and convenient paradigm for expressing parallelism. This is particularly true for tools that automatically extract the data dependencies among the tasks while allowing to exploit both distributed and shared memory parallelism. This is the case of UPC++ DepSpawn, a new task-based library developed on UPC++ (Unified Parallel C++), a library for parallel computing on a Partitioned Global Address Space (PGAS) environment, and the well-known Intel TBB (Threading Building Blocks) library for multithreading. In this paper we present and evaluate the evolution of this library after changing its engine for shared memory parallelism and adapting it to the newest version of UPC++, which differs very strongly from the original version on which UPC++ DepSpawn was developed. As we will see, while keeping the same high level of programmability, the new version is on average 9.3% faster than the old one, the maximum speedup being 66.3%.This research was supported by the Ministry of Science and Innovation of Spain (PID2019-104184RB-I00/AEI/10.13039/501100011033), and by the Xunta de Galicia co-founded by the European Regional Development Fund (ERDF) under the Consolidation Programme of Competitive Reference Groups (ED431C 2021/30). We acknowledge also the support from the Centro Singular de Investigación de Galicia “CITIC”, funded by Xunta de Galicia and the European Union (European Regional Development Fund- Galicia 2014–2020 Program), by grant ED431G 2019/01. Finally, we acknowledge the Centro de Supercomputación de Galicia (CESGA) for the use of their computersXunta de Galicia; ED431C 2021/30Xunta de Galicia; ED431G 2019/0

    A Software Cache Autotuning Strategy for Dataflow Computing with UPC++ DepSpawn

    Get PDF
    This is the accepted version of the following article: B. B. Fraguela, D. Andrade. A software cache autotuning strategy for dataflow computing with UPC++ DepSpawn. Computational and Mathematical Methods, 3(6), e1148. November 2021, which has been published in final form at http://dx.doi.org/10.1002/cmm4.1148. This article may be used for noncommercial purposes in accordance with the Wiley Self-Archiving Policy [http://www.wileyauthors.com/self-archiving].[Abstract] Dataflow computing allows to start computations as soon as all their dependencies are satisfied. This is particularly useful in applications with irregular or complex patterns of dependencies which would otherwise involve either coarse grain synchronizations which would degrade performance, or high programming costs. A recent proposal for the easy development of performant dataflow algorithms in hybrid shared/distributed memory systems is UPC++ DepSpawn. Among the many techniques it applies to provide good performance is a software cache that minimizes the communications among the processes involved. In this article we provide the details of the implementation and operation of this cache and we present an autotuning strategy that simplifies its usage by freeing the user from having to estimate an adequate size for this cache. Rather, the runtime is now able to define reasonably sized caches that provide near optimal behavior.This research was funded by the Ministry of Science and Innovation of Spain (TIN2016-75845-P and PID2019-104184RB-I00, AEI/FEDER/EU, 10.13039/501100011033), and by the Xunta de Galicia co-funded by the European Regional Development Fund (ERDF) under the Consolidation Programme of Competitive Reference Groups (ED431C 2017/04). The authors acknowledge also the support from the Centro Singular de Investigación de Galicia “CITIC,” funded by Xunta de Galicia and the European Union (European Regional Development Fund- Galicia 2014-2020 Program), by grant ED431G 2019/01. They also acknowledge the Centro de Supercomputación de Galicia (CESGA) for the use of its computersXunta de Galicia; ED431C 2017/04Xunta de Galicia; ED431G/0

    Going Beyond Counting First Authors in Author Co-citation Analysis

    Get PDF
    The present study examines one of the fundamental aspects of author co-citation analysis (ACA) - the way co-citation counts are defined. Co-citation counting provides the data on which all subsequent statistical analyses and mappings are based, and we compare ACA results based on two different types of co-citation counting - the traditional type that only counts the first one among a cited work's authors on the one hand and a non-traditional type that takes into account the first 5 authors of a cited work on the other hand. Results indicate that the picture produced through this non-traditional author co-citation counting contains more coherent author groups and is therefore considerably clearer. However, this picture represents fewer specialties in the research field being studied than that produced through the traditional first-author co-citation counting when the same number of top-ranked authors is selected and analyzed. Reasons for these effects are discussed

    High-performance dataflow computing in hybrid memory systems with UPC++ DepSpawn

    Get PDF
    [Abstract]: Dataflow computing is a very attractive paradigm for high-performance computing, given its ability to trigger computations as soon as their inputs are available. UPC++ DepSpawn is a novel task-based library that supports this model in hybrid shared/distributed memory systems on top of a Partitioned Global Address Space environment. While the initial version of the library provided good results, it suffered from a key restriction that heavily limited its performance and scalability. Namely, each process had to consider all the tasks in the application rather than only those of interest to it, an overhead that naturally grows with both the number of processes and tasks in the system. In this paper, this restriction is lifted, enabling our library to provide higher levels of performance. This way, in experiments using 768 cores the performance improved up to 40.1%, the average improvement being 16.1%.Ministerio de Ciencia e Innovación; TIN2016-75845-PMinisterio de Ciencia e Innovación; PID2019-104184RB-I00Ministerio de Ciencia e Innovación; 10.13039/501100011033Xunta de Galicia; ED431C 2017/0
    corecore