Methodological approach (METH)

Charles Deltel - Some tools and good practicies for software developpment (at Irisa)

La première (et plus importante) partie du cours est consacrée au cycle de vie du logiciel. Nous présentons les problèmes liés à la gestion du code source et les outils de versionnement, notamment en comparant le modèle décentralisé (Git) au modèle historique basé sur un dépôt centralisé (subversion). Nous présentons ensuite les forges logicielles, qui offrent un service de versionnement de code mais également de nombreuses fonctionnalités liées au cycle de vie du logiciel (gestion de projet, système de tickets, roadmaps, wiki, social coding, pull requests). Puis, le modèle de développement basé sur Git est présenté plus en détails, suivi d'une session pratique, très guidée à l’intention des étudiants découvrant Git ou GitLab (commits, push, branches, forks, merge requests). La problématique de l’intégration continue (CI) est ensuite discutée. Après un tour d’horizon de quelques outils (Travis-CI, GitLab-CI, CDash, Jenkins), nous détaillons les mécanismes de l'intégration continue avec GitLab-CI (pipelines, syntaxe YAML). S’ensuit une session pratique où nous proposons la mise en oeuvre de l’intégration continue avec GitLab-CI sur un petit code C++ (fourni), afin d'automatiser quelques tâches courantes reconnues comme de "bonnes pratiques” pour assurer la qualité logicielle d’un code : compilation, analyse statique, tests unitaires (avec CppUnit), recherche de fuites mémoire, couverture de code.

Dans une seconde partie, nous présentons les infrastructures de calcul utilisées dans les laboratoires de recherche comme l’IRISA/Inria (IGRIDA, Grid’5000). Nous introduisons également le calcul intensif (HPC, high performance computing), la notion de puissance de calcul, et la hiérarchie des infrastructures de calcul nationales et européennes (tier 0-2).

La dernière partie est consacrée à la virtualisation. Nous présentons les outils utilisés au quotidien à l’IRISA (VirtualBox, VMWare, Qemu, Docker, Vagrant), avec un focus sur Docker, et un focus sur la virtualisation sur le cluster IGRIDA. Nous évoquons les problèmes de reproductibilité des expériences en informatique, et l’aide que peut apporter la virtualisation dans cette démarche. Une session pratique est ensuite proposée pour montrer des exemples d’applications de la virtualisation, avec au choix un premier contact avec Docker, l’instanciation d’un serveur GitLab avec Docker, l’instanciation d’un cluster OAR avec Vagrant.

Charles Deltel (born in 1972) is a research engineer working at INRIA, with a strong experience in high performance computing. After graduating in mathematics and informatics, he obtained his doctoral degree at the university of Brest (2002), working at IFREMER on 4d-variational data assimilation in the NEMO ocean model. He then worked at the LOCEAN/IPSL laboratory (Paris 6) on assimilation of satellite data and on multivariate aspects of covariance modeling in the NEMO platform. He worked one year at EDF R&D on statistics of extreme events in future climate simulations (national IMFREX project). He was recruited by CNRS in 2005 at the LOCEAN/IPSL laboratory. He joined INRIA in late 2010, where he is in charge of parallelisation issues. He currently works with the GenScale bioinformatics team, and takes part in the development and user support of the INRIA/IRISA computing cluster IGRIDA. He has a good experience of large systems and associated parallelisation issues, as well as some experience in handling statistical problems.

Arnaud Legrand - Reproducibility in research

An intensive week on how to assess a research hypothesis by valid and reproducible experiments, given by Arnaud Legrand (see short bio and course overview here).