Fiche « Compilateur »

Christian Fabre et moi même avons été sollicités pour la rédaction de la fiche « Compilateur » pour les éditions « techniques de l’ingénieur ». L’objet de l’article est d’expliquer ce qu’est un compilateur, de montrer les technologies qu’il utilise et ce qu’on peut en faire. Nous avons essayé de prendre une approche plus large que la description qu’on peut trouver habituellement (par exemple dans cette page wikipedia)

L’article est disponible via ce lien

Tous les commentaires sont les bienvenus !

Résumé : Un compilateur est un logiciel permettant de transformer un programme source (écrit dans un langage de programmation) dans un autre langage de programmation cible, le plus souvent dans le langage d’un processeur permettant d’exécuter le dit programme. Nous verrons dans cet article les grands principes d’un compilateur, les technologies utilisées ainsi que d’autres usages de la compilation.

Publicités

Recherche étudiant pour thèse ! Urgent !

Je recherche un candidat pour une thèse qui commencera le plus tôt possible. Le résumé du sujet est le suivant :

Les librairies de calcul scientifique sont intensivement utilisées pour le calcul scientifiques haute performance. Beaucoup de noyaux de calculs sont clairement identifiés (algèbre linéaire, transformée de Fourier, convolutions, etc). Linpack, FFTW, Spiral, MAGMA font partie des librairies connues dans ce domaine.

La performance de ces librairies dépend des données qu’elle manipule, et l’impact des données manipulées est plus grand que l’efficacité des optimisations statique de code, dont l’optimisation n’est valable que pour un seul type de données.

Le sujet de cette thèse sera de trouver une façon d’exprimer un algorithme de calcul, et un moyen de générer le code dynamiquement en fonction des données qu’il manipule afin de générer un code qui utilisera toutes les ressources d’un processeur dans le plus grand nombre de cas possible.

Les architectures visées seront des architectures avec plusieurs niveau de parallélisme : ILP, pipeline long, multithread, multi-coeur.

Cette thèse aura lieu à Grenoble, au CEA, l’endroit idéal pour les activités calcul haute performance et compilation. Avoir une expérience dans le domaine du calcul intensif serait un plus.

Le candidat devra avoir un niveau master ou école d’ingénieur en informatique, connaître l’architecture des ordinateurs et la compilation.

Me contacter par mail pour candidater : mailto:Henri-Pierre.Charles@cea.fr

 

Optimisation de code grâce à la restructuration des données

J’ai eu le plaisir de participer au jury de thèse de Christopher Haine à Bordeaux.

Résumé de la thèse : Bien penser la structuration de données est primordial pour obtenir de hautes performances, alors que les processeurs actuels perdent un temps considérable à attendre la complétion de trans actions mémoires. En particulier les localités spatiales et
temporelles de données doivent être optimisées. Cependant, les transformations de structures de données ne sont pas proprement explorées par les compilateurs, en raison de la difficulté que pose l’évaluation de performance des transformations potentielles. De plus, l’optimisation des structures de données est chronophage, sujette à erreur et les transformations à considérer sont trop nombreuses pour être implémentées à la main dans l’optique de trouver une version de code efficace.

On propose de guider les programmeurs à travers le processus de restructuration de données grâce à un retour utilisateur approfondi, tout d’abord en donnant une description multidimensionnelle de la structure de donnée initiale, faite par une
analyse de traces mémoire issues du binaire de l’application de l’utilisateur, dans le but de localiser des problèmes de stride au niveau instruction, indépendamment du langage d’entrée. On choisit de focaliser notre étude sur les transformations de structure de données, traduisibles dans un formalisme proche du C pour favoriser la compréhension de l’utilisateur, que l’on applique et évalue sur deux cas d’étude qui sont des applications
réelles, à savoir une simulation d’ondes cardiaques et une simulation de chromo- dynamique quantique sur réseau, avec différents jeux d’entrées. La prédiction de performance de
différentes transformations est conforme à 5% près aux versions réécrites à la main.

Mots clés: Profilage de performance, Restructuration de données,
Vectorisation, Réécriture de binaire

La thèse à été présentée devant le jury suivant:

Henri-Pierre CHARLES Directeur de Rercherche CEA-LIST Grenoble Rapporteur
Allen MALONY Professeur, Universite de l’Oregon  Rapporteur
Emmanuel JEANNOT Directeur de Recherche, Inria Examinateur
Pascale ROSSE-LAURENT Ingénieur Atos Examinateur
Olivier AUMAGE Chargé de Recherche, Inria  Encadrant
Denis BARTHOU Directeur de Recherche, Inria Directeur de Thèse

Compte rendu des rencontres francophones de la compilation

Merci à tous les participants qui ont résisté à la chaleur et ont assisté aux exposés de ces rencontres sur la compilation. Quelques ajustement ont été fait à l’ordre du jour.

La copie des présentation des exposés seront bientôt disponibles sur le site des rencontres : http://compilfr.ens-lyon.fr/douzieme-rencontre-compilation/

IMG_20170622

Publication du programme des rencontres francophones de la compilation

Le programme des rencontres francophones de la compilation est finalisé. Inscription sur le site suivant : Inscription : http://gipco-adns.com/site/5956/inscription+aux+journees+compilation

Toutes les informations sur le site du workshop http://compilfr.ens-lyon.fr/douzieme-rencontre-compilation/

Mercredi 21 Juin:

  • Session 1: 14h-16h: Architectures en rupture
    • Denis Dutoit & Eric Gutmuller (CEA – 1h): 3D Stacking et Caches in NOC
    • David Furoret (Upmem – 1h): Architecture PIM et problématiques
  • Pause
  • Session 2: 16h45 – 18h15: Architectures en rupture (suite)
    • Benoit dupont-de-Dinechin (Kalray – 1h): Titre à définir
    • Rabah Bouziane (PhD – 30 min): Silent stores optimization to reduce write activities to non-volatile memory
  • Diner: 19h

Jeudi 22 Juin :

  • Session 3: 8h30-10h: Instrumentation
    • Antoine Moynault & Pierrick Bouvier (Tutorial – 1h30): QEMU plugin
  • Session 4: 10h40-12h: Obfuscation/debugging
    • Serge Guelton (QuarksLab – 40 min): Obfuscations avancées
    • Emmanuelle Saillard (Post-doc – 40 min): Titre à préciser
  • Déjeuner
  • Session 5: 13h30-15h20: GPU
    • Florian Gouin (PhD – 40 min): Méthodologie de placement d’algorithmes de traitement d’images sur architectures massivement parallèles de type GPU
    • Victor Lomuller (CodePlay – 1h): C++ sur accélérateurs: Utilisation de Clang pour le support de SYCL
  • Social event (bus à 15h30)
  • Diner: 19h30

Vendredi 23 Juin:

  • Session 6: 8h30-10h: Compilation polyédrique
    • Christophe Alias & Alexandru Plesco (Conf – 30 min): Compacting Affine Control with Semantic Factorizations (HLS, polyhedral model, FPGA)
    • Manuel Selva & Julien Pages (Post-doc – 1h): Optimisation polyédrique à l’exécution dans le contexte de langages dynamiques
  • Session 7: 10h40-12h30: Etudiants en recherche d’emploi
    • Yon Fernandez de Retana (PhD – 40 min): Sea-of-Nodes : Sémantique et preuve d’optimisations
    • Vaddina Kameswar Rao (PhD – 30): Energy profiling of embedded systems – experiences learnt so far
    • Nasrine Damouche (Post-doc — 40 min): Titre à définir

Appel a participer : journées de la communauté française de compilation

Les 12ème rencontres de la communauté française de compilation sont en préparation. Les infos: ermitage

Inscrivez vous !

 

 

Appel à participation au Workshop « Raised Challenges by NVRAM »

Vous êtes invités à assister au workshop « Raised Challenges by NVRAM »

Lundi 29 mai après midi et Mardi 30 Mai 2017

Inria, 2 Rue Simone IFF, 75012 Paris https://goo.gl/maps/JtnFhA1qaSS2  Room JL Lions 2 (C014)

Formulaire d’inscription http://goo.gl/WBZnLj

Date limite d’inscription : 22 Mai

Inscription gratuite.

Programme détaillé à télécharger : Worshop-NVRAM-Program-Final-V3

Programme résumé :

  • Kevin Marquet Inria :Impact of emerging memories on various fields of
    computer science ; introduction to the workshop
  • Lionel Torres LIRRM : From Embedded World to High Performance
    Computing using STT-MRAM
  • Stéphane Gros and Yeter Akgul Evaderis : Maximize energy efficiency in
    normally-off system using NVRAM
  • Erven Rohou Inria : NVRAM: New Opportunities for Compilers
  • Patrick Demichel HPE : The role of NVM in the future of HPC workloads
  • Ivan Miro-Panades CEA : L-IOT : A flexible Platform for ultra-low
    power IoT
  • Ismail Oukid SAP : Towards a single-level database architecture on
    byte-addressable non-volatile memory
  • Michel Harrand CEA :Breaking the Memory Bottleneck in Computing
    Applications with Emerging Memory Technologies: a System, Design, and
    Technology Perspective
  • Guillaume Salagnac Inria : Peripheral State Persistence For
    Transiently Powered Systems

Program Committee : Henri-Pierre Charles, Kevin Marquet, Fabrice Rastello

Soutenance de thèse de Nelson LOSSING

Nelson Lossing a soutenu sa thèse intitulée « Compilation pour machines à mémoire répartie : une approche multipasse » le 3 Avril 2017.

Le jury était composé par :

  • M Henri-Pierre Charles CEA-LIST, Rapporteur
  • M Frederic Desprez Inria, Rapporteur
  • Mme Elisabeth Brunet Telecom SudParis, Examinatrice
  • Mme Christine Eisenbeis Inria, Examinatrice
  • M Antoniu Pop University of Manchester, Examinateur
  • Mme Corinne Ancourt MINES ParisTech, Maître de thèse
  • M François Irigoin MINES ParisTech, Directeur de thèse

La photo pendant la lecture du rapport de soutenance pour lui remettre le titre de docteur de l’Université de recherche Paris Sciences et Lettres :

2017-04-13-Lossing-Nelson-Soutenance

Le résumé de la thèse est le suivant :

Les grilles de calculs sont des architectures distribuées couramment utilisées pour l’exécution de programmes scientifiques ou de simulation. Les programmeurs doivent ainsi acquérir de nouvelles compétences pour pouvoir tirer partie au mieux de toutes les ressources offertes. Ils doivent apprendre à écrire un code parallèle, et, éventuellement, à gérer pour une mémoire distribuée. L’ambition de cette thèse est de proposer une chaîne de compilation permettant de générer automatiquement un code parallèle distribué en tâches à partir d’un code séquentiel. Pour cela, le compilateur source-à-source PIPS est utilisé. Notre approche a deux atouts majeurs : 1) une succession de transformations simples et modulaires est appliquée, permettant à l’utilisateur de comprendre les différentes transformations appliquées, de les modifier,  de les réutiliser dans d’autres contextes, et d’en ajouter de nouvelles; 2) une preuve de correction de chacune des transformations est donnée, permettant de garantir que le code généré est équivalent au code initial. Cette génération automatique de code parallèle distribué de tâches offre également une interface de programmation simple pour les utilisateurs. Une version parallèle du code est automatiquement généré à partir d’un code séquentiel annoté. Les expériences avec deux machines parallèle, effectuées sur des noyaux de Polybench, montrent des
accélération moyenne égal à la moitié du nombre de processus lancés.

DCAHPO workshop program

We have published the program of the first DCAHPO workshop. https://dcahpo.wordpress.com/

This will take place before the CGO conference in Austin http://cgo.org/cgo2017/

Attend to the first session to hear about dynamic compilation and come to the second session to discuss about dynamic compilation and hardware support for heterogeneity, dynamic compilation and optimization.