Cours 2022-2023

Méthodes de programmation pour le calcul intensif [SPHYM126]

  • 3 crédits
  • 15h+15h
  • 1er quadrimestre
Langue d'enseignement: Français
Enseignant: MAYER ALEXANDRE

Acquis d'apprentissage

L'étudiant sera formé à des techniques plus avancées de programmation et à l'utilisation en lignes de commandes d'outils libres et performants. L'objectif principal du cours est la programmation en parallèle (utilisation des librairies OpenMP, MPI et OpenACC). L'étudiant appliquera en exercices différentes méthodes par différences finies pour la résolution de problèmes courants en physique. L'étudiant acquerra finalement les notions de Unix nécessaires à l'utilisation d'un cluster informatique.

Contenu

Travail en lignes de commandes. Installation d'un environnement de travail complet à partir d'outils libres et performants. Utilisation plus avancée du compilateur gfortran (compilation via un Makefile, optimisation, debugger, profiling). Techniques de Programmation en Parallèle : 1. Notions générales de parallélisme 2. Parallélisation avec OpenMP 3. Parallélisation avec MPI 4. Parallélisation via des job arrays 5. Parallélisation sur un GPU avec OpenACC. Méthodes par Différences Finies : 1. Dérivées Numériques 2. Electrostatique 3. Equation de Schrödinger 4. Stabilité numérique. Introduction à l'informatique évolutive (Machine Learning). Notions de Unix et initiation à l'utilisation d'un cluster informatique.

AVERTISSEMENT : ce cours s'adresse à des étudiants ayant un très bon niveau de programmation en Fortran 90.

Table des matières

1. Utilisation plus avancée du gfortran
    travail en ligne de commande
    utilisation de Makefile, debugger, profiling
    Introduction au cluster (Linux, compilateur ifort)
    Fortran 90 : notions avancées
 
2. Méthodes par différences finies
    Dérivées numériques
    Electrostatique
       Equation de Laplace, équation de Poisson
       Approche directe par résolution d'un système d'équations linéaires
       Méthode de Jacobi, méthode de Gauss-Seidel, méthode de sur-relaxation
    Equation de Schrödinger
       Approche par résolution de systèmes propres
          Etats propres d'un potentiel
          Structures de bandes
       Méthode des fractions continues
          Etats propres d'un potentiel
          Transmission à travers une barrière de potentiel
       Equation de Schrödinger dépendante du temps
    Stabilité numérique d'un schéma de discrétisation
 
3. Notions générales de parallélisme
    concepts de cpu time, wallclock time, speedup, efficiency, load balancing, multithreading
    loi d'Amdahl, comment paralléliser
    parallélisation automatique avec ifort
 
4. Parallélisation avec OpenMP
    OpenMP avec gfortran et ifort
    scripts à utiliser sur le cluster
    présentation de la librairie OpenMP
 
5. Parallélisation avec MPI
    MPI avec gfortran et PGI
    scripts à utiliser sur le cluster
    présentation de la librairie MPI
 
6. Utilisation de jobarrays sur le cluster
    Exécution de scripts en parallèle sous Windows
 
7. Parallélisation avec OpenACC (GPU)
    Compilateur PGI & PGI Profiler
    scripts à utiliser sur le cluster
    présentation de la librairie OpenACC
    comparaison entre différentes méthodes de parallélisation de l'équation de Poisson
 
8. Introduction à l'informatique évolutive
    Algorithmes génétiques, Genetic Programming, Intelligence Artificielle
    Démonstration : Supervised Learning sur MNIST avec TensorFlow
    Démonstration : Deep Reinforcement Learning (Deep Q-Learning) sur Breakout
 
Un syllabus est consacré aux méthodes par Différences Finies.

Description des exercices

Travail en lignes de commandes avec le compilateur gfortran. Compilation via un Makefile. Installation d'un environnement de travail complet. Compilation d'un exemple de base avec OpenMP. Résolution numérique de l'équation de Poisson. Calcul des états liés d'un potentiel harmonique. Calcul de la structure de bandes d'un potentiel périodique. Calcul de la diffusion électronique à travers une barrière de potentiel. Parallélisation d'un exercice au choix avec OpenMP ou OpenACC. Introduction aux commandes UNIX et à l'utilisation d'un cluster informatique.


Méthodes d'enseignement

La partie théorique du cours sera donnée essentiellement avec un vidéoprojecteur. Les travaux pratiques pourront être réalisés sur un ordinateur personnel ou dans une salle d'ordinateurs.

Mode d'évaluation

L'examen évaluera essentiellement le travail de l'année. L'étudiant devra montrer qu'il a effectivement acquis les différentes techniques présentées au cours. Il devra présenter ses solutions pour les travaux demandés pendant l'année.

Langue d'enseignement

Français

Lieu de l'activité

NAMUR

Faculté organisatrice

Faculté des sciences
Rue de Bruxelles, 61
5000 NAMUR

Cycle

Etudes de 2ème cycle