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 36h de cours ainsi que 8 heures d’ateliers pratiques 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)
- Roland Denis (ICJ)
- Emmanuel Quemener (CBP)
- Corentin Jacques (LMFA)
- Bastien Di Pierro (LMFA)
Horaires et lieu
Les cours auront lieu les jeudis après-midi du 10 janvier 2019 au 20 juin 2019 de 13h30 à 15h30 (ou 16h30 pour les ateliers) dans l’amphithéatre du Batiment Polytech sur le campus de la Doua.
Attention : Les ateliers pratiques se déroulant en salle informatique, les modules seront limités à 20 personnes
Inscription
Pour vous inscrire, il vous suffit de remplir le questionnaire suivant :
Programme
Le programme du cours se découpe en 6 modules :
I - Initiation aux outils informatiques
- 10/01/2019 : Architectures informatiques
- 17/01/2019 : Bases Unix/Linux
- 24/01/2019 : Connexion ssh et centres de calculs
- 31/01/2019 : Typologie des langages
- 07/02/2019 : Initiation à python (Ateliers)
II - Calcul parallèle
- 14/02/2019 : Parallélisme sur architectures à mémoires partagées
- 28/02/2019 : Parallélisme sur architectures à mémoires distribuées
- 07/03/2019 et 14/03/2019 : Atelier de parallélisation (pi en C, suite en C) Prérequis : connaître un langage bas niveau (Fortran/C/C++).
III - Calculs, méthodes numériques et bibliothèques
- 21/03/2019 : Calcul flottant (démos) + intensité arithmétique
- 28/03/2019 : Méthodes spectrales (Vidéos et codes) (exemple d’usage de FFTW) (src/)
- 04/04/2019 : Résolution de grands systèmes linéaires
IV - Protocoles de calculs et analyse
- 11/04/2019 : Réalisation d’une campagne de calcul
- 25/04/2019 : Visualisation 1D et 2D (gnuplot, matplotlib)
- 02/05/2019 : Visualisation 3D
V - Optimisation
- 09/05/2019 : Python avancé pour le calcul scientifique
- 16/05/2019 : Entre architecture parallèle et application parallélisée : quelques éléments de métrologie
- 23/05/2019 : Debugage et Profiling : calcul séquentiel et parallèle
VI - Developpement
- 06/06/2019 : Bonnes pratiques de développement
- 13/06/2019 : GIT/Gitlab et intégration continue par l’exemple
- 20/06/2019 : Developpement de projet