Programme de la journée
9h | Accueil | ||
9h30 | Antoine Miné, conférencier invité |
![]() |
Vérification par interprétation abstraite des logiciels embarqués concurrents.
Les méthodes formelles sont de plus en plus fréquemment employées pour s'assurer de la correction des logiciels critiques. Parmi ces méthodes, l'interprétation abstraite est bien adaptée à une utilisation industrielle car elle permet la construction d'analyseurs statiques capables d'inférer des propriétés de programmes directement sur le code source, de manière automatique, approchée (pour gagner en efficacité) et néanmoins sûre (par l'utilisation de sur-approximations). Néanmoins, peu d'analyseurs savent traiter de manière sûre les logiciels concurrents, car ils nécessitent de prendre en compte un nombre très grand d'entrelacements d'exécutions. Dans cet exposé, nous présenterons AstréeA, une extension aux logiciels embarqués concurrents de l'analyseur Astrée, conçu originellement pour la certification de l'absence d'erreur à l'exécution dans des logiciels embarqués C synchrone. Nous présenterons en particulier notre méthode d'analyse modulaire thread-à-thread permettant de sur-approximer efficacement tous les entrelacements possibles, les abstractions utilisées pour inférer les interactions entre threads, la prise en compte des mécanismes de priorités utilisés dans les systèmes temps-réels, et nos expériences d'analyse de logiciels avioniques concurrents. |
10h30 | Pause café | ||
11h | Alix Trieu |
|
Validation Vérifiée de Traduction d'Analyses
Statiques
Motivated by applications to security and high efficiency, we propose an automated methodology for validating on low-level intermediate representations the results of a source-level static analysis. Our methodology relies on two main ingredients: a relative-safety checker, an instance of a relational verifier which proves that a program is “safer” than another, and a transformation of programs into defensive form which verifies the analysis results at runtime. We prove the soundness of the methodology, and provide a formally verified instantiation based on the Verasco verified C static analyzer and the CompCert verified C compiler. We experiment with the effectiveness of our approach with client optimizations at RTL level, and static analyses for cache-based timing side-channels and memory usage at pre-assembly levels. |
11h30 | Frédéric Dabrowski | Textual Alignment in SPMD Programs | |
12h | Gabriel Scherer |
![]() |
Speculative optimisation without fear
JIT compilers for dynamic langage crucially rely on
*speculative* optimizations, that generate code under
optimistic assumptions that may be invalidated later
during the program run. The generated code contains
dynamic tests (guards) to check that the hypotheses hold,
and enough information to de-optimize (bail out) when they
fail.
Les compilateurs Just-in-time (JIT) pour langages dynamiques
reposent de façon essentielle sur les optimisations *spéculatives*,
qui consistent à générer du code sous des hypothèses optimistes qui
peuvent être contredites pendant l'exécution du programme. Le code
généré contient des tests dynamiques les hypothèses sont valides, et
des informations pour dé-optimiser (bail out) si les tests
échouent. |
12h30 | Déjeuner | Royal Jussieu, 1 rue des écoles |
|
14h | Ronan Keryell, Conférencier invité | SYCL C++ for heterogeneous computing: from single-source modern C++ down to FPGA | |
15h | Pause | ||
15h15 | Pierre Leca |
![]() |
Objets actifs pour BSP |
15h45 | Timothy Bourke |
![]() |
Un compilateur vérifié pour Lustre
Les langages synchrones sont utilisés pour programmer des logiciels de contrôle-commande d'applications critiques. On s'intéresse ici à la formalisation et la preuve, dans l'assistant de preuve Coq, d'un générateur de code impératif pour un noyau du langage Lustre. Nous spécifions et vérifions un générateur de code simple qui gère les traits principaux de Lustre: l'échantillonnage, les nœuds et les délais. Le générateur intègre le compilateur CompCert pour produire un code assembleur qui calcule successivement les valeurs spécifiées par le modèle sémantique flot de données. Les garanties offertes par CompCert nous permettent d'étendre notre théorème de correction sur toute la chaîne de compilation des programmes Lustres jusqu'à l'assembleur. Ce travail est fait en collaboration avec Lélio Brun, Pierre-Évariste Dagand, Xavier Leroy, Marc Pouzet et Lionel Rieg. |
16h15 | Arvid Jakobsson |
![]() |
Automatic Cost Analysis for Imperative BSP
programs
Bulk Synchronous Parallel (BSP) is a model for parallel computing with predictable scalability. BSP has a cost model: programs can be assigned a cost which describes its behavior on any parallel machine. However, the programmer has to manually derive this cost. This paper describes an automatic method for the derivation of BSP program costs, based on classic cost analysis and approximation of polyhedral integer volumes. Our method requires and analyzes programs with textually aligned synchronization and textually aligned, polyhedral communication. We obtain cost-formulas that are parametric in the input parameters of the program and the parameters of the BSP computer. |
16h45-18h | Pot et discussions |