28 research outputs found
C Language Extensions for Hybrid CPU/GPU Programming with StarPU
Modern platforms used for high-performance computing (HPC) include machines
with both general-purpose CPUs, and "accelerators", often in the form of
graphical processing units (GPUs). StarPU is a C library to exploit such
platforms. It provides users with ways to define "tasks" to be executed on CPUs
or GPUs, along with the dependencies among them, and by automatically
scheduling them over all the available processing units. In doing so, it also
relieves programmers from the need to know the underlying architecture details:
it adapts to the available CPUs and GPUs, and automatically transfers data
between main memory and GPUs as needed. While StarPU's approach is successful
at addressing run-time scheduling issues, being a C library makes for a poor
and error-prone programming interface. This paper presents an effort started in
2011 to promote some of the concepts exported by the library as C language
constructs, by means of an extension of the GCC compiler suite. Our main
contribution is the design and implementation of language extensions that map
to StarPU's task programming paradigm. We argue that the proposed extensions
make it easier to get started with StarPU,eliminate errors that can occur when
using the C library, and help diagnose possible mistakes. We conclude on future
work
Reproductibilité et performance : pourquoi choisir ?
International audienceResearch processes often rely on high-performance computing (HPC), but HPC is often seen as antithetical to "reproducibility": one would have to choose between software that achieves high performance, and software that can be deployed in a reproducible fashion. However, by giving up on reproducibility we would give up on verifiability, a foundation of the scientific process. How can we conciliate performance and reproducibility? This article looks at two performance-critical aspects in HPC: message passing (MPI) and CPU micro-architecture tuning. Engineering work that has gone into performance portability has already proved fruitful, but some areas remain unaddressed when it comes to CPU tuning. We propose package multi-versioning, a technique developed for GNU Guix, a tool for reproducible software deployment, and show that it allows us to implement CPU tuning without compromising on reproducibility and provenance tracking.Les travaux de recherche dépendent souvent de calcul intensif (ou HPC, pour « high-performance computing »), mais celui-ci est souvent perçu comme incompatible avec la « reproductibilité » : il faudrait choisir entre un logiciel performant et un logiciel qui puisse être déployé de manière reproductible. Mais en renonçant à la reproductibilité, on perdrait la capacité de vérifier les résultats, qui est pourtant un fondement de la démarche scientifique. Comment peut-on concilier performance et reproductibilité ? Cet article s’intéresse à deux aspects critiques de la performance en HPC : le passage de messages (MPI) et les micro-architectures de processeurs. Le travail d’ingénierie pour atteindre la portabilité des performances a été fructueux, mais certaines zones d’ombres persistent lorsqu’il s’agit de produire du code pour un processeur spécifique. Nous proposons le multi-versionage de paquets, une technique développée pour GNU Guix, un outil de déploiement logiciel reproductible, et montrons que cela permet de produire du code optimisé pour un CPU sans renoncer à la reproductibilité et à la traçabilité
Reproduire les environnements logiciels : un maillon incontournable de la recherche reproductible
International audienceAs software has become an integral part of scientific workflows, reproducible research practices must take it into account. In what way? Archiving source code is a necessary but insufficient condition. The ability to redeploy software environments, which at first sight may be viewed as a technical detail, is in fact a requirement. This article explores tools and methods to achieve this goal.Puisque le logiciel fait dorénavant partie du processus scientifique, une démarche de recherche reproductible doit intégrer le logiciel. Mais de quelle manière ? Si l’archivage du code source des logiciels utilisés dans la recherche est une condition nécessaire, elle n’est pas suffisante. La possibilité de redéployer les environnements logiciels, qui semble de prime abord être un détail technique, est en fait incontournable. Cet article explore différents outils et méthodes pour y parvenir
DĂ©ploiements reproductibles dans le temps avec GNU Guix
Paru dans GNU/Linux Magazine France hors-série n°113 de mars 2021.National audiencePour la recherche scientifique comme pour d'autres domaines, on a souvent besoin de reproduire un environnement logiciel à l'identique non seulement sur différentes machines mais aussi à différents instants dans le temps. Docker et les machines virtuelles, qui sont souvent la solution choisie pour répondre à ce besoin, ont des limitations qu'il est facile de ne pas voir. Cet article illustre l'utilisation de GNU Guix pour des déploiements reproductibles, au bit près, dans l'espace et dans le temps
Conception et mise en œuvre de rowe, une bibliothèque de communication orientée Web
The INDES project-team of Inria has been developing HOP, a multi-tier language for Web programming. As part of the RAPP FP7 European project, the team has set out to use HOP as the lingua franca of the robotics applications developed within that project. Part of the challenge lies in the integration of existing robotics code, written using ROS or custom libraries, with HOP-based application.This document reports on the implementation of rowe, a communication library designed the fill the gap between low-level robotics C components on one hand, and other C, C++, ROS, or HOP components on the other. The library aims to be a lightweight, high-performance, ``Web-friendly'' communication library. It implements a socket-like interface that allows programs to exchange JSON objects over WebSockets. We describe the rationale, design, and implementation of rowe.L'équipe-projet Inria INDES développe HOP, un langage à plusieurs niveaux pour la programmation Web. Dans le cadre du projet européen FP7 RAPP, l'équipe s'est donné pour objectif d'utiliser HOP comme lingua franca des applications robotiques développées dans le projet. Un des défis à relever est l'intégration de code robotique existant, utilisant ROS ou des bibliothèques dédiées, avec des applications en HOP.Ce document décrit rowe, une bibliothèque de communication visant à combler le vide entre d'un côté des composants robotiques bas niveau écrits en C, et d'un autre côté des composants écrits en C++, ROS ou HOP. L'objectif est de fournir une bibliothèque de communication légère, haute performance et qui s'intègre facilement à l'environnement Web. Elle met en œuvre une interface de type socket permettant d'échanger des objets JSON sur des WebSockets. Nous décrivons les motivations, les choix de conception, et la mise en œuvre de rowe
Cooperative Data Backup for Mobile Devices
Les dispositifs informatiques mobiles tels que les ordinateurs portables, assistants personnels et téléphones portables sont de plus en plus utilisés. Cependant, bien qu'ils soient utilisés dans des contextes où ils sont sujets à des endommagements, à la perte, voire au vol, peu de mécanismes permettent d'éviter la perte des données qui y sont stockées. Dans cette thèse, nous proposons un service de sauvegarde de données coopératif pour répondre à ce problème. Cette approche tire parti de communications spontanées entre de tels dispositifs, chaque dispositif stockant une partie des données des dispositifs rencontrés. Une étude analytique des gains de cette approche en termes de sûreté de fonctionnement est proposée. Nous étudions également des mécanismes de stockage réparti adaptés. Les problèmes de coopération entre individus mutuellement suspicieux sont également abordés. Enfin, nous décrivons notre mise en oeuvre du service de sauvegarde coopérative. ABSTRACT : Mobile devices such as laptops, PDAs and cell phones are increasingly relied on but are used in contexts that put them at risk of physical damage, loss or theft. However, few mechanisms are available to reduce the risk of losing the data stored on these devices. In this dissertation, we try to address this concern by designing a cooperative backup service for mobile devices. The service leverages encounters and spontaneous interactions among participating devices, such that each device stores data on behalf of other devices. We first provide an analytical evaluation of the dependability gains of the proposed service. Distributed storage mechanisms are explored and evaluated. Security concerns arising from thecooperation among mutually suspicious principals are identified, and core mechanisms are proposed to allow them to be addressed. Finally, we present our prototype implementation of the cooperative backup servic
Guix-HPC Activity Report 2017–2018
Guix-HPC is a collaborative effort to bring reproducible software deployment to scientific workflows and high-performance computing (HPC). Guix-HPC builds upon the GNU Guix software deployment tool and aims to make it a better tool for HPC practitioners and scientists concerned with reproducible research.Guix-HPC was launched in September 2017 as a joint software development project involving three research institutes: Inria, the Max DelbrĂĽck Center for Molecular Medicine (MDC), and the Utrecht Bioinformatics Center (UBC). GNU Guix for HPC and reproducible science has received contributions from additional individuals and organizations, including Cray, Inc. and Tourbillion Technology.This report highlights key achievements of Guix-HPC between its launch date in September 2017 and today, February 2019
Rapport d’activité Guix-HPC 2019–2020
Guix-HPC is a collaborative effort to bring reproducible software deployment to scientific workflows and high-performance computing (HPC). Guix-HPC builds upon the GNUÂ Guix software deployment tool and aims to make it a better tool for HPC practitioners and scientists concerned with reproducible research. This report highlights key achievements of Guix-HPC between our previous report a year ago and today, February 2021.This report highlights developments on GNUÂ Guix proper, but also downstream on Guix-Jupyter, the Guix Workflow Language, as well as tools for end-to-end reproducible research article authoring pipelines
Rapport d'activité Guix-HPC 2018–2019
Guix-HPC is a collaborative effort to bring reproducible software deployment to scientific workflows and high-performance computing (HPC). Guix-HPC builds upon the GNU Guix software deployment tool and aims to make it a better tool for HPC practitioners and scientists concerned with reproducible research.This report highlights key achievements of Guix-HPC between our previous report a year ago and today, February 2020. This year was marked by a major milestone: the release in May 2019 of GNU Guix 1.0, seven years and more than 40,000 commits after its inception