Journées nationales du GDR Génie de la Programmation et du Logiciel 2018

 

Comme sous-groupe du GDR GPL, le groupe compilation sera présent aux journées nationales du GDR GPL 2018, à Grenoble

Lieu et Date

Sessions Compil/LAHMA

Comme l’année dernière nos sessions sont communes avec le groupe LAHMA, voici le programme:

Première session Mardi 12/6 à 11H

  • Sylvain Collange (Irisa, Rennes) CPUs and GPUs: getting the best of both worlds

GPUs are now established parallel accelerators for high-performance
computing applications and machine learning. Part of their success is
based on their so-called SIMT execution model. SIMT exposes a simple
scalar multi-thread programming model. At runtim, it binds together
threads of parallel applications so they perform the same instruction at
the same time, in order to execute their instructions on
energy-efficient SIMD units. Unfortunately, current GPU architectures
lack the flexibility to work with standard instruction sets like x86 or
ARM and standard compiler back-ends. Their implementation of SIMT
requires special instruction sets with control-flow reconvergence
annotations, and they seldom support complex control flow like
exceptions, context switches and thread migration.

We will see how we can generalize the SIMT execution model of GPUs to
general-purpose processors and multi-thread applications, and then use
it to design new CPU-GPU hybrid cores. These hybrid cores will form the
building blocks of heterogeneous architectures, that will combine
CPU-like cores and GPU-like cores which all share the same instruction
set and programming model. Beside improving programmability of parallel
architectures, generalized SIMT opens the way for a whole spectrum of
new architectures, hybrids of latency-oriented superscalar processors
and throughput-oriented SIMT GPUs.

  • Sylvain Jubertie (LIFO, Orléans) Abstraction des structures de données

La structuration des données en structures/classes associée au
paradigme de la programmation orientée objet ne correspond pas
toujours à la structuration la plus adaptée à l’architecture et donc à
l’obtention des meilleures performances. Par exemple, les données
telles que les images sont généralement stockées sous forme de
tableaux de pixels RGB (Array of Structures : AoS) mais leur
traitement par des unités vectorielles (SIMD) nécessite une
transformation en structure de tableaux (Structure of Arrays : SoA)
pour être efficace. Nous avons proposé une bibliothèque C++ basée sur
le mécanisme des templates afin de permettre une transformation de la
structure de données à la compilation sans avoir à modifier le code de
calcul. Cette approche offre une structuration virtuelle de type AoS
au développeur, mais l’implémentation concrète peut être au format SoA
ou AoSoA.

Nous proposons une extension à cette approche permettant de combiner
différentes organisations pour une même structure. Dans le cas d’une
image RGB avec un canal alpha pour la transparence, les composantes de
couleurs RGB peuvent être organisées au format AoSoA dans un vecteur
et les composantes alpha peuvent être stockées dans un vecteur séparé.
Cette extension est par exemple utile si toutes les données ne sont
pas utilisées par un algorithme afin de réduire les communications
entre la mémoire et le processeur. Dans l’exemple précédent si un
traitement ne s’applique qu’aux composantes de couleurs, les
composantes alpha ne sont pas transmises ce qui permet de réduire de
25% les transferts de données.

Nous revenons finalement sur les problèmes rencontrés sur différentes
architectures et avec différents compilateurs. En effet, la gestion
des templates C++ varie en fonction des compilateurs et le code généré
est parfois très différent de celui obtenu avec une implémentation ad
hoc.

  • Mathias Bourgoin (LIFO, Orléans) Quoi de neuf dans SPOC?

SPOC est une bibliothèque de haut-niveau pour la programmation GPGPU
avec le langage OCaml. Elle s’appuie sur un langage dédié intégré à
OCaml pour l’expression de noyaux de calcul exécutés sur des
accélérateurs de calcul : Sarek. Dans cette présentation, nous
discuterons des nouveautés inclues dans SPOC et plus spécifiquement
autour de Sarek : extension du langage, compilation hybride pour la
portabilité, représentation interne extensible dynamiquement, nouveaux
tests.

Deuxième session Jeudi 14/6 à 11H

  • Emmanuelle Saillard (Inria Bordeaux): Vérification des applications MPI par une analyse statique/dynamique

Dans les applications parallélisées avec un ou plusieurs
modèles, il est compliqué voire impossible de prédire ce qu’il va se
produire au niveau de l’application et dans quel ordre (ex, ordre des
communications). De plus, lorsqu’une erreur se produit, il est
généralement difficile d’en trouver la cause. Afin d’aider au mieux
les développeurs travaillant dans le domaine du calcul haute
performance, il est nécessaire de mettre à leur disposition des outils
fiables et performants permettant de détecter efficacement les erreurs
de parallélisme (ex, blocages). La plateforme PARCOACH (PARallel
COntrol flow Anomaly CHecker) propose une analyse statique (à la
compilation) qui étudie le flot de contrôle et de données d’un
programme couplée avec une analyse dynamique (à l’exécution) pour
aider les développeurs à détecter les blocages dans les applications
parallèles (MPI, MPI+OpenMP, OpenMP, CUDA, UPC). La combinaison
statique/dynamique permet de donner des informations précises aux
développeurs sur le comportement général du code, indépendamment du
jeu d’entrée et de vérifier ces informations lorsque celui-ci est
connu. Si un blocage est sur le point de se produire lors de
l’exécution d’un programme, PARCOACH stoppe celui-ci, renvoie un
message d’erreur précis (ligne de code,..) et offre la possibilité
d’explorer l’état du programme avec un débogueur. Lors de cette
présentation, je détaillerai l’analyse statique/dynamique de PARCOACH
qui détecte les blocages dans les programmes MPI.

  • David Monniaux (Verimag, Grenoble): What’s more to say about polyhedra?

Cousot & Halbwachs proposed in 1978 inferring convex polyhedra as invariants of numeric programs.

In this talk, we wish to revisit two aspects of that seminal work:

(1) Cousot & Halbwachs enforced the convergence of the Kleene
iterations using a widening operator, a heuristic ensuring a fixed
point within a finite number of steps, albeit not necessarily the
least one (which may anyway not exist). Hence, their analysis is
incomplete: it may fail to detect a polyhedral invariant that could
prove the desired properties.

Is polyhedral analysis necessarily incomplete? In other words, is the
existence of a suitable inductive polyhedral invariant undecidable,
given a linear transition system and a safety property?

To our best knowledge this has never been proved. We’ll present a
proof of undecidability if there are polynomial transitions.

(2) Since 1978, libraries for computing over convex polyhedra have
appeared (Polylib, Polka, NewPolka, CDD, PPL…), all based on the
dual description of convex polyhedra, both as the solution set of a
system of linear (in)equalities and as the convex hull of vertices,
rays and lines.

At VERIMAG, we developed a library, VPL
(https://github.com/VERIMAG-Polyhedra/VPL) based on a constraint-only
representation. It uses either Fourier-Motzkin elimination or
parametric linear programming to perform projections and convex hulls.

  • Thierry Gautier (LIP, Lyon): Open MP for non dummies (titre provisoire)

Comments are closed