10 octobre 2013

[Interview] Kevin Coulomb à propos de sa formation Programmation Parallèle

Kevin Coulomb donne la formation programmation parallèle chez Human Coders. Il travaille en tant qu’ingénieur de recherche et développement pour SysFera, société éditrice de logiciel spécialisée dans les questions de HPC.
Il développe, que ce soit pour SysFera (VISHNU) ou dans des projets externes (ViTE, GTG), des codes open source liés au parallélisme et à la distribution des calculs principalement dans les langages C et C++.

 

Human Coders: Salut Kevin, tout d’abord, peux-tu te présenter en quelques mots ?

Bonjour, je suis ingénieur en R&D à SysFera depuis 3ans. J’ai une formation d’ingénieur informatique spécialisé dans le parallélisme et la régulation du calcul distribué suivie à l’ENSEIRB. Je participe (quand j’ai le temps) à des projets open-sources liés à la thématique.

 

HC: Qu’est-ce que la programmation parallèle ? Qui l’utilise ?

Il y a plusieurs types d’utilisateurs, ceux qui ont des grosses machines et qui veulent en tirer parti (super-calculateur), ceux qui ont plusieurs machines dont chacune ne peut pas faire tourner un gros code, mais correctement divisé le code peut tourner en parallèle (grid computing), ceux qui ont une hausse importante de la taille des données en entrée et ne peuvent s’offrir une machine suffisamment puissante pour continuer à exécuter leurs calculs, mais aussi ceux qui veulent améliorer le temps pour obtenir le résultat de leur code plus vite (optimisation). Pour répondre à ce qu’est la programmation parallèle, je présente 2 notions : le parallélisme et la distribution. Le parallélisme consiste à effectuer simultanément des ensembles d’instructions (par exemple au lieu de calculer la météo à Lyon puis à Paris, on calcule la météo à Lyon et la météo à Paris en même temps sur deux serveurs différents), ainsi, le temps pour avoir le résultat est plus rapide. La distribution correspond à répartir les calculs sur différents processeurs.

On s’en doute peu, mais la programmation parallèle est utilisée dans de nombreux domaines pour réaliser des simulations : en météorologie pour prévoir le temps qu’il fera dans la semaine, en automobile pour simuler les déformations d’une voiture suite à un choc, en aéronautique pour simuler l’écoulement des flux d’air autour du fuselage de l’avion, mais également en pharmaceutique pour essayer de trouver de nouveaux médicaments… ou encore plus simplement dans beaucoup d’applications que vous pouvez trouver classiquement sur votre PC pour accélérer les traitements ou réaliser plusieurs opérations en même temps. Il y a énormément d’applications à ces techniques de programmation parallèle.

 

HC: Comment es-tu tombé dans la programmation parallèle ?

J’ai découvert les idées associées à la programmation parallèle lors d’un projet étudiant où j’ai participé à la réalisation d’un visualisateur de traces d’exécution (ViTE). Des chercheurs en informatique avaient des grands codes parallèles et leur faisaient générer des traces d’exécution de plusieurs Go (chaque processeur indiquait régulièrement quel était son état au cours du temps). Ensuite, ils avaient besoin de l’analyser visuellement ce que faisait effectivement l’algorithme implémenté au cours de son exécution pour comprendre ce qui se passait, puis faire du debug algorithmique, comprendre s’ils utilisaient bien leurs ressources et pourquoi il se passait certains phénomènes… Ayant trouvé les problématiques de l’algorithmique parallèle passionnante j’ai décidé de me spécialiser dedans.

 

HC: Peux-tu nous présenter la formation programmation parallèle  ? Comment se déroule-t-elle ?

Le but de la formation est d’introduire plusieurs notions primordiales pour la programmation parallèle et de proposer des manières différentes d’aborder les problèmes par rapport à l’approche classique utilisée pour réaliser un programme séquentiel.

La formation programmation parallèle est très axée sur la mise en pratique et la manipulation des concepts présentés. Nous ne faisons pas qu’étudier des API, mais principalement les concepts qu’elles représentent,  le tout, suivi de mises en pratique sur des cas concrets. Le premier jour est axé rappel architecture classiques et systèmes, puis une présentation d’architectures parallèles et une introduction à l’algorithmique parallèle (sous forme de travaux pratiques). Le second jour est orienté sur les threads avec une demi-journée présentant les concepts et l’API des pthreads en C, suivie d’une après-midi de travaux pratiques. La troisième journée présente les aspects programmation par passage de message avec la présentation de la norme MPI, encore une fois suivie de travaux pratiques toute l’après-midi.

 

HC: Pourquoi as-tu décidé de donner des formations ?

L’intérêt de faire des formations est de pouvoir rester en contact avec l’actualité des thématiques qui m’intéressent et c’est toujours stimulant de pouvoir avoir des questions/opinions auxquelles on a pas forcément pensé pour aborder la problématique. Le parallélisme pouvant être utilisé dans tout un tas de domaines variés (astronomie, biologie, mécanique, électro-magnétisme, etc …), donner des formations est toujours unique et cela permet de rencontrer des personnes aux univers variés et d’enrichir la formation de leurs problématiques.

 

HC: Quel est ton meilleur souvenir de formation ?

Les meilleurs souvenirs sont lors de discussions informelles à la fin de la formation, où des stagiaires sont enthousiastes et sont pressés de rentrer pour mettre en pratique certaines idées qui leurs sont venues grâce à la formation pour améliorer certains codes.

 

HC: Merci !

Merci à vous

Retrouvez le programme complet de la formation Programmation Parallèle sur Human Coders Formations.