Méthodes de programmation pour le calcul intensif
- Code de l'UE SPHYM126
-
Horaire
15 15Quadri 1
- Crédits ECTS 3
-
Langue d'enseignement
Français
- Professeur Mayer Alexandre
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.
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. 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.
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
Un syllabus est consacré aux méthodes par Différences Finies.
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. Introduction aux commandes UNIX et à l'utilisation d'un cluster informatique.
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.
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.