Introduction au HPC
notions de base
Cette page met à la disposition du public les documents du cours.
Dernière mise à jour de cette page : 07 September 2021 13:09.
Matériaux pédagogiques
Tous les documents ci-dessous qui ne sont pas explicitement "copyrightés" sont dans le domaine public.
Cours
- Cours 1 (introduction). Les diapos et le poly.
- Cours 2 (MPI). Les diapos [(c) Pierre Fortin], diapos bonus [(c) Pierre Fortin]. Suite des diapos. Le poly.
- Cours 3 (algo). Les diapos. Le poly.
- Cours 3.5 (algo). Les diapos.
- Cours 5 (OpenMP). Les diapos.
- Cours 6 (OpenMP avancé). Les diapos, plus de diapos, encore plus de diapos. Un poly partiel.
- Cours 7 (vectorisation). Les diapos
- Cours 8 (Memoire, caches). Les diapos. Le poly. Guide de lecture : les sections 8.2 et 8.4 sont les plus importantes. La section 8.1 est là pour votre culture générale (pas grave si vous ne comprenez pas tout). Les sections 8.3 et surtout 8.5 sont plus avancées, à lire dans un deuxième temps !
- Cours 9 (équilibrage, rooflines). Les diapos.
TD / TP
- TD 1. L'énoncé : version imprimable et version à consulter en-ligne [(c) Pierre Fortin].
- TP 1. L'énoncé : version imprimable et version à consulter en-ligne [(c) Pierre Fortin].
- TD / TP 2 & 3. L'énoncé : version imprimable et version à consulter en-ligne [(c) Pierre Fortin]. Le fichier mandel.c et rastefile.h.
- TD / TP 4. L'énonce : version imprimable et version à consulter en-ligne. Le fichier heatsink.c (à paralléliser) et le script python de rendu graphique. La vidéo de rendu animé et la visualisation du flux de chaleur dans le dissipateur.
- TD / TP 5. L'énoncé : version imprimable et version à consulter en-ligne [(c) Pierre Fortin]. Le fichier matmul.c.
- TD / TP 6. L'énoncé : version à consulter en-ligne [(c) Pierre Fortin]. Les fichiers fibo.c, quicksort.c, produit_terme.c, dotproduct.c.
Infos pratiques
Problèmes avec git
et/ou impossible d'accéder à internet depuis la PPTI
Pour git
, la solution est donnée ici :
git config --global http.proxy http://proxy.ufr-info-p6.jussieu.fr:3128 git config --global https.proxy https://proxy.ufr-info-p6.jussieu.fr:3128Pour l'accès au web (par exemple pour
wget
) :
export http_proxy="proxy.ufr-info-p6.jussieu.fr:3128" export https_proxy="proxy.ufr-info-p6.jussieu.fr:3128"
Problèmes avec SSH à la PPTI
Pour que tout marche bien, il faut et il suffit :- Que vous ayiez une paire de clef SSH sur votre machine personnelle (la clef publique est dans
$HOME/.ssh/id_rsa.pub
). Si vous n'en avez pas, lancez :ssh-keygen
. - Que sur votre machine personnelle, vous ayiez un fichier
$HOME/.ssh/config
contenant :ForwardAgent yes
- Que vous vous connectiez à la passerelle (
ssh [numéro étudiant]@ssh.ufr-info-p6.jussieu.fr
). - Que, sur la passerelle, vous ayiez un fichier
$HOME/.ssh/config
contenant :StrictHostKeyChecking no ForwardAgent yes
- Que, sur la passerelle, vous ayiez un fichier
$HOME/.ssh/authorized_keys
contenant votre clef publique (celle qui est sur votre machine personnelle).
- [facultatif, ça dépend des distributions]
ssh-agent bash ; ssh-add
(demande le mot de passe de la clef, si défini) ssh [numéro étudiant]@ssh.ufr-info-p6.jussieu.fr
(pas de mot de passe demandé).ssh ppti-14-401-01
(pas de mot de passe demandé).ssh ppti-14-401-02
(pas de mot de passe demandé).
Si aucun mot de passe ne vous est jamais demandé, alors c'est bon.
Accès aux machines de la PPTI pour les étudiants de MAIN4
Tous les étudiants de MAIN4 qui suivent le cours ont un compte à la PPTI. Votre login est votre numéro étudiant. Votre mot de passe est votre mot de passe habituel pour atteindre la messagerie, moodle, etc.
Vous pouvez vous connecter directement sur les machines (attention, la première fois qu'on se connecte il faut essayer deux fois avant que ça marche), ou bien à distance via la passerelle (ssh [numéro étudiant]@ssh.ufr-info-p6.jussieu.fr
depuis chez vous).
Vérifiez que ça marche avant les vacances. Si vous avez un problème pour accéder aux salles de TP de la Polytech' à distance, ça vous fera un plan B.
Machines multi-coeurs pour les TP avec OpenMP
À la PPTI, il y a actuellement 4 machines multi-coeurs accessibles aux étudiants et dédiées au calcul scientifique :
ppti-gpu-1
: 44 coeurs, 384Go de RAM.ppti-gpu-3
: 36 coeurs, 128Go de RAM.ppti-gpu-4
: 40 coeurs, 1152Go de RAM.ppti-gpu-5
: 32 coeurs, 192Go de RAM.
ssh ssh
depuis la PPTI, ssh [numéro étudiant]@ssh.ufr-info-p6.jussieu.fr
depuis chez vous). Elles possèdent un système de fichier commun, mais qui est différent de celui de vos comptes normaux. Il faut donc uploader vos codes dessus avec scp
ou rsync
.
Dans tous les cas, vérifier avec top
ou w
qu'aucun autre étudiant n'est en train de faire tourner ses codes avant de lancer un programme qui occupe toute la machine...
Problèmes avec MPI à la PPTI
Si vos programmes MPI fonctionnent bien à l'intérieur d'un même noeud de la PPTI mais que vous avez des problèmes bizarres en passant sur plusieurs noeuds, la solution est probablement la suivante.
- Créer un dossier
$HOME/.openmpi
- Créer un fichier
$HOME/.openmpi/mca-params.conf
avec le contenu suivant :btl_tcp_if_include = eth0
Explication : OpenMPI utilise toutes les interfaces réseau disponibles, or certaines sont "fictives" et ne permettent pas de communiquer avec d'autres noeuds. On force OpenMPI à se restreindre à eth0
et du coup ça marche...
Ressources sur MPI
OpenMPI, la librairie installée dans les salles de TP (et facile à installer chez vous).
Carte de référence MPI faite par l'IDRIS.
Cours sur MPI à l'IDRIS.
La page d'un autre cours (en anglais), avec des vidéos plutôt sympa qui expliquent le produit matrice-vecteur.
Une liste (presque) exhaustive des fonctions MPI.
la spécification MPI officielle (pdf de 1000+ pages).
Ressources sur OpenMP
La Spécification Officielle (666 pages)
Cours sur OpenMP de l'IDRIS (avec des exemples en Fortran...).
Ressources sur la vectorisation
La liste des instructions vectorielles sur processeurs Intel