Initiation au calcul scientifique intensif

Ce cours a pour objectif de sensibiliser les futurs utilisateurs du calcul scientifique au développement de méthodologies de calcul sur les architectures contemporaines. Ces dernières ont un impact direct sur les performances en temps d‘exécution des algorithmes numériques. Cette problématique a conduit au développement et l’analyse de nouvelles méthodologies de calculs numériques, adaptées à ces architectures multicoeurs, pour la résolution d’EDP/EDO/EDA. L'accent sera mis à la fois sur l'aspect technologique et algorithmique, et sur leurs applications déterministes et stochastiques.

  • Introduction aux architectures de calcul : Notions de base sur les architectures de calcul. Outils de programmation : langages, compilation, optimisation. Aspects théoriques du calcul réparti. Arithmétique flottante. Complexité, structures de données. Langage C++.
  • Algèbre linéaire : Rappels sur les matrices, normes matricielles et le conditionnement. Calcul de valeurs propres et vecteurs propres : méthode de la puissance, puissance inverse Inversion de système linéaire : méthodes directes méthodes directes par factorisation (LU, QR), méthodes itératives classiques (Jacobi, de Gauss-Seidel et de relaxation), SOR, méthode de Krylov, GMRES. Préconditionnement. Résolution des grands systèmes linéaires creux, techniques de stockages creux. Résolution de systèmes non-linéaires : méthode de Newton.
  • Méthodes de décompositions de domaines - mémoire distribuée (MPI) : Décomposition de domaine de type Schur primal, décomposition de domaine de type Schur Dual (FETI). Accélération de la convergence du problème interface (GCR, GMRES). Méthodes de Schwarz généralisées, Analyse de la convergence de ces méthodes (introduction de l’opérateur de correspondance Dirichlet-Neumann), Analyse de la propagation de l’erreur en espace, Accélération de la convergence de la méthode de Schwarz par Aitken. Préconditionneurs parallèles RAS de méthodes de Krylov. Décomposition de domaine en temps de problèmes non linéaires (EDO), conditions de transmission pour le couplage de modèles.
  • Algorithmes stochastiques - mémoire partagée (openMP / R-parallel) : Algorithmes embarrassingly parallel (bootstrap, Monte-Carlo), ordonnancement des tâches et nombres pseudo- aléatoires en parallèle. Parallélisation d'un algorithme de type Monte Carlo Markov Chain (MCMC) et/ou d'un algorithme de classification de données (clustering hiérarchique CAH). Algèbre linéaire creux pour les chaînes de Markov. Utilisation de la mémoire et masse de données.

    Format : 36h CM