Les mardis du développement technologique

Les mardis du développement technologique

Les Mardis du développement technologique sont des rencontres régulières organisées par le SED à destination des développeurs. Pendant une après-midi, une série d'exposés ouvre la discussion autour des outils et pratiques de développement. rss

Édition du 8 novembre 2016

14h00 - Fabriquez des paquets Debian/Ubuntu pour que vos utilisateurs puissent installer facilement votre logiciel - Samuel Thibault
(PDF)

Le système de packaging Debian est l'un des plus utilisés au monde, au sein de la distribution Linux Debian bien sûr, mais aussi toutes les distributions Linux dérivées de Debian, comme Ubuntu.

Pour éviter à vos utilisateurs d'avoir à compiler eux-même votre logiciel, vous pouvez leur fournir des paquets précompilés. Mieux, vous pouvez faire intégrer votre logiciel au sein de la distribution Debian, pour qu'il suffise à vos utilisateurs de l'installer depuis le gestionnaire de paquet de leur distribution Linux !

Dans cette présentation, je montrerai comment fabriquer facilement un paquet Debian, et comment faire intégrer un paquet au sein de la distribution Debian (et du coup Ubuntu).

14h45 - Installez vos piles logicielles scientifiques facilement avec Spack - Florent Pruvost
(PDF)

Spack est un gestionnaire de paquet, orienté bibliothèques scientifiques HPC, permettant de déployer aisément des piles logiciels complexes. Spack permet l'installation et la coexistence des paquets installés pour de multiples configuration: version, dépendance optionnelle, compilateur, architecture, etc. L'utilisation de l'outil en ligne de commande est simple et intuitif, mieux encore, la sémantique de /spec/ a été bien pensée et offre un haut degré de flexibilité pour le choix de l'installation a effectuer ou à retrouver. La création de paquet en langage python reste simple et permet en un seul fichier d'exprimer une très grande combinaison de variantes de la pile logiciel: non unicité du graph de dépendances (avec/sans MPI), paquets virtuels (interface BLAS = netlib|openblas|mkl ...), patchs.

Dans cette présentation nous verrons en quoi Spack répond bien aux besoins des développeurs de bibliothèques scientifiques et discuterons de retours d'expériences montrant la limite d'une approche flexible mais pas toujours robuste.

15h30 - pause café
15h45 - Infrastructure as Code - David J. Sherman
(PDF)

Jenkins 2 Pipeline and Docker are two examples of infrastructure as code, where everything—machine configuration, software environment, node deployment, compilation and testing—is entirely described by files checked in to the same SCM as the program source code. No servers need to be kept as household pets for a project. Given the address of a Git repository, a generic Jenkins instance will check out the Jenkinsfile, allocate agents in containers defined by Dockerfiles, set up the pipeline, compile, test, and archive the resulting artifacts. I will illustrate this paradigm with some examples from the Inirobot and Magus projects.

16h30 - Maîtrisez vos environnements logiciels avec GNU Guix - Ludovic Courtès
(PDF)

Votre stagiaire vient de passer trois jours à installer les outils pour pouvoir travailler sur votre logiciel ? Les modules que vous utilisiez sur le cluster ont disparu mais vous devez reproduire une expérience pour demain ? Le paquet que vous fournit le système n'est pas compilé avec vos options favorites ? Les reviewers de votre article n'obtiennent pas les mêmes résultats que vous en lançant votre logiciel ?

Dans cet exposé, nous verrons comment GNU Guix, un outil de gestion de paquets et d'environnements logiciels, tente de répondre à ces frustrations. Guix met l'accent sur la reproducibilité des compilations de logiciels et la maîtrise des environnements logiciels, tout en laissant une grande flexibilité aux utilisateurs. Je montrerai les principes de l'outil et illustrerai ces cas d'utilisation avec des démos.

Édition du 24 novembre 2015

14h00 - Glumpy, fast, scalable and beautiful scientific visualization - Nicolas P. Rougier
(PDF)

OpenGL (Open Graphics Library) est une bibliothèque de fonctions permettant la programmation graphique (jeu, interface, visualisation, etc). Introduite en 1992, l'API a été changée profondément en 2004 avec notamment la possibilité de programme dynamiquement le pipeline graphique via l'écriture de shaders. Si cette API offre de nombreuses possibilités, elle complexifie aussi beacoup la programmation.

Glumpy est une bibliothèque Python dont le but est de simplifier l'accès à cette API et de montrer les possibilités du GPU pour la visualisation scientifique.

14h45 - Interactions R et Python - Marc Fuentes
(PDF)

Dans cette présentation nous aborderons les interactions entre Python et R : notamment comment appeler du code R en Python et réciproquement. Nous verrons aussi comment appeler directement certains fonctions de la bibliothèque R depuis Python. Enfin nous terminerons en parlant de Jupyter, un projet de bloc-notes qui intègre différents noyaux de calcul en particulier R et Python.

15h30 - pause café
15h45 - Babel : écrire et gérer son code avec org-mode - Louis Poirel

Avec Babel, il est possible d'exécuter des blocs de code à l'intérieur d'un document Org-mode : dans un seul fichier texte, vous pouvez par exemple maintenir, exécuter ou exporter du code FORTRAN, des scripts de post-traitement en Bash, Python ou R et une documentation comprenant des formules LaTeX et des images. Org-mode devient ainsi un bon outil pour aller vers une démarche de programmation lettrée (literate programming) et de recherche reproductible (reproducible research).

16h30 - Vers une pile logicielle solveur utilisant les supports d'exécution - Florent Pruvost
(PDF)

Pour exploiter des supercalculateurs modernes, un grand nombre de bibliothèques complexes sont requises. Leur choix, paramétrage et interactions sont généralement plateforme dépendant et peuvent induire une complexité logicielle très importante.

Pour construire une telle pile logicielle, beaucoup d'experts doivent coopérer afin de contraindre la combinatoire de constructions possibles et faciliter le déploiement de la pile sur n'importe quelle plateforme. Alors qu'un grand nombre de paramètres peuvent être employés par défauts, l'utilisateur doit pouvoir modifier précisément certains paramètres clefs pour garantir les performances sur des machines potentiellement exotiques.

Dans cette présentation, je présenterai la feuille de route suivie pour la construction et la maintenance d'une pile logicielle solveur complexe pour le calcul haute performance. L'originalité est de permettre le déploiement quasi automatique des briques logicielles avec leurs dépendances tout en laissant la liberté au développeur de changer certains éléments quel que soit le niveau de la pile (MPI, moteur d'exécution, solveur, etc) tout en garantissant l’interopérabilité avec les autres composants.

Édition du 24 mars 2015

14h00 - Pharo, un langage moderne, un environnement de live programming, une communauté qui monte - Damien Cassou
(PDF)

Pharo est un langage pur objet, dynamiquement typé et réflexif. Pharo c'est aussi un environnement de développement moderne qui évolue tous les jours. L’objectif de Pharo est que des programmeurs puissent faire du business de manière fun et efficace ! Cette présentation fera un rapide tour des buts, de la communauté et des réalisations actuelles. Après une rapide présentation du langage et de l'environnement, je présenterai la pile web et la persistance.

14h45 - Cilk, un langage précurseur pour la programmation parallèle - Olivier Aumage
(PDF)

Le langage Cilk est une extension du langage C destiné à la programmation parallèle, conçu au milieu des années 90 par l'équipe de Charles E. Leiserson au MIT, et actuellement développé par la société Intel sous le nom Intel Cilk Plus. Cilk a été précurseur en étant l'un des premiers environnements à utiliser le modèle de parallélisme de tâches. De nombreux environnements de programmation parallèle conçus ces 10 dernières années en réponse à l'arrivée des architectures multi-cœurs s'inspirent avec plus ou moins de liberté de ce modèle fondateur.

15h30 - pause café
15h45 - Docker : maîtrisez l'environnement d'exécution de vos applications - Aurélien Dumez
(PDF)

Docker est une solution open source permettant d'embarquer des applications dans des conteneurs virtuels. Cette abstraction apporte aux développeurs la possibilité d'empaqueter ensemble les applications et leurs dépendances, pour une mise en production et des évolutions plus rapides. Le projet Docker est jeune (2013) mais la communauté s'en est emparé pour construire un écosystème riche et dynamique que je vous propose de découvrir.

J'aborderai dans un premier temps les principes de fonctionnement de Docker. Je vous présenterai ensuite le Hub, communauté de partage des images construites pour Docker. Enfin je vous montrerai en pratique comment utiliser ces outils pour embarquer facilement votre propre application dans un conteneur.

16h30 - À la découverte des espaces expérimentaux du R+1 - Hervé Mathieu
(PDF)

Avec l'arrivée du bâtiment Inria à Talence en juillet 2012, les équipes de recherche des domaines domotique, robotique, interaction homme-machine ont eu accès à des espaces expérimentaux dédiés, espaces situé au R+1 du bâtiment. Nous vous proposons de décrire les différents espaces, présenter quelques réalisations (notamment via l'impression 3D) et expérimentations menées depuis le début de cette histoire.

Édition du 18 novembre 2014

14h00 - StarPU : Laissez le support d'exécution gérer vos tâches ! - Samuel Thibault
(PDF)

Utiliser le plus efficacement possible un GPU nécessite non seulement de bien programmer les noyaux de calcul, mais aussi de choisir leur ordonnancement, gérer les transferts de données et les recouvrir par des calculs... ce qui est d'autant plus difficile quand on a plusieurs GPUs ! StarPU s'occupe de tout cela pour vous, laissez-le faire !

14h45 - Faire des releases logicielles : pourquoi, quand, comment ? - Brice Goglin
(PDF)

Le développement logiciel implique notamment de publier régulièrement de nouvelles versions. Dans cet exposé, nous expliquerons l'utilité de ces releases logicielles, détaillerons des contraintes à prendre en compte lors de leur planification, donnerons quelques conseils techniques pour leur construction et sur la façon de les diffuser aux utilisateurs.

15h30 - pause café
15h45 - Un aperçu de C++ 11 - Bérenger Bramas
(PDF, code)

Le standard C++ 11 offre diverses nouveautés et est maintenant pris en charge par la plupart des compilateurs. Toutefois, C++ 11 demeure peu utilisé et méconnu.

Ce nouveau standard améliore beaucoup d'aspects du langage : la conception OO, le cœur du langage, la STL et même la prise en charge de la concurrence.

Dans cet exposé je présenterai les points les plus pertinents de C++ 11 en utilisant de petits exemples. Je consacrerai une part importante de la présentation à la concurrence.

Édition du 15 juillet 2014

14h00 - Introduction au langage D - Marc Fuentes
(PDF)

Le D est un langage de programmation apparu, il y a environ une dizaine d'années, dans la lignée des C, C++ et C# et présentant plusieurs paradigmes de programmation : impératif, fonctionnel, générique, orienté-objet, génératif et même concurrent. Muni d'un ramasse-miette, ainsi qu'une solide bibliothèque standard, le langage permet d'exprimer assez facilement des concepts ou des algorithmes déjà évolués, sans rogner sur la performance, grâce à une prise en charge native pour les architectures Intel et ARM par les compilateurs classique (DMD, GDC, LDC).

Après une introduction élémentaire au langage, j'illustrerai par des exemples choisis les différents paradigmes de programmation et je terminerai par quelques tests de performance.

14h45 - Les Autotools GNU sont ce qu'il faut à vos utilisateurs - Ludovic Courtès
(PDF, code)

Les « autotools » GNU sont un ensemble d'outils pour standardiser et automatiser la mise en place du système de construction de logiciels. Autoconf s'occupe de l'auto-configuration du logiciel et de l'adaptation à l'utilisateur ; Automake prend en charge la construction du logiciel et fournit une interface utilisateur standardisée ; Libtool aide à la création de bibliothèques.

Nous verrons comment la volonté de simplifier la vie des utilisateurs a guidé certains choix de conception. Nous construirons un exemple utilisant ces trois outils, que nous apprendrons rapidement à aimer.

15h30 - pause café
15h45 - Pourquoi Puppet va devenir votre ami - Florent Paillot
(PDF)

Depuis quelques années on voit souvent passer les termes suivants : "Puppet", "Ansible", "Chef", "DevOps", "Pets vs Cattle". Leur point commun, c'est le domaine d'application : l'automatisation et la gestion de configuration de serveurs.

Après un rapide tour de terminologie, nous verrons comment Puppet permet aux administrateurs systèmes (mais pas que) de passer encore plus de temps au babyfoot ou sur Slashdot.

16h30 - MORSE, un cadriciel aux dents longues - Florent Pruvost
(PDF)

MORSE est une bibliothèque C regroupant des algorithmes de résolution de systèmes linéaires (ex : factorisations de Cholesky, LU, QR, problèmes aux moindres carrés, etc.). Son originalité réside dans l'exploitation de supports d'exécutions tels que Quark et StarPU pour gérer l'exécution de tâches en parallèle sur des supercalculateurs potentiellement hétérogènes (mélange de CPU et accélérateurs).

Nous présenterons le paradigme d'implémentation de MORSE ainsi que les possibilités offertes par cette bibliothèque en analysant les performances d'un algorithme type sur différentes architectures du supercalculateur PlaFRIM.

Édition du 4 mars 2014

14h - Eigen : algèbre linéaire paresseuse - Gaël Guennebaud
(PDF)

Eigen est une bibliothèque C++ d’algèbre linéaire qui inclue la manipulation de matrices et vecteurs denses et creux, des solveurs numériques ainsi qu’un certains nombres de fonctionnalité connexes.

Eigen se veut générique, facile d’utilisation, et performant. Dans cet exposé nous verrons à quels besoins répond Eigen aux travers d’un rapide tours des fonctionnalités et de quelques examples/démos.

Nous verrons pourquoi le C++ peut être particulièrement efficace pour le calcul matricielle via les mécanismes d’évaluation paresseuse qui sont au coeur de Eigen, et nous conclurons sur les évolutions en cours.

14h45 - PaMPA - Cédric Lachat
(PDF)

La bibliothèque PaMPA permet de réaliser le remaillage parallèle de maillages distribués sur une machine à mémoire distribuée, en s'appuyant sur un remailleur séquentiel fourni par l'utilisateur. Les maillages sont manipulés sous la forme de graphes, dont les sommets représentent les divers composants du maillage, et qui peuvent être utilisés pour modéliser d'autres types de traitements parallèles. Nous présenterons l'architecture de PaMPA, et montrerons son interfaçage avec deux remailleurs séquentiels.

15h30 - pause café
15h45 - PlaFRIM 2, le retour - François Rue
(PDF)

Le centre Inria Bordeaux Sud Ouest possède près de la moitié de ses équipes de recherche dans le domaine du calcul haute performance (du niveau support d’exécution au niveau simulation numérique). En local, il existe une masse critique d’utilisateurs rendant cohérent la mutualisation de moyens et de ressources de calcul. Le projet PlaFRIM, mené depuis 2008, a conduit à l’élaboration d’un cluster hétérogène de calcul dont la proximité est fondamentale afin d’assurer la dynamique et la réactivité nécessaires aux équipes de recherche de ce domaine d’application, mais aussi à toutes les équipes désireuses de porter leurs codes de calcul en parallèle.

16h30 - Outils d'aide au développement logiciel - Hervé Mathieu
(PDF)

Des outils d'aide au développement logiciel sont proposés auprès des développeurs du centre : de la forge Inria à MATLAB en passant par Intel Cluster Studio... Il est donc proposé un tour d'horizon des outils mis en place.

Édition du 15 octobre 2013

14h - Présentation du MIC, processeur massivement multi-cœur - Alexandre Denis
(PDF)

Le processeur Intel Xeon Phi™ est un MIC (Many Integrated Core, processeur massivement multi-core) qui développe une puissance de plus de 1 teraflop. Après une présentation de son architecture, nous nous intéresserons aux différentes façons d'exploiter la puissance du MIC dans vos applications.

14h45 - Charm++ - François Tessier
(PDF)

Charm++ pourrait être défini comme une implémentation orienté objet du paradigme bien connu des utilisateurs de MPI qu'est le passage de messages. Cette implémentation offre plusieurs aspects intéressants comme un modèle de programmation spécifique, une granularité plus fine que les processus MPI, et des techniques avancées d'équilibrage de charges. Lors de cette présentation, j'introduirai rapidement les caractéristiques de Charm++ et montrerai au travers de quelques exemples quelques unes des possibilités offertes par cet outil.

15h30 - pause café
15h45 - Introduction à Julia - Marc Fuentes
(PDF)

Le langage Julia développé au MIT et apparu il ya seulement quelques années, semble une alternative solide à des outils de calcul numérique tels que MATLAB, Numpy ou Scilab.

En effet, langage à typage dynamique et utilisant la sélection de méthode comme paradigme principal de programmation, il permet la programmation générique et le parallèlisme distribué. Son système de compilation à la volée (JIT) fondé sur LLVM lui permet d'approcher les performances de programmes compilés en C++.

Après une présentation des possibilités d'utilisation de Julia comme logiciel scientifique, nous aborderons quelques aspects centraux du langage, puis nous conclurons sur des tests de performance.

16h30 - Et Hop, un site Web 2.0 ! - Ludovic Courtès
(PDF, code)

La programmation du Web deux-point-zéro est une pratique trop longtemps rendue difficile par l'utilisation d'une vaste palette d'outils abscons. Ainsi un site Web 2.0 « artisanal » a-t-il recours à au moins trois langages de programmation différents, peu ou pas intégrés, hérités de l'ère 1.0 et rafistolés pour faire face aux exigences du 2.0.

Nous présentons Hop, un langage de programmation pour le Web 2.0. Hop a l'ambition de résoudre ces problèmes en offrant un langage unifié pour la création de sites Web et un cadre cohérent pour les interactions client/serveur.

Après avoir glosé sur les principaux concepts de Hop, orateur et public construiront ensemble en 15 minutes un site Web 2.0 déjà susceptible de faire trembler les multinationales de l'Internet centralisé.

Édition du 18 juin 2013

14h - Présentation de Harmony, un framework pour faciliter l'analyse des dépôts logiciels - Jean-Rémy Falleri
(PDF)

Le validation empirique des pratiques de génie logiciel est devenu de plus en plus cruciale dans la communauté de recherche. Utiliser des données provenant des dépôts de logiciels est d'une des manières de procéder à une telle validation. Malheureusement, obtenir de telles données est très fastidieux car il existe de nombreux types différents de dépôts logiciels (Git, Mercurial, Subversion, ...). Le thème Génie Logiciel du LaBRI a créé le framework Harmony pour faciliter la création d'analyse de dépôts logiciels. Lors de cette présentation je détaillerai le fonctionnement d'Harmony ainsi que les services qu'il peut offrir pour analyser des dépôts logiciels.

14h45 - Initiation au développement sur mobile - Camille Manano
(PDF)

De nos jours, l'accès aux informations se fait de plus en plus via mobile ou tablettes : le nombre d'utilisateurs mobiles est maintenant plus important que celui des autres ordinateurs ! Toutefois le développement mobile apporte de nouvelles contraintes en termes d'interfaces, d'écrans... Dans cet exposé, nous expliquerons l'intérêt du développement natif, détaillerons les architectures de deux principaux systèmes d exploitations (Android et iOS) et donnerons quelques informations sur les outils utilisés pour le développement.

15h30 - pause café
15h45 - Bonnes pratiques de « propriété intellectuelle » dans le développement logiciel - Marianne Lamour François Pellegrini
(PDF)
16h30 - Plateforme d'intégration continue nationale — https://ci.inria.fr - Damien Martin-Guillerez
(PDF)

L'intégration continue consiste à reconstruire un projet informatique et éventuellement ses dépendances à chaque modification du code source. Cela permet de se rendre compte au plus tôt des problèmes dès qu'ils apparaissent. La reconstruction des paquets peut être accompagné de tests automatique.

Les logiciels standard pour mettre en place l'intégration continue vérifient périodiquement les modifications sur le gestionnaire de code source tel Subversion ou Git et déclenche sur des machines d'executions des tâches de construction ou de tests. Jenkins est l'un des logiciels d'intégration continu les plus connus.

La plateforme d'intégration continue d'Inria fourni des instances d'exécution Jenkins et une architecture d'esclave virtuels permettant de mettre en oeuvre de l'intégration continue pour les projets d'Inria. Après une courte introduction sur l'intérêt de l'intégration, cette présentation se penchera sur la plateforme d'Inria, son architecture et son utilisation.

Édition du 5 février 2013

salle Ada Lovelace

14h - Utiliser R : Spécificités du logiciel et exemples d'application - Raphaël Coudret, Sébastien Fourestier
(PDF)

GNU R est un logiciel de calcul scientifique qui repose sur le langage de programmation éponyme. Bien connu des ingénieurs et des chercheurs en statistique, il offre également des fonctionnalités accessibles à un public plus large. Lors de cet exposé, après avoir présenté quelques caractéristiques propres à ce logiciel et à ce langage de programmation, nous détaillerons — à l'aide d'exemples — les intérêts que présente R pour la génération de graphiques. Nous discuterons enfin de son interfaçage avec d'autres composants informatiques.

14h45 - Faire des releases logicielles : pourquoi, quand, comment ? - Brice Goglin
(PDF)

Le développement logiciel implique notamment de publier régulièrement de nouvelles versions. Dans cet exposé, nous expliquerons l'utilité de ces releases logicielles, détaillerons des contraintes à prendre en compte lors de leur planification, donnerons quelques conseils techniques pour leur construction et sur la façon de les diffuser aux utilisateurs.

15h30 - pause café
15h45 - Une introduction au langage Haskell - Sylvain Henry
(PDF)

Haskell est un langage de programmation fonctionnel, pur et non-strict. Dans cette présentation d'introduction, nous expliquerons ce que cela implique et comment cela permet d'écrire des programmes de façon élégante, concise et sûre.

16h30 - Le langage Dart - Damien Martin-Guillerez
(PDF)

Quiconque a déjà développé en JavaScript a du repérer les manques et les incohérences du langage.. Une équipe chez Google, spécialiste des langages de programmation à base de machine virtuelle, a décidé de corriger ces problèmes et plus encore : ils ont créé le langage Dart. Leur ambition est de “corriger le Web” avec ce langage.

Dans cette présentation, nous introduirons ce langage qui supporte des paradigmes objet, fonctionnel, impératif. Dart, lorsqu'il tourne sur sa machine virtuelle, est plus rapide que JavaScript sur la machine virtuelle V8. Grâce à un compilateur optimisé vers JavaScript, il tourne sur tous les navigateurs avec une moyenne de 30% de surcharge par rapport à du JavaScript natif.

Édition du 2 octobre 2012

14h - Alternatives libres à MATLAB - Marc Fuentes
(PDF)

Dans cette présentation, nous nous attacherons à décrire diverses alternatives libres au logiciel de calcul numérique Matlab. Après une brève introduction de la problématique et un tour d'horizon des alternatives possibles, nous parlerons plus spécifiquement des logiciels GNU Octave et Python Numpy/Scipy, en donnant éventuellement quelques exemples et comparaisons de performances.

14h45 - Programmation par directives pour le HPC - François Rué
(PDF)

De nombreuses présentations traitent du calcul sur machine hétérogène, l'idée est ici de s'intéresser principalement à la programmation hétérogène. Il y a de nombreuses, voire beaucoup, d'approches ayant été développées pour programmer de tels systèmes ; cette présentation défend le fait qu'aucune ne permet de trouver une véritable solution à ce problème et d'atteindre le véritable objectif. Nous verrons rapidement l'étendue des systèmes matériels, pourquoi les programmer reste complexe, et pourquoi développer un modèle haut niveau est encore plus compliqué.

15h45 - Ride the Caml! Une introduction au langage Caml - Damien Martin-Guillerez
(PDF)

Caml est un langage multi-paradigme développé à Inria. Il est devenu l'un des produits les plus connus d'Inria (si ce n'est le plus connu). C'est un langage de programmation typé fortement et laissant le développeur le choix entre le fonctionnel et l'impératif. Il permet aussi la reconnaissance de motif sur les types des arguments.

Lors de cette présentation, nous illustrerons la beauté de ce langage avec des exemples et nous expliquerons la puissance des concepts sous-jacents (typage fort, reconnaissance de motif sur les types).

16h30 - Let's Go! Une introduction au langage Go - Aurélien Dumez
(PDF)

Pourquoi un nouveau langage ? Peut-il trouver sa place au milieu de l'offre actuelle ? Ces questions se posent alors que Google a annoncé il y a quelques mois la première version stable de son nouveau langage : Go.

Cette présentation propose une première approche de Go. Nous y aborderons les spécificités de ce langage et nous verrons, au travers de courts exemples, comment l'apprivoiser. Nous évoquerons également les outils et ressources disponibles en ligne pour l'exploiter au mieux.

Éditions précédentes ▼