François Galea`s Homepage

Transcription

François Galea`s Homepage
François GALEA
Curriculum vitæ
Table des matières
1
2
3
Etat civil et Coordonnées
1
Parcours universitaire et professionnel
1
2.1
Ingénieur-chercheur au CEA LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
Post-doctorat
2.3
Doctorat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4
Situations antérieures
2.5
Stages de recherche
3.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
Optimisation en Curiethérapie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1
Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2
Le problème d'optimisation des temps d'arrêt
3.1.3
Le problème de placement des cathéters
3.1.4
Travaux eectués
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
L'aectation quadratique en deux et trois dimensions
. . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1
L'aectation quadratique en deux dimensions (QAP)
3.2.2
L'aectation quadratique en trois dimensions (Q3AP) . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
3.3
Minimisation lexicographique paramétrique sur union de polyèdres entiers . . . . . . . . . . . . . . . .
3.4
Programmation mixte en nombres entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5
Algorithmique parallèle sur cluster
3.6
Expérimentations sur architectures SIMD (SSE, Cell)
3.7
Partitionnement/placement/routage, et cadencement d'applications embarquées . . . . . . . . . . . .
3.8
Publications
3.9
5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Activité de recherche
3.1
4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
1
2
2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Logiciels réalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9.1
Isodose 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9.2
Glop : The Generic Linear Optimization Package . . . . . . . . . . . . . . . . . . . . . . . . .
3.9.3
Bob++
3.9.4
Solveur Q3AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9.5
Solveur lexicographique de programmes linéaires entiers paramétriques
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .
Activité d'enseignement
3
3
4
4
4
5
5
5
6
6
7
7
7
8
10
10
10
10
11
11
11
4.1
Module de système d'exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2
Module de programmation parallèle et distribuée . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3
Module de recherche opérationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4
Module d'algorithmique 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5
Récapitulatif des heures d'enseignement
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tâches collectives
11
12
12
12
13
13
5.1
Organisation de séminaires internes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2
Administration des machines utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3
Administration d'un serveur de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4
Mise en place et administration d'un cluster de calcul
1
. . . . . . . . . . . . . . . . . . . . . . . . . .
13
13
13
14
6
1
Compétences
14
Etat civil et Coordonnées
Nom
GALEA
Prénom
François
Date naiss.
29 mars 1976 (34 ans)
Situation
Ingénieur-chercheur
Adresse
70 boulevard Ornano
F-75018 Paris
2
Tél.
+33 (0)6 80 06 58 39
E-mail
[email protected]
Parcours universitaire et professionnel
2.1 Ingénieur-chercheur au CEA LIST
Depuis janvier 2010, je travaille en tant qu'ingénieur-chercheur dans le Laboratoire des fondements des Systèmes
Temps-Réel Embarqués (LaSTRE) du CEA LIST, sur le site du Centre d'Études Nucléaires de Saclay.
2.2 Post-doctorat
D'avril à novembre 2009, j'ai été engagé sur un contrat de post-doctorant à l'Université de VersaillesSaint Quentinen-Yvelines, eectuant mes activités sur le site de l'INRIA Saclay, dans l'équipe ALCHEMY.
Entre octobre 2006 et mars 2009, j'ai travaillé en tant qu'Ingénieur de recherche, nancé par le projet ANR CHOC
(cf. section 3 page suivante). Ma fonction était nancée par deux des intervenants au projet :
le laboratoire PRi SM, à l'Université de VersaillesSaint Quentin-en-Yvelines, qui m'a nancé entre octobre 2006
et mars 2008,
le laboratoire G-SCOP à Grenoble-INP, qui me nance depuis avril 2008.
Mon travail a été eectué à la fois au sein de l'équipe OPALE (Optimisation Parallèle) au PRi SM, et à G-SCOP à
Grenoble, du fait de mon double nancement. L'essentiel de mes activités a été eectué sur le site du PRi SM, avec
visites fréquentes à G-SCOP.
2.3 Doctorat
Eectué au PRi SM de 2002 à 2006, sous la direction de Catherine Roucairol.
Titre : Optimisation des traitements en curiethérapie .
Soutenu le 19 septembre 2006, avec la mention
très honorable,
devant le jury composé de :
Horst Hamacher, Professeur, Université de Kaiserslautern (président du jury)
Gerd Finke, Professeur, Université Grenoble I (rapporteur)
Ivan Lavallée, Professeur, Université Paris VIII (rapporteur)
Catherine Roucairol, Professeur, Université Versailles-Saint-Quentin (directrice de thèse)
Eva K. Lee, Associate Professor, Georgia Institute of Technology
Karine Deschinkel, Maître de conférences, Université Versailles-Saint-Quentin
Bertrand Le Cun, Maître de conférences, Université de Paris X Nanterre
2.4 Situations antérieures
2010-
Ingénieur-chercheur au CEA LIST.
2009-2009
Post doctorant à l'INRIA Saclay.
2
2006-2009
Ingénieur de recherche nancé par l'ANR Choc.
2005-2006
Demi-poste d'ATER.
2002-2005
Bourse MENRT
2001-2002
DEA Méthodes Informatiques des Systèmes Industriels, mention
2000-2001
Maîtrise d'informatique, mention
bien.
bien.
UVSQ.
UVSQ.
Durant le second semestre, employé 16h par semaine dans la société Linux Motor. Support technique
1999-2000
aux utilisateurs de la distribution Linux Mandrake.
Licence d'informatique, mention
. UVSQ.
1998-1999
Deug MIAS (Mathématiques et Informatique Appliquées aux Sciences). UVSQ.
1997-1998
Emploi à plein temps d'analyste-concepteur dans la SSII Micropole. Développement d'applications
très bien
client-serveur avec Powerbuilder sur des SGBD Sybase et SQL Server.
1995-1997
DUT informatique, option Informatique et Génie Informatique. IUT d'Orsay.
2.5 Stages de recherche
avril-septembre 2002 : stage de DEA au laboratoire PRi SM de l'UVSQ. Etude d'un modèle d'optimisation de
plans de traitement en curiethérapie à bas débit de dose. Simulation graphique des phénomènes physiques étudiés.
juin-août 2001 : après l'obtention de ma maîtrise, j'ai travaillé sur un stage sous la direction de Dominique Barth
(PRi SM). Le but était la réalisation d'un prototype logiciel de routeur optique à déection, puis l'expérimentation et
la comparaison de diérentes stratégies de routage.
3
Activité de recherche
Mon activité de recherche se situe dans les thématiques suivantes :
optimisation : programmation linéaire en continu ou en nombres entiers, programmation non-linéaire en nombres
entiers,
algorithmique parallèle : parallélisation d'algorithmes d'optimisation sur machines multi-coeurs et à mémoire
distribuée.
Dans le cadre de ma thèse, j'ai travaillé sur un problème d'optimisation en curiethérapie, que je présente en
section 3.1 page suivante.
J'ai été ensuite embauché en tant qu'ingénieur de recherche pour participer au projet ANR CHOC.
Le projet CHOC (CHallenge en Optimisation Combinatoire) se place dans le domaine des Grands dés applicatifs
proposé par l'ANR-CICG. Choc a été labellisé en 2006 pour 3 ans.
Le challenge est la résolution de deux problèmes célèbres et très diciles de l'Optimisation Combinatoire : l'Aectation Quadratique (QAP) et l'une de ses extensions le Q3AP (3 dimensions). L'objectif est de pousser le plus loin
possible la résolution exacte de ces problèmes et d'améliorer la valeur de la meilleure solution connue pour les instances
non résolues grâce au parallélisme. Parmi les diérentes plate-formes d'optimisation parallèle impliquées dans ce projet,
j'ai pour ma part participé à la réalisation de Bob++, un ensemble de classes C++ permettant la réalisation d'applications implémentant des méthodes exactes de recherche parallèle, basés sur les algorithmes Branch-and-Bound,
Divide-and-Conquer, A* et programmation dynamique. Bob++ permet l'implémentation de ces algorithmes sur une
variété d'environnements de programmation parallèle : threads POSIX, Kaapi, MPI. Un environnement séquentiel est
également proposé.
Site web du projet :
http://choc.prism.uvsq.fr/
Lors de mes activités à l'INRIA Saclay, j'ai été amené à travailler, en collaboration avec Denis Barthou (maître
de conférences à l'Université de VersaillesSaint Quentin-en-Yvelines, détaché INRIA) et Bertrand Le Cun (maître de
conférences, Université de Paris X Nanterre), sur la résolution de programmes linéaires entiers paramétriques, ainsi
3
que sur la recherche du minimum lexicographique sur une union de polyèdres. Cela m'a amené à réaliser un solveur de
programmes linéaires entiers paramétriques, intégré à la bibliothèque PPL (Parma Polyhedra Library) de l'université
de Parme (Italie).
Dans le cadre de mon activité au laboratoire LaSTRE du CEA LIST, je travaille sur le projet MPPA, qui est une
collaboration avec la start-up Kalray pour la réalisation d'une architecture de calcul embarqué massivement multicoeur, ainsi que la chaîne de compilation associée.
Je détaille ci-après les problèmes de recherche sur lesquels j'ai travaillé.
3.1 Optimisation en Curiethérapie
Mots clés : curiethérapie HDR, Système de Paris, programmation linéaire, Glop.
Lors de ma thèse, mes recherches ont porté sur l'optimisation de plans de traitement en curiethérapie à haut débit
de dose. Ce travail a donné lieu au développement d'un logiciel de simulation de traitements et visualisation 3D des
résultats obtenus.
Ce travail a été mené en collaboration avec Gilbert Boisserie, radiophysicien de l'Unité de Physique du service de
radiothérapie du CHU Pitié-Salpétrière à Paris.
3.1.1 Présentation
La curiethérapie est un procédé de traitement de tumeurs cancéreuses, faisant usage de sources radioactives. En
curiethérapie à haut débit de dose (en anglais :
high dose rate brachytherapy
ou
HDR brachytherapy ),
une source
d'iridium 192 est mise en mouvement à l'aide d'un projecteur de source sous le contrôle d'un système informatique,
à l'intérieur de cathéters qui sont implantés dans la tumeur. Le traitement consiste à administrer une dose requise
de rayons au volume cible, en positionnant la source sur des positions d'arrêt régulièrement espacées à l'intérieur de
chaque cathéter.
La qualité d'un traitement s'exprime en termes d'uniformité de la dose reçue dans le volume cible, et de conformation de l'enveloppe qui correspond à l'isodose de référence à la forme du volume cible. Une isodose est une surface
en trois dimensions dont tous les points reçoivent le même débit de dose. L'isodose de référence est l'isodose sur
laquelle est prescrite la dose nécessaire au traitement de la lésion.
Le principe d'uniformité requiert la couverture de la tumeur par une dose aussi homogène que possible. Une
conformation correcte implique que l'enveloppe de l'isodose de référence, se conforme le plus exactement possible à
la forme du volume cible.
La qualité d'un traitement dépend d'une part du choix eecuté pour le positionnement des vecteurs (principalement
l'espacement entre les vecteurs), et d'autre part du choix des temps d'arrêt de la source sur chacune des positions
dans les vecteurs. Les règles actuelles d'implantation des vecteurs dénies dans le Système de Paris, déni en 1966 et
fondé sur l'utilisation de ls d'iridium 192, sont toujours appliquées dans le cas de la curiethérapie HDR.
Les deux problèmes sur lesquels je me suis penché sont les suivants :
la dénition d'une méthode de positionnement des cathéters, respectant les principes reconnus du Système de
Paris, et tenant compte de l'utilisation des projecteurs de source ;
la recherche de la distribution des temps d'arrêt, garantissant le respect des ces principes, et réduisant au
minimum la dose reçue dans les tissus sains environnants.
N'ayant aucune formation préalable dans ce domaine médical, la première partie de ma période de doctorat a
consisté en une recherche bibliographique approfondie, et en une étude des problématiques associées à ce domaine,
ainsi que des méthodes de résolution existantes.
Je décris ci-dessous les deux problèmes étudiés, puis je détaille les travaux eectués :
4
3.1.2 Le problème d'optimisation des temps d'arrêt
L'optimisation des temps d'arrêt se situe dans le cadre où les vecteurs sont déjà implantés, et que l'on dispose d'une
représentation très précise en trois dimensions du volume à traiter, ainsi que de la position précise des vecteurs par
rapport à ce volume. Cette représentation est obtenue par imagerie médicale (scanner, IRM). Des positions d'arrêt
sont dénies sur les vecteurs, régulièrement espacés.
Le principe de ce problème est de déterminer, pour chaque position d'arrêt, des temps d'arrêt correspondants. De
l'ensemble des valeurs des temps d'arrêt découle la dose reçue en tout point de l'espace, ce qui permet de générer
une isodose de référence dont la conformation par rapport au volume cible est à optimiser.
Des modèles d'optimisation pour ce problème ont déjà été dénis et mis en pratique dans les systèmes de curiethérapie HDR utilisés actuellement. Cependant, les médecins et radiophysiciens de la Pitié-Salpétrière ont constaté qu'ils
ne tenaient aucunement compte des recommandations simples énoncées dans le Système de Paris, garantissant une
homogénéité correcte, et surtout évitant les risques de surdosages potentiellement dangereux. Ces recommandations
consistent principalement à implanter les vecteurs parallèlement les uns par rapport aux autres, avec un espacement
uniforme limité. Cela a pour eet naturel de limiter le diamètre des manchons de surdosage, surfaces isodoses autour
des vecteurs, en forme de cigares, dont la dose correspond à 200% de la dose prescrite. Les auteurs du Système de
Paris ont en eet constaté que le diamètre de ces manchons ne devait jamais dépasser 1 cm. Même si la conformation
de l'isodose de référence par rapport au volume cible est correcte, certains traitements peuvent être considérés comme
dangereux du fait d'une mauvaise répartition de la dose à l'intérieur du volume cible.
3.1.3 Le problème de placement des cathéters
Le système de Paris propose une méthodologie d'implantation des vecteurs, garantissant la possibilité d'obtenir des
traitements corrects sur ces implantations, malgré les erreurs de précision inévitables dans le placement à la main, par
le médecin, des vecteurs. Cependant, ce système de dosimétrie est ancien, et ne tient pas compte de l'utilisation des
projecteurs de source, qui n'existaient pas lorsque le Système de Paris fut mis au point, en 1966.
Sachant que les projecteurs de source permettent de cibler de façon beaucoup plus précise la lésion à traiter que
ne le permettait l'utilisation de ls, Je me suis posé la question de savoir si les règles dénies dans le Système de Paris
pour le placement des cathéters restaient les meilleures possibles.
Il était donc intéressant de rechercher une méthode de placement des cathéters, inspirée des principes reconnus
du Système de Paris, et permettant d'améliorer les implantations actuellement réalisées, par exemple en termes de
nombre, d'écartement, et de longueur des vecteurs.
3.1.4 Travaux eectués
Dans cette thèse, j'ai montré que la recherche des temps d'arrêt pouvait se modéliser simplement grâce à la
programmation linéaire. Cette modélisation est originale par rapport aux autres modélisations de la littérature, qui
font usage de métaheuristiques ou de programmation en nombres entiers. J'ai de plus intégré dans mon modèle des
contraintes de surdosage, garantissant que les temps d'arrêt obtenus ne génèrent pas de diamètres de manchons de
surdosage supérieurs à 1 cm.
J'ai montré que les applications en curiethérapie HDR implantées selon les principes du Système de Paris pouvaient
être améliorées, ce qui était un objectif demandé par l'équipe de l'Unité de Physique de la Pitié-Salpétrière.
An de synthéthiser de manière claire la qualité des traitements obtenus, j'ai développé un logiciel de simulation
et de visualisation en trois dimensions permettant aux cliniciens :
de dénir des implantations conformes aux principes dénis par le Système de Paris : géométrie des volumes
traités et des vecteurs, calcul du débit de dose de base et simulation d'application de ls d'iridium 192 ;
d'appliquer l'optimisation des temps d'arrêt sur les implantations créées ;
de visualiser les enveloppes d'isodose en 3D, de tracer les histogrammes dose-volume et d'extraire les valeurs des
indices de conformation et de couverture de chaque cas simulé.
Ce genre d'outil d'analyse peut certainement contribuer, d'un coté à amoindrir la diculté que rencontrent les chercheurs en optimisation à assimiler les problématiques posées par la médecine, et de l'autre, à faciliter la compréhension
5
par la communauté médicale des modélisations et techniques apportées par l'expertise des informaticiens. En quelque
sorte, ce type d'outil facilite la communication entre ces deux mondes qui se connaissent relativement peu.
J'ai également proposé une étude d'évaluation de la dose, de manière quantitative (recouvrement de la tumeur)
et qualitative (conformation de la dose) sur un ensemble d'instances particulières. Ces instances sont des fantômes,
volumes géométriques dénis selon les principes du Système de Paris, englobant au mieux la zone à traiter.
J'ai étudié l'inuence du paramétrage des coecients de la fonction objectif du programme linéaire, et montré que
les résultats obtenus selon diérents paramétrages peuvent présenter de grandes diérences du point de vue de la
distribution de la dose, à la fois en termes de recouvrement de la tumeur, et de conformation de l'isodose de référence.
Partant des résultats obtenus sur plusieurs instances, il m'a été possible de déterminer un unique ensemble de
paramètres, ecace pour tous les cas.
Cette étude m'a mené à montrer que l'indice de conformation et de couverture, pourtant très utilisé dans la
littérature, ne pouvait pas à lui seul permettre de juger de la qualité d'un traitement, et qu'en utilisant séparément un
indice de conformation et un indice de couverture il est possible d'obtenir une information de bien meilleure qualité.
J'ai enn montré, en les comparant, que les solveurs de programmation linéaire actuels du domaine
Open Source
sont actuellement susamment ecaces pour traiter les cas posés dans des temps très acceptables. J'ai également
réalisé une étude montrant que le paramétrage du solveur choisi est primordial pour l'obtention des meilleures performances possibles dans les calculs. Cela a été rendu possible par le développement d'une interface de programmation
nommée Glop, qui m'a permis d'eectuer la résolution des programmes linéaires en utilisant diérents solveurs à ma
disposition.
3.2 L'aectation quadratique en deux et trois dimensions
Mots clés : Branch-and-bound, méthodes exactes, parallélisme, programmation en nombres entiers, QAP, Q3AP,
Bob++.
3.2.1 L'aectation quadratique en deux dimensions (QAP)
J'ai participé à l'élaboration d'une borne supérieure pour le QAP par méthode d'optimisation globale, lors d'une
collaboration avec Bazarragchaa Barsbold, Université d'Ulaanbaatar (Mongolie). Cette borne supérieure a été intégrée
au solveur QAP fonctionnant sur Bob++.
3.2.2 L'aectation quadratique en trois dimensions (Q3AP)
Ce travail se place dans le cadre de mon implication dans le projet ANR CHOC.
Il a consisté à réaliser un solveur pour le Q3AP, qui est une extension du QAP, fonctionnant également sur Bob++.
Cette application a permis la résolution exacte d'instances considérées jusqu'alors comme trop diciles pour pouvoir
être résolues, et l'obtention de temps d'exécution améliorant de plusieurs facteurs d'échelle les temps obtenus sur des
implémentations plus anciennes. Les accélérations obtenues proviennent de plusieurs facteurs :
le parallélisme permettant de répartir la charge de travail sur plusieurs processeurs,
le choix et le paramétrage d'une méthode de borne inférieure pour l'évaluation des noeuds Branch-and-Bound,
la méthode de branchement dans l'arbre de recherche, exploitant certaines symétries dans les instances étudiées,
l'utilisation d'une heuristique permettant de générer des solutions réalisables,
le soin particulier porté sur l'optimisation du code de borne inférieure lui-même, tirant parti des extensions
vectorielles des processeurs modernes (extensions SSE, Altivec, processeur Cell). Les expérimentations eectuées
montrent qu'on peut relativement facilement obtenir une accélération de 40% sur un processeur de type Intel
Core 2, simplement en exploitant les fonctionnalités SSE.
Je participe actuellement à la rédaction de deux articles présentant les méthodologies employées, et les résultats
obtenus.
6
3.3 Minimisation lexicographique paramétrique sur union de polyèdres entiers
Ce travail se place dans le cadre de mon post-doctorat à l'INRIA Saclay. L'équipe ALCHEMY dans laquelle j'ai
travaillé est spécialisée, entre autres, dans les méthodes polyédriques pour l'optimisation automatique de code dans
les compilateurs.
L'un des problèmes posés lors de la compilation d'un programme est l'analyse de dépendances entre itérations de
boucles pour les accès aux variables. La valeur lue dans une variable est bien entendu la dernière valeur écrite dans
cette même variable. L'analyse de dépendances consiste, dans l'analyse de boucles imbriquées, à rechercher à quel
moment (ou plus exactement, pour quelles valeurs d'indices de boucle), la dernière écriture a été eectuée, cela pour
chaque variable lue. Le résultat est évidemment obtenu en fonction des indices de boucles pour lesquels la variable est
lue, ainsi que des domaines d'évolution de ces indices. Ces valeurs sont des paramètres, et la résolution paramétrique
permet d'obtenir la valeur de la solution en fonction de la valeur des paramètres.
Le domaine de dénition du vecteur des indices de boucles est un polyèdre, délimité par des hyperplans paramétriques. Selon la valeur des paramètres, la solution optimale peut varier, et peut être inexistante, si le domaine devient
vide. La solution est donc représentée par un arbre de décision, dont les noeuds intermédiaires sont des conditions
linéaires dénies sur les paramètres, et chaque feuille est soit une solution, soit l'indication d'absence de solution.
De plus, comme il faut rechercher la dernière écriture pour une variable donnée, cette recherche est lexicographique,
car l'évolution des valeurs des indices de boucle est lexicographique. Enn, une même variable pouvant être écrite
en plusieurs endroits du programme, la dernière écriture est le maximum des diérents maximums sur les diérents
polyèdres correspondant aux diérentes écritures.
Le travail a consisté en premier lieu à étudier l'algorithme du simplexe dual lexicographique de Paul Feautrier, qu'il
a implémenté sous la forme d'un solveur indépendant, PIP.
Nous avons ensuite proposé une amélioration permettant de réutiliser le résultat de la résolution sur un sousensemble de contraintes commun à plusieurs polyèdres, permettant une méthode arborescente de type
bound
branch-and-
pour la recherche de l'optimum sur un ensemble de polyèdres, représenté sous la forme d'une arborescence de
contraintes.
Lors de ce projet, j'ai été amené à réaliser un solveur de programmation linéaire paramétrique en nombres entiers,
intégré à la bibliothèque PPL (Parma Polyheda Library) de l'Université de Parme (Italie). Ce solveur est basé sur
l'algorithme de Paul Feautrier, et permet en outre la résolution incrémentale de sous-problèmes, permettant la réalisation d'un algorithme de résolution arborescente sur une union de polyèdres. La bibliothèque PPL est utilisée dans la
branche Graphite du compilateur libre GCC, dans le cadre de l'analyse de certains types de dépendances. L'adjonction
du solveur devrait permettre le ranement des méthodes existantes, permettant la prise en charge de cas non encore
gérés actuellement.
3.4 Programmation mixte en nombres entiers
Ce travail se place dans le cadre de mon implication dans le projet ANR CHOC. Dans le but de me familiariser avec
l'utilisation de Bob++, j'ai réalisé une application de type Branch-and-Bound sur Bob++, en la matière d'un solveur
de programmation linéaire en nombre entiers (MIP = mixed integer programming) parallèle. Ce solveur fait usage
d'un solveur LP au choix parmi ceux disponibles à travers la librairie Glop, initiée lors de ma thèse, et nalisée dans
le projet (cf. section 3.9.2 page 10).
Plusieurs méthodes de branchement ont été intégrées, notamment basées sur la recherche de la variable la plus
strong branching )
entropy branching ).
fractionnaire, la variable permettant localement la meilleure variation de l'objectif (
réduisant au maximum la probabilité d'obtenir des variables fractionnaires (
ou la variable
Ce travail a servi de base pour la thèse de Christophe Louat, soutenue en janvier 2009.
3.5 Algorithmique parallèle sur cluster
J'ai réalisé une interface pour l'implémentation d'applications Bob++ sur l'environnement de programmation
parallèle MPI. L'algorithme parallèle est de type maître-esclave, avec un algorithme d'équilibrage de charge souple
7
limitant la fréquence et le volume de communications entre les processeurs. Cette interface fait usage au maximum
de communications non-bloquantes.
Cette implémentation a donné des résultats satisfaisants pour l'utilisation du solveur MIP parallèle, et a mis en
évidence un certain nombre de points importants pour la réalisation d'une nouvelle interface plus souple, permettant
le calcul parallèle sur des clusters de machines multi-coeur.
J'ai également participé au portage de Bob++ sur l'environnement parallèle Kaapi, développé par le projet INRIA MOAIS à Grenoble, également partenaire de l'ANR Choc, et sur les achitectures multi-coeur au travers de la
bibliothèque de threads POSIX.
3.6 Expérimentations sur architectures SIMD (SSE, Cell)
Je me suis intéressé aux processeurs incluant des architectures de type SIMD, car elles permettent d'accélérer des
algorithmes basés sur des opérations matricielles. Le principe de ces architectures est de permettre des opérations
sur des vecteurs plutôt que sur de simples valeurs. Par exemple, le résultat d'une addition de deux vecteurs est
un vecteur dont les composantes sont le résultat des additions des composantes correspondantes dans les vecteurs
initiaux. Additionner deux vecteurs de 4 entiers sans utiliser le SIMD nécessite 4 instructions machine, alors qu'une
seule instruction SIMD peut faire la même chose, ce qui permet d'accélérer ce type d'opérations.
Streaming SIMD
Les processeurs de PC actuels (Intel, AMD) intègrent toute une famille d'instructions SSE (
Extension),
permettant des calculs sur des vecteurs de 128 bits, ce qui correspond à 4 nombres entiers ou 4 nombres
ottants en simple précision.
Le processeur Cell est un processeur de calcul particulier dans le sens où il s'agit d'un processeur hybride qui
contient un coeur de processeur classique (nommé PPE) et de huit coeurs spécialisés pour le calcul (appelés SPE).
Les SPE eectuent tous leurs calculs sur des vecteurs de 128 bits, et sont optimisés pour eectuer ces calculs très
rapidement. Ce type de processeur équipe la console de jeux Sony Playstation 3, sur laquelle on peut installer un
système d'exploitation Linux an de pouvoir programmer le processeur.
Dans le cadre de mes travaux sur le Q3AP, j'ai optimisé les algorithmes les plus demandeurs en temps de calcul
pour qu'ils exploitent le SSE. La conception a été faite de telle sorte que les algorithmes puissent être facilement
transposables sur le processeur Cell, en vue d'une version Cell du Q3AP. Les temps obtenus sur le Q3AP avec
l'utilisation du SSE permettent d'obtenir des accélérations de 40% en moyenne.
Pour ce qui est du processeur Cell, j'ai principalement réalisé des prototypes d'algorithmes, d'une part pour me
familiariser avec le modèle de programmation particulier de ce processeur, et d'autre part dans l'idée d'utiliser le Cell
pour la résolution de nos problèmes d'optimisation. Ces prototypes incluent :
un solveur pour le puzzle Eternity II, implémentant un algorithme parallèle de recherche arborescente de type
Divide-and-conquer,
un moteur simple de rendu 3D en temps réel,
un squelette d'environnement parallèle pour Bob++.
Pour plus d'informations quant à mes expérimentations sur le Cell, voir la page web :
http://www.prism.uvsq.fr/~fgalea/?page=cell.
3.7 Partitionnement/placement/routage, et cadencement d'applications embarquées
Dans le cadre de mon activité au laboratoire LaSTRE du CEA LIST, je participe au projet MPPA, dont la nalité
est la réalisation d'une architecture de calcul haute performance embarquée, massivement multi-coeur, ainsi que des
logiciels associés : environnement de développement, chaîne de compilation, logiciel système.
L'architecture est constituée d'un ensemble de grappes de coeurs, reliées entre elles par un réseau sur puce. Les
coeurs d'une même communiquent par l'intermédiaire d'une mémoire partagée, tandis que la communication entre
grappes s'eectue par le réseau sur puce.
La contribution du LaSTRE au projet consiste en la mise au point de la chaîne de compilation et du logiciel
système. Comme la puce peut contenir plusieurs centaines de coeurs, il a été décidé de permettre la programmation
à l'aide d'un langage ad-hoc de haut niveau, explicitant le parallélisme par la programmation par ots de données :
8
une application consiste en un ensemble de tâches produisant et consommant des données, reliées entre elles par des
canaux de communication. Le rôle de la chaîne de compilation consiste à transformer un programme écrit dans ce
langage en un programme multi-coeur, où les tâches seront aectées à des grappes.
Mon activité se place dans une couche intermédiaire de la chaîne de compilation. J'ai été amené, dans un premier
temps à travailler sur l'aspect partitionnement/placement/routage, qui s'occupe de placer les diérentes tâches sur les
grappes, et à s'assurer de la bonne communication entre grappes. Cette opération se décompose en plusieurs étapes :
- le partitionnement : Constituer des grappes virtuelles regroupant des tâches, de telle sorte que la plus grande
part possible des communications s'eectue à l'intérieur de ces noeuds. Les contraintes sont la limitation des
ressources de capacité mémoire d'une grappe, et d'un nombre maximal de tâches. Elles peuvent être étendues à
d'autres types de ressources.
- le placement : Aecter chacune des grappes virtuelles à une grappe physique, de sorte à minimiser la somme
des produits (distance réseau
×
quantité de communication) entre toute paire de grappes.
- le routage : Aecter un chemin dans le réseau à chaque lien de communication entre grappes.
Plus précisément, ma participation dans cette partie de l'application a consisté à reprendre une première version heuristique de placement et à établir une mesure de la qualité des résultats obtenus en les comparant à des solutions exactes
obtenues grâce à un solveur d'aectation quadratique (QAP). J'ai également participé à une refonte de l'heuristique
initiale de partitionnement.
J'ai ensuite participé à l'élaboration d'un cadenceur permettant de générer un ordre partiel d'occurrences de tâches.
Les données générées permettent de facilement détecter à l'exécution les prochaines occurrences de tâches prêtes à
être exécutées, tout en garantissant que les tampons mémoire alloués aux canaux de communication contiennent les
données nécessaires à l'exécution de ces prochaines occurrences, et disposent une quantité de mémoire libre susante
pour contenir les données qui seront produites en exécutant ces occurrences.
3.8 Publications
1 thèse, 1 soumission à revue internationale, 2 conférences internationales avec acte et comité de lecture, 9
conférences internationales avec acceptation sur résumé, 4 conférences nationales avec acceptation sur résumé, 3
posters, 3 rapports techniques.
Thèse
1. François Galea.
Problèmes d'optimisation en Curiethérapie.
PhD thesis, Université de Versailles Saint-Quentin,
Versailles, France, September 2006.
Publications dans une Revue Internationale
1. Karine Deschinkel, François Galea, and Catherine Roucairol. Basics for vector implantation schemes in HDR
brachytherapy using a new linear programming model. Soumis et accepté pour publication dans la revue
Asia-Pacic Journal of Operational Research,
APJOR
2007.
Conférences internationales avec acte et comité de lecture
1. Ider Tseveendorj, Catherine Roucairol, Bertrand Le Cun, François Galea, B. Barsbold, and R. Enkhbat.
Complex Search Technique for Solving the Quadratic Assignment Problem. In
Generalized Solutions in Control Problems,
A
4-th International Conference on
page 140, Buriyat, Ulan-Ude, Russia, June 2008.
2. François Galea and Bertrand Le Cun. Bob++ : a framework for exact combinatorial optimization methods on
PGCO'2007 as part of the 2007 International Conference High Performance Computing
& Simulation (HPCS'07) and in conjunction with The 21st European Conference on Modeling and Simulation
(ECMS 2007), pages 779785, June 2007.
parallel machines. In
9
Conférences internationales acceptation sur résumé
1. François Galea, Peter Hahn, and Bertand Le Cun. A parallel implementation of the three-dimensional quadratic
assignment problem. In
European Chapter on Combinatorial Optimization (ECCO XXI),
Dubrovnik, Croatia,
May 2008.
2. K. Deschinkel, F. Galea, and C. Roucairol. Automated optimization of brachytherapy treatment plans : Software
isodose 3d. In
Applied Optimization and Metaheuristics Innovation,
Yalta, Ukraine, July 2006.
3. K. Deschinkel, F. Galea, and C. Roucairol.
Optimization problems in treating cancer tumour by internal ra-
diations : High dose rate brachytherapy. In
Applied Mathematical Programming and Modeling VIII (APMOD
2006),
Madrid, Spain, June 2006.
6 ème Conférence Francophone de Modélisation et Simulation, Modélisation, Optimisation et Simulation MOSIM 06, Rabat, Morocco,
4. K. Deschinkel, F. Galea, and C. Roucairol. Problèmes d'optimisation en curiethérapie. In
April 2006.
5. K. Deschinkel, F. Galea, and C. Roucairol. Catheter placement and dwell time computations. In
Annual Meeting
of INFORMS (Institut for Operations Research and the Management Sciences), San Fransisco, USA, November
2005.
6. K. Deschinkel, F. Galea, and C. Roucairol.
Workshop on Optimization in Medicine,
Overview of Optimization Problems in HDR Brachytherapy.
In
Coimbra, Portugal, July 2005.
7. F. Galea, K. Deschinkel, and C. Roucairol. A continuous tabu search method for catheter placement optimisation
in hdr brachytherapy. In
Workshop on Optimization in Medicine,
Coimbra, Portugal, July 2005.
8. François Galea and Catherine Roucairol. A continuous metaheuristic for the optimization of cancerous tumor
treatment planning. In
European Chapter on Combinatorial Optimization (ECCO XVIII),
Minsk, Belarus, May
2005.
9. François Galea and Catherine Roucairol. Mathematical modelling of brachytherapy optimization problems for
tumour irradiations. In
European Chapter on Combinatorial Optimization (ECCO XVII), Beirut, Lebanon, June
2004.
Conférences nationales acceptation sur résumé
1. B. Le Cun, F. Galea.
Résolution parallèle de l'aectation quadratique à 3 dimensions
In
ROADEF 2010,
Toulouse, February 2010.
2. B. Le Cun, F. Galea.
dimensions In
Gestion des symétries dans une résolution exacte de l'aectation quadratique à trois
ROADEF 2009,
Nancy, February 2009.
3. K. Deschinkel, F. Galea, C. Louat, and C. Roucairol. Intégration de méthodes de coupes : Librairies Glop et
Glock. In
ROADEF 2008,
Clermont-Ferrand, February 2008.
4. François Galea and Catherine Roucairol. Optimisation du traitement des tumeurs cancéreuses par curiethérapie.
In
Francoro IV, 4 èmes journées francophones de Recherche Opérationnelle, Fribourg, Switzerland, August 2004.
Posters
1. Bertrand Le Cun and François Galea. CHOC : CHallenge en Optimisation Combinatoire. Poster Journées
Ter@tec, June 2008.
2. Bertrand Le Cun and François Galea.
CHOC : CHallenge en Optimisation Combinatoire.
Poster Grand
Colloque STIC, November 2007.
3. Bertrand Le Cun and François Galea. CHOC : CHallenge en Optimisation Combinatoire. Poster Journées
PARISTIC, November 2006.
10
Rapports techniques
1. François Galea and Catherine Roucairol. Mathematical modelling of HDR/PDR brachytherapy treatment plan-
i
ning problems. Technical Report 2004/68, Laboratoire PR SM, Université de Versailles Saint-Quentin, 2004.
2. François Galea.
Determination of vector implantation models in brachytherapy.
Technical Report 2003/48,
i
Laboratoire PR SM, Université de Versailles Saint-Quentin, 2003.
3. François Galea. Optimization model for high dose rate brachytherapy treatment planning. Technical Report
i
2003/47, Laboratoire PR SM, Université de Versailles Saint-Quentin, 2003.
3.9 Logiciels réalisés
Au cours de mes travaux de recherche, j'ai été amené à réaliser, ou à participer à la réalisation de divers logiciels.
J'ai également eectué des expérimentations sur des processeurs à architecture SIMD, qui ont mené à l'optimisation
de solveurs et à la réalisation de prototypes logiciels.
Le nombre de lignes de code pour chacun des projets a été obtenu grâce au logiciel
SLOCCcount
de David A.
Wheeler qui permet d'estimer la quantité de travail eectué dans un projet logiciel en analysant les chiers de code
source. Les valeurs données correspondent à l'état actuel des diérents projets.
3.9.1 Isodose 3D
Dans le cadre de ma thèse (cf. section 3.1 page 3), développement d'une plate-forme pour la visualisation et
l'optimisation en environnement tri-dimensionnel de problèmes de traitement en curiethérapie à haut débit de dose.
Programmation en langage C, utilisation des bibliothèques GTK+ et OpenGL.
Logiciel libre distribué sous licence GPL.
Site web du projet :
http://www.prism.uvsq.fr/~fgalea/isodose_3d.html
Nombre de lignes de code physique (SLOC) : 5 600.
3.9.2 Glop : The Generic Linear Optimization Package
Ce logiciel a été développé lors de ma thèse. Il s'agissait à l'origine d'une interface de programmation (API)
générique en langage C pour l'utilisation de solveurs de programmation linéaire. Quelque soit le solveur utilisé, Glop
permet le développement d'applications de manière totalement uniforme et indépendante.
Les logiciels ainsi réalisés peuvent aussi bien proter de la performance des solveurs commerciaux tels que CPLEX
ou XPRESS, que d'utiliser les solveurs libres tels GLPK, lp_solve ou COIN-LP.
Au l du temps, cette interface est devenue une bibliothèque de fonctions pour la gestion de programmes mixtes
entiers, agrémentée de fonctions génériques d'entrées/sorties, sérialisation. Plus récemment, une API C++ (PPGlop)
a été intégrée par Bertrand Le Cun, ainsi qu'un ensemble de fonctions pour la pré-résolution MIP et de génération de
coupes génériques (Glock) ont été développées et intégrées par Christophe Louat dans le cadre de sa thèse, dont la
date de soutenance est prévue en janvier 2009.
Logiciel libre distribué sous licence GPL.
Site web du projet :
https://software.prism.uvsq.fr/glop
Nombre actuel de lignes de code physique (SLOC) : 19 389.
3.9.3 Bob++
C'est un ensemble de classes C++ développées par Bertrand Le Cun permettant la réalisation d'applications
implémentant des méthodes exactes de recherche parallèle, basés sur les algorithmes Branch-and-Bound, Divide-andConquer, A* et programmation dynamique. Bob++ permet l'implémentation de ces algorithmes sur une variété d'environnements de programmation parallèle : threads POSIX, Kaapi, MPI. Un environnement séquentiel est également
proposé.
11
L'un de mes travaux sur Bob++ a consisté en la réalisation de l'interface pour l'implémentation d'applications
Bob++ sur l'environnement de programmation parallèle MPI. Je détaille cette interface dans la section 3.5
page 7.
J'ai également réalisé une application basée sur le Branch-and-Bound de Bob++, en la matière d'un solveur de
programmes mixtes entiers, détaillée dans la section 3.4 page 6.
Tout comme Glop, Bob++ est un logiciel libre.
Logiciel libre distribué sous licence GPL.
Site web de Bob++ :
https://software.prism.uvsq.fr/bobpp
Nombre actuel de lignes de code physique (SLOC) : 16 298.
3.9.4 Solveur Q3AP
Il s'agit d'un délivrable réalisé dans le cas du projet CHOC. J'ai présenté l'application et les résultats obtenus dans
la section 3.2.2 page 5.
Nombre actuel de lignes de code physique (SLOC) : 4 480.
3.9.5 Solveur lexicographique de programmes linéaires entiers paramétriques
Ce solveur résulte de mon travail dans l'équipe ALCHEMY à l'INRIA Saclay. Il a été développé comme composant
de la bibliothèque d'analyse polyédrique PPL (Parma Polyheda Library) de l'Université de Parme (Italie).
C'est une implémentation de l'algorithme du simplexe dual de Paul Feautrier. Il permet la recherche du minimum
lexicographique dans un polyèdre entier délimité par des hyperplans paramétriques. Des fonctionnalités ont été rajoutées
pour permettre la résolution de problèmes de manière incrémentale, c'est-à-dire que l'on peut rajouter des contraintes
à un problème que l'on a déjà résolu, pour obtenir une nouvelle solution. Cela permet d'économiser une certaine
quantité de calculs lors de la résolution sur une union de polyèdres, modélisée par une arborescence de contraintes.
La solution est une expression des variables en fonction des paramètres. Cette solution peut varier ou devenir
inexistante selon la valeur des paramètres. La solution globale, quelles que soient les valeurs des paramètres, est donc
un arbre de décision, dont chaque noeud intermédiaire contient une condition sur les valeurs des paramètres, et ses
deux noeuds ls sont la solution du problème, selon que la condition est vraie ou fausse. Les feuilles contiennent soit
une expression de la solution en fonction des paramètres, soit l'indication qu'il n'y a pas de solution.
Logiciel libre distribué sous licence GPL.
Site web de la PPL :
4
http://www.cs.unipr.it/ppl/
Activité d'enseignement
J'ai préparé et eectué des enseignements portant sur l'algorithmique, la programmation parallèle, le langage C, la
recherche opérationnelle et les systèmes d'exploitation. J'ai encadré des projets de n d'année en groupes en licence
d'informatique.
L'ensemble de mes activités d'enseignement a été eectué en tant que vacataire, sauf pour l'année 2005-2006,
pour laquelle j'ai travaillé sur un poste de demi-ATER.
Je détaille ci-après les diérents enseignements dans lesquels j'ai été impliqué, puis je présente un résumé des
heures eectuées.
4.1 Module de système d'exploitation
A l'origine, il s'agissait d'un module de licence d'informatique, incluant à la fois le langage C et la programmation
système Unix.
12
Les deux premières années à partir de 2002, j'ai commencé par assurer les TD, sous la direction de Franck Quessette,
maître de conférences à l'UVSQ, qui en assurait le cours magistral.
A la rentrée 2004, Franck Quessette ne pouvant plus assurer ce cours, il m'a proposé de le remplacer, ce que j'ai
accepté. J'ai suivi le plan du cours des années précédentes, et j'écrivais les cours au tableau.
A la rentrée 2005, suite à la réorganisation des enseignements pour la réforme LMD, il a été décidé de séparer ce
module en deux, d'un côté la programmation en langage C, qui a été rendue accessible aux étudiants d'autres lières
que l'informatique, et de l'autre les systèmes d'exploitation dont je continue à assurer l'enseignement.
Ce nouveau module est beaucoup plus orienté vers la théorie, la conception et l'implémentation des systèmes, et
moins vers la programmation utilisateur. J'ai donc eu la charge de réorienter complètement le contenu du cours, que j'ai
principalement basé sur le plan livre
Modern Operating Systems
d'Andrew Tanenbaum. L'idée derrière l'organisation
du module était de reprendre les concepts vus en cours, et de les utiliser dans des exercices de programmation en
TD. Pour cela, les anciens TD ont été repris, et réorganisés pour s'adapter au nouveau cours. J'ai également ajouté
de nouveaux exercices, notamment sur la programmation en environnement
multi-thread,
au vu de l'émergence des
nouvelles machines multi-coeurs.
J'ai commencé à utiliser des transparents de cours sur vidéo-projecteur depuis 2006, transparents que j'ai mis à la
disposition des étudiants sur le site de l'université.
J'ai également expérimenté une organisation des TD permettant aux étudiants de travailler sur feuille comme
précédemment, puis au lieu de corriger au tableau, d'eectuer la correction sur un ordinateur portable relié à un vidéoprojecteur. Les étudiants peuvent ainsi voir l'exécution des programmes écrits, et les corrections eectuées en cours
sont rendues par la suite disponibles en téléchargement. J'encourage autant que possible les étudiants à récupérer ces
corrections, les recompiler et expérimenter des modications pour se familiariser avec les concepts système étudiés.
J'ai constaté un intérêt de la part des étudiants pour cette façon de procéder, et comme je considère que les étudiants
sont plus à même de rééchir devant une feuille que devant une machine, cette formule a montré qu'elle respectait
bien la façon traditionnelle de travailler, tout en s'adaptant aux évolutions de la technique.
Je donne aux étudiants deux sujets de projet par semestre, le premier étant au format d'un gros exercice de TD,
et le second tentant de simuler un aspect de système vu en cours, en utilisant la programmation système vue en TD.
Les projets sont à réaliser en binômes. J'assure la rédaction des sujets, ainsi que la correction des projets.
Je rédige également les sujets d'examen, et j'eectue la correction des copies.
J'ai également mis au point un petit système Linux installable sur une clé USB, permettant aux étudiants d'avoir
accès à un système Unix sans avoir à installer Linux directement sur leurs machines.
Les liens vers les transparents de cours, les corrections de TD, les sujets de projets et mon mini-système Linux se
trouvent tous sur la page web suivante :
http://www.prism.uvsq.fr/~fgalea/?page=ens
4.2 Module de programmation parallèle et distribuée
Il s'agit d'un module de maîtrise. J'ai été chargé de TD de ce module de 2002 à 2004. Le responsable du module
était Eugen Dedu. Ce module comportait une part d'algorithmique parallèle, et d'autre part de programmation à l'aide
de l'environnement
multi-thread
pour les machines à mémoire partagée, et des bibliothèques MPI et PVM pour les
machines à mémoire distribuée.
4.3 Module de recherche opérationnelle
Il s'agit d'un module de troisième année de licence, dont j'ai été chargé de TD lors de l'année 2005-2006. En
collaboration avec un autre chargé de TD, nous avions la charge de rédiger des sujets de TD sur des aspects de
recherche opérationnelle comme l'algorithme du simplexe, la programmation dynamique, le branch-and-bound, le
diviser-pour-régner, etc.
13
4.4 Module d'algorithmique 2
Il s'agit d'un module de première année à l'ISTY, l'école d'ingénieurs de l'UVSQ. Ce module traitait particulièrement
d'algorithmes basés sur les graphes, comme les parcours, les couvertures, les coloriages, etc.
4.5 Récapitulatif des heures d'enseignement
L'ensemble des volumes horaires donnés dans le tableau suivant est exprimé en heures équivalent TD.
Langage C/Système (TD)
2002-03
2003-04
66
33
Langage C/Système (CM)
Programmation parallèle et distribuée
2004-05
2005-06
2006-07
2007-08
2008-09
18
18
18
36
36
72
54
54
90
33
16,5
33
Semaine d'initiation Unix (licence)
33
16
Encadrement module projet (licence)
6
Algorithmique 2
36
Recherche opérationnelle
36
Systèmes d'exploitation (CM)
18
Systèmes d'exploitation (TD)
Total
5
99
88
49,5
90
Tâches collectives
J'ai eu à ma charge un certain nombre de tâches collectives pour l'équipe OPALE à laquelle j'appartiens.
5.1 Organisation de séminaires internes
J'ai été chargé pendant plusieurs années d'organiser des séminaires internes à l'équipe. Je me suis occupé de la
réservation des salles, vidéoprojecteurs, et de communiquer les dates et horaires et de présenter les exposés.
5.2 Administration des machines utilisateur
Depuis le début de ma thèse, j'assure l'administration des machines utilisateur des membres de l'équipe. Les stations
de travail fonctionnent sous le système Debian GNU/Linux, et les portables ont une double installation de Windows
et Debian GNU/Linux. Les machines utilisent les ressources partagées sur le réseau du laboratoire (disques réseau,
imprimantes, accès internet).
Je suis chargé des mises à jour des systèmes et logiciels, de l'installation de logiciels, et bien souvent j'ai été amené
à faire le support technique face à certains problèmes matériels ou logiciels rencontrés sur les machines.
Nombre de machines gérées : 8 postes de travail, 4 portables.
5.3 Administration d'un serveur de développement
Une partie des logiciels développés par l'équipe sont maintenus par plusieurs personnes. J'ai donc mis en place
Trac pour la gestion des
Subversion. J'ai également mis
un serveur web dédié au développement de ces logiciels. Ce serveur utilise l'environnement
projets. Il permet la centralisation des codes sources à l'aide du gestionnaire de version
en place un système de sauvegarde automatique, qui archive toutes les nuits les chiers sur des machines distantes
sur le réseau.
Ce serveur de développement héberge également des projets extérieurs à ceux de notre équipe.
Ce système fonctionne sur une machine de l'équipe. Il est cependant prévu que ce système soit utilisé comme
base pour un service oert à la globalité des chercheurs du laboratoire, hébergé sur un serveur du laboratoire, an de
mettre en place une plate-forme à plus grande visibilité extérieure. Je collabore avec les administrateurs système du
laboratoire pour la mise en place du futur nouveau service.
14
Le serveur est accessible à cette adresse :
http://software.prism.uvsq.fr/
. La page de présentation ne liste
que les projets libres hébergés (pour l'instant, Glop et Bob++).
5.4 Mise en place et administration d'un cluster de calcul
J'ai été chargé de la mise en place d'un cluster constitué de 7 machines bi-processeur (Intel Xeon). Les noeuds
fonctionnent sous Debian GNU/Linux, avec partage du disque du noeud maître sur les autres noeuds. Les utilisateurs
Fully
sont partagés, et l'installation du système des noeuds esclaves se fait automatiquement grâce à l'outil FAI (
Automatic Installation)
du projet Debian.
Récemment, j'ai ajouté quatre Playstation 3 au cluster, servant de noeuds de calculs spécialisés, fonctionnant
également sous Debian GNU/Linux. Voir la section 3.6 page 7 pour plus de détails sur la programmation de ces
machines.
6
Compétences
Modélisation, algorithmique
Recherche opérationnelle : méthodes exactes et heuristiques.
Algorithmique parallèle.
Théorie des graphes, applications dans le domaine des télécommunications.
Preuves d'algorithmes, notions de théorie de la complexité.
Cryptographie : algorithmes à clés secrètes, à clés publiques, méthodes d'authentication et de signature.
Modélisation 3D, algorithmes de tracé d'objets.
Outils de développement
Langages C, C++, Java.
Outils de conguration Autoconf, Automake, Libtool ...
Gestionnaires de code source CVS, Subversion, Git.
Scripts bourne shell, C shell, Awk, Perl, Lua, PHP.
Interfaces de programmation d'applications parallèles PVM, MPI, threads POSIX.
Bases de données SQL Server, Sybase, MySQL, PostgreSQL, SQLite.
Programmation 3D, utilisation de l'API OpenGL.
Programmation assembleur x86, ARM, Motorola 680x0, DSP56000.
Programmation hardware sur machines : Atari ST et Falcon, Nintendo Game Boy Advance, Sony PSP, Sony
PS3.
Administration système
Administation de postes de travail et serveurs sous Debian GNU/Linux.
Mise en place d'un serveur de développement basé sur Trac et Subversion.
Mise en place d'un cluster de calcul : noeuds Debian avec NIS, NFS, NTP, Ganglia. Réplication de l'installation
des noeuds avec FAI.
Soumission de patches au code source de Linux.
Langues
Anglais : lu, écrit et parlé. Rédaction d'articles, corrections, exposés dans des conférences internationales.
Allemand : lu.
15