4 research outputs found

    Push-Pull Messaging: a high-performance communication mechanism for commodity SMP clusters

    Get PDF
    Push-Pull Messaging is a novel messaging mechanism for high-speed interprocess communication in a cluster of symmetric multi-processors (SMP) machines. This messaging mechanism exploits the parallelism in SMP nodes by allowing the execution of communication stages of a messaging event on different processors to achieve maximum performance. Push-Pull Messaging facilitates further improvement on communication performance by employing three optimizing techniques in our design: (1) Cross-Space Zero Buffer provides a unified buffer management mechanism to achieve a copy-less communication for the data transfer among processes within a SMP node. (2) Address Translation Overhead Masking removes the address translation overhead from the critical path in the internode communication. (3) Push-and-Acknowledge Overlapping overlaps the push and acknowledge phases to hide the acknowledge latency. Overall, Push-Pull Messaging effectively utilizes the system resources and improves the communication speed. It has been implemented to support high-speed communication for connecting quad Pentium Pro SMPs with 100 Mbit/s Fast Ethernet.published_or_final_versio

    Traçage logiciel d'applications utilisant un processeur graphique

    Get PDF
    Dans le domaine informatique, les architectures matérielles tendent vers un niveau de parallélisme toujours plus élevé, de manière à pouvoir traiter de plus en plus d’informations simultanément. L’émergence des processeurs multicoeurs a fait naître de nombreux problèmes liés à la concurrence des algorithmes, ce qui a contribué au développement d’outils performants permettant d’analyser finement l’activité des systèmes parallèles. Cependant, les outils de diagnostic de problèmes et d’analyse de performance pour les systèmes parallèles restent encore peu adaptés à l’étude des processeurs graphiques (GPU). Cela est dû aux grandes disparités dans les architectures existantes et au très haut niveau de parallélisme qu’il est nécessaire de gérer lorsque l’on traite avec des processeurs graphiques. Il est donc toujours relativement complexe d’analyser l’exécution d’un programme sur processeur graphique, alors même que ces accélérateurs matériels connaissent un gain très important de popularité en raison de leur structure se prêtant bien au calcul de haute performance et à l’apprentissage automatique, entre autres. Dans le cadre de ce projet de recherche, nous cherchons à exploiter des méthodes de traçage qui ont prouvé leur efficacité pour l’analyse de programmes s’exécutant sur processeur central (CPU) multicoeurs, afin d’analyser l’activité d’un ou plusieurs processeurs graphiques au cours de l’exécution d’un programme. L’objectif est, grâce au traçage, de fournir des outils appropriés permettant de détecter de possibles problèmes de performance. Grâce à LTTng, un traceur performant pour le système d’exploitation GNU/Linux, nous avons créé un utilitaire permettant de générer des traces unifiées rendant compte de l’activité du processeur graphique pour des programmes basés sur l’interface de programmation HSA. Cette interface, commune à plusieurs acteurs majeurs du marché, se donne comme objectif d’accélérer et faciliter la communication entre processeurs de calcul dans un contexte hétérogène, ce qui en fait une plateforme intéressante pour analyser l’activité d’un processeur graphique. Notre solution, nommée LTTng-HSA, se base sur un ensemble de bibliothèques logicielles pouvant être préchargées à l’exécution d’un programme, de manière à insérer une instrumentation destinée à mieux comprendre le fonctionnement du processeur graphique. Les traces générées au format CTF proposent des informations sur les durées d’exécution des noyaux de calcul, sur les appels de fonctions de l’interface de HSA et donnent accès à diverses métriques venues du processeur graphique. Ce mémoire présente également des solutions de visualisation de ces traces, ainsi que les techniques de fusion et de tri aboutissant à l’obtention d’une trace unifiée représentant l’activité du processeur graphique. LTTng-HSA permet d’obtenir des informations utiles sur la performance d’un programme parallèle basé sur HSA, sans avoir à intervenir pour modifier le programme et avec un faible surcoût temporel. C’est donc un outil intéressant pour trouver l’origine de problèmes de performance dans le cadre d’un programme accéléré par matériel.----------ABSTRACT: In recent years, computer architectures have become increasingly parallel. More than ever, processors can now carry out multiple operations simultaneously. The rise of multi-core processors has brought a whole new set of concurrency-related problems, but has also helped us design specific analysis tools for parallel systems. However, many of these tools are focused on a multi-core CPU architecture and are not really adapted to GPU-oriented performance analysis, mostly because of the very high level of parallelism and multiple architectures that need to be taken into account when dealing with GPUs. Therefore, while GPU computing is becoming ubiquitous in fields such as highperformance computing and machine learning, we still lack analysis tools for these hardware accelerators. This research project is focused on using software tracing methods for GPU analysis purposes. Tracing methods have already proved successful in multi-core CPU contexts. Our main research objective is to provide powerful trace-based tools to help find performance issues for GPU-accelerated programs. We used LTTng, a highly efficient tracing framework for GNU/Linux systems, to create a tool that can generate unified GPU-oriented traces for HSA-based programs. HSA is a cross-vendor standard that aims to streamline communications between compute devices in a heterogeneous context. Therefore, HSA is a good choice as a platform for GPU performance analysis. LTTng-HSA, our solution, is a set of libraries that are meant to be preloaded when executing a GPU-accelerated program. Each of these libraries automatically inserts interesting tracepoints that allow us to generate CTF traces providing information about HSA API function calls, GPU kernel timestamps or GPU hardware metrics. LTTng-HSA also includes helpful views for these traces. The process that leads to a unified GPU-oriented trace, which involves trace merging and sorting, is explained in this thesis. LTTng-HSA can easily be used to pinpoint performance issues in HSA-based parallel programs. Moreover, our solution has low overhead and does not require any modification to the program being traced. Therefore, LTTng-HSA is a helpful tool for the analysis of GPUaccelerated software

    Managing Concurrent Access for Shared Memory Active Messages

    No full text
    Passing messages through shared memory plays an important role on symmetric multiprocessors and on Clumps. The management of concurrent access to message queues is an important aspect of design for shared memory messagepassing systems. Using both microbenchmarks and applications, this paper compares the performance of concurrent access algorithms for passing active messages on a Sun Enterprise 5000 server. The paper presents a new lock-free algorithm that provides many of the advantages of nonblocking algorithms while avoiding the overhead of true non-blocking behavior. The lock-free algorithm couples synchronization tightly to the data structure and demonstrates application performance superior to all others studied. The success of this algorithm implies that other practical problems might also benefit from a reexamination of the nonblocking literature. 1. Introduction The ability to pass messages through shared memory plays an important role both in applications and in the operating..
    corecore