Informatique Scientifique pour le calcul
Principe
Ce cours est ouvert à toute personne souhaitant s’initier au calcul scientifique et à la programmation parallèle. Il ne nécessite comme pré-requis qu’une connaissance basique de la programmation.
Dans les différents cursus suivis par les étudiant(e)s en cours de thèse, les compétences nécessaires au développement de codes de calcul scientifique sont rarement acquises. Partant de ce constat, nous proposons un enseignement des connaissances indispensables au développement et à la compréhension des méthodes de l’informatique scientifique moderne, à destination des étudiant(e)s, chercheur(euse)s et enseignants-chercheurs. Acquérir des compétences de développeur scientifique est toutefois un processus long et itératif : il s’agira donc ici de permettre aux chercheur(euse)s et thésard(e)s intéressé(e)s de mettre le pied à l’étrier.
L’ensemble des cours vise à apporter des notions de base pour acquérir :
-
une connaissance minimale des architectures des machines contemporaines, ainsi qu’un minimum de savoir sur les systèmes d’exploitation,
-
une maîtrise de la typologie des langages de programmation, afin de permettre une adéquation optimale avec le domaine d’application visé,
-
une connaissance d’un ou plusieurs langages de programmation, orientée vers les besoins du calcul,
-
des bases en représentation de données utiles, algorithmique et complexité,
-
des éléments de méthodes numériques usuelles,
-
des compétences en parallélisme en fonction de l’architecture visée,
-
une vision opérationnelle de la mise en oeuvre pratique.
L’enseignement comportera 30h de cours ainsi que 12 heures de TP (MPI) au total, suivant un parcours “à la carte”. Chaque module étant indépendant des autres (sauf pour les séances de TP), chaque personne intéressée par ce cours pourra construire un cursus en fonction de ses besoins.
Intervenant(e)s
- Anne Cadiou (LMFA)
- Claire Mouton (Creatis)
- Christophe Pera (UCBL, Dépt. de Mécanique)
- Geoffroy Berret (UCBL, Dépt. de Mécanique)
- Benoit Fabrèges (ICJ)
- Denis Roland (ICJ)
- Emmanuel Quemener (CBP)
- Bastien Di Pierro (LMFA)
Horaires et lieu
Les cours auront lieu les jeudis après-midi du 12 octobre 2016 au 08 mars 2018 de 13h30 à 15h30 dans l’amphithéatre du Batiment Polytech sur le campus de la Doua.
Attention : En raison des travaux sur le campus de la Doua, il ne sera pas possible d’avoir accès aux salles informatiques pour les TP MPI. Aussi il vous sera demandé de venir avec votre ordinateur personnel ; un image système vous sera alors fourni pour travailler avec les bonnes bibliothèque.
Inscription
L’inscription à ces modules se fait par mail à l’adresse suivante : coursed AT math.univ-lyon1 DOT fr
en précisant :
- nom et prénoms,
- laboratoire de recherche (ou organisme de rattachement pour les extérieurs à l’Université de Lyon),
- école doctorale (pour les doctorants)
- liste des cours que vous souhaitez suivre.
Ce cours est gratuit.
Programme
Le programme du cours se découpe en 5 modules :
I - Matériel, système d’exploitation et performances
- 12/10/2017 : Architecture et système
- 19/10/2017 : Bases Unix
- 26/10/2017 : Entre architecture parallèle et application parallélisée : éléments de métrologie
II - Calcul parallèle
- 09/11/2017 : SSH et centres de calculs : utilisation et bonnes pratiques
- 16/11/2017 : Parallélisme sur architectures à mémoires partagées
- 23/11/2017 : Parallélisme sur architectures à mémoires distribuées
- du 30/11/2017 au 21/12/2017 : TP MPI. Attention : horaires : 13h30-16h30. Prérequis : connaître un langage bas niveau (Fortran/C/C++). Vous trouverez une image linux avec les bibliothèques MPI à l’adresse suivante : http://lagrange.univ-lyon1.fr/ed/vbox_image_ED-mpi.tar Attention : Le TP du 30/11 aura lieu dans l’amphi 2 du Déambulatoire.
Code MPI : pi en C, pi en FORTRAN, convection en C, convection en FORTRAN, barage en C, barage en FORTRAN, thermique en C, thermique en FORTRAN, flambage, jeu de la vie, fichier de parametre commun à tous les programmes
III - Langages et programmation
- 11/01/2018 : Typologie des langages + Bonne pratique de développement (1)
- 18/01/2018 : Python : introduction générale
- 25/01/2018 : Python : calcul scientifique matplotlib
- 01/02/2018 : Python : optimisation et performances
- 08/02/2018 : Calculs flottants (Notebook Sage) et intensité arithmétique
IV - Méthodes numériques et bibliothèques de calculs
- 15/03/2018 : Méthodes spectrales. Attention : cours décallé au jeudi 15/03
- 22/02/2018 : Résolution de grands systèmes linéaires
V - Développement
- 01/03/2018 : Versionnement, forges et intégration continue
- 08/03/2018 : Débogage, profiling et bonnes pratiques de développement (2)