L’utilisation
efficace des architectures parallèles actuelles et
prévisibles nécessite un renouvellement ou, au
moins, une évolution des méthodes, langages et
outils actuels de programmation. Dans cet exposé, on a
choisi d’examiner X10, un des nouveaux langages de
programmation conçus dans ce but.
X10 est un langage de programmation de type orienté-objet,
dont la syntaxe est inspirée de Java mais compilé
et n’utilisant pas de machine virtuelle. X10
définit nativement des opérateurs et structures
utiles à la programmation parallèle. Pour la mise
en oeuvre d’un parallélisme de tâches,
on trouvera notamment les notions de ≪ place ≫ (analogue à
un processus MPI) et d’≪ activité ≫ (analogue
à un thread), une activité pouvant être
démarrée et contrôlée
localement au sein d’une place ou à distance
depuis une autre place. Pour la distribution des données,
X10 définit une zone mémoire répartie
entre les différentes places, accessible via un adressage
global, associée à une zone mémoire
locale et privée par place (X10 fait partie de la famille de
langages PGAS).
Dans une première partie, on présentera ces
différentes notions proposées en les illustrant
par des exemples simples de code. Ensuite, on exposera
différentes expériences de programmation
réalisées avec le langage X10,
caractérisant plusieurs situations possibles :
développement d’un nouveau code, traduction totale
ou partielle de code existant (type passage de messages – MPI
– et/ou type ≪ multi-threads ≫ – OpenMP),
contrôle depuis X10 de code séquentiel
C/C++/Fortran. On exposera notamment les performances obtenues, les
forces et faiblesses du langage mises en évidence ainsi que
les difficultés rencontrées lors de ces tests.
Après une formation d’ingénieur en
génie civil et une thèse en
mathématiques appliquées, Marc Tajchman occupe au
CEA un poste d’architecte logiciel et de
développeur de plateformes de simulation
numériques. Depuis quelques années, il
s’intéresse plus particulièrement
à l’évolution des outils de
programmation destinés aux nouvelles architectures
matérielles pour le calcul.