Mini-symposium

Le Groupe Calcul propose un mini-symposium pour découvrir le langage Julia avec une introduction, des exemples d'applications pour la résolution numérique d'équations différentielles et des retours d'expérience de personnes ayant fait le choix de Julia pour leur recherche. Le langage Julia a été créé par des scientifiques pour faire des sciences. Il offre une syntaxe avec des abstractions haut niveau qui permettent d'avoir un code informatique très proche des équations mathématiques. Avec Julia, vous vous concentrez sur l'algorithme peu importe l'architecture sur laquelle il sera utilisé. Il utilise un mécanisme de compilation simultané qui augmente la performance et s'adapte à la cible matérielle. Le langage est stable depuis juillet 2018. Une nouvelle version LTS (Long-Term-Support) va sortir très prochainement avec Julia v1.6.0. Il est utilisable sous forme de notebooks et offre toutes les caractéristiques qui permettent une recherche "reproductible" avec un mécanisme de partage de code et de packages très performant. De 2019 à 2020, les téléchargements de Julia ont augmenté de 87% pour atteindre 24 millions et le nombre de packages a augmenté de 73% (4800). En 2019 le nombre de téléchargements avait déjà augmenté de 77% par rapport à 2018. Libre, facile à installer et à utiliser, Julia est aussi un candidat idéal pour l'enseignement des méthodes numériques.

Programme

mercredi 23/06

11:00 11:30 Télécharger le support

Julia pour les mathématiques : une introduction

Olivier Garet

Julia est un nouveau langage de programmation pour le calcul scientifique et les mathématiques. Son développement a commencé en 2009, dans le laboratoire Lincoln du MIT. On retrouve dans ce langage de haut niveau les facilités classiques des langages couramment utilisés en calcul scientifique, avec en plus une rapidité d’exécution comparable au C, tirant partie de la technologie de compilation Just In Time. Ainsi, le langage permet d'avoir un temps d'écriture rapide tout en préservant la vitesse d'exécution. Depuis son lancement public en 2012, le langage Julia a rassemblé une large communauté. La sortie de la version 1.0 en août 2018 marque la maturité du langage, qui bénéficie aujourd'hui d'un écosystème complet : large collection de bibliothèques en ligne, environnement intégré de qualité, débogueur et profileur. Le but de cet exposé est de présenter les fondements du langage ainsi que quelques exemples dans des domaines divers des mathématiques, avec une présentation succinte de quelques bibliothèques utiles. L'exposé sera délibérément très généraliste, car je suis convaincu que les qualités du langage (syntaxe naturelle, rapidité d'exécution, création simple d’objets mathématiques, sans être un pro de la POO), en font un excellent candidat pour être le couteau suisse du mathématicien.
11:30 12:00 Télécharger le support

Simulation numérique avec Julia

Mickael Bestard

Dans cet exposé, nous allons présenter le langage de programmation Julia dans le contexte de la simulation numérique. On commencera par aborder la construction d'un code volumes finis 1D général en Julia que l'on comparera avec un code Python, avant de regarder les performances obtenues surun code 2D. On montrera dans un second temps comment Julia permet de s'attaquer à une large gamme de problèmes issus de l'analyse numérique, à travers un exemple de contrôle de trafic routier. Cette exemple mêlera volumes finis, graphes et optimisation avec notamment utilisation d'outils de différentiation automatique.
12:00 12:30 Télécharger le support

Julia, l'unique solution d'un problème d'optimisation

Oskar Laverny

L'estimation de convolutions de lois gammas multivariés via leur projection dans une base de Laguerre, se traite plutôt facilement mathématiquement. Cependant, ce problème inverse de déconvolution fournit une fonction de perte à minimiser ayant plusieurs propriétés fâcheuses, nous forçant à utiliser une optimisation numérique :

  • Globale, car la perte n’est pas convexe et possède pléthore de minima locaux.
  • Compilée, car la perte est lourde, non-parallélisable et très combinatoire.
  • En précision arbitraire, sans quoi les problèmes numériques domine très rapidement le signal.

À ce stade, l'on commence à comprendre que l'on va probablement devoir recoder une libraire entière : peu de librairies d'optimisation globale précompilées permettent l'utilisation de précision arbitraire dans la fonction de perte ainsi qu'à l'intérieur des algorithmes. Nous verrons comment et pourquoi Julia permet d'effectuer cette optimisation directement, bien que cet agglomérat de problème technique et l'entrelacement nécessaire des différentes librairies n’ai pas eu besoin d’être pensé lors de leurs écritures respectives.

12:30 13:00 Télécharger le support

Équations différentielles avec Julia

Pierre Navaro

Le package DifferentialEquations.jl est certainement l'un des meilleurs packages, peut-être le meilleur, en langage Julia. Il est aussi l'une des meilleures bibliothèques disponibles, tous langages confondus, pour résoudre des équations différentielles. Dans cet exposé, nous présenterons des exemples de résolution de systèmes d'équations différentielles et nous verrons à quel point l'interface est à la fois simple car très proche de l’écriture mathématique, et efficace grâce aux performances du compilateur de Julia. Même si DifferentialEquations.jl offre un très grand nombre de méthodes numériques, certaines équations décrivant des phénomènes multi-échelles hautement oscillant restent difficiles à résoudre. Les méthodes classiques sont inefficaces et des méthodes numériques spécifiques sont nécessaires. Les membres de l'équipe projet INRIA MINGUS ont developpé plusieurs stratégies efficaces pour résoudre les EDO hautement oscillantes. Ces techniques sont fondées sur une reformulation mathématique adéquate du problème original. Cette reformulation peut alors être résolue numériquement avec des méthodes numériques usuelles. Nous montrerons comment nous avons procédé pour proposer ces nouveaux schémas aux utilisateurs Julia en utilisant la même interface.

Comité d'organisation

  • Benoit Fabrèges (ICJ, UCBL)
  • Pierre Navaro (IRMAR, Rennes)