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