Aller au contenu

Glossaire

Le HPC produit des sigles à un rythme soutenu et personne ne les explique. Voici ceux qui apparaissent dans ce document.


A

Accélérateur — Processeur spécialisé adjoint au processeur généraliste : GPU, FPGA, unité matricielle. Il offre plus d'opérations par seconde et par watt, au prix d'un modèle de programmation plus contraint.

Allreduce — Opération collective de MPI qui combine les données de tous les processus (somme, maximum…) et distribue le résultat à tous. Coût en \(O(\log P)\), et synchronisante : tous attendent le plus lent. C'est le motif qui limite le plus souvent le passage à l'échelle.

AoS (Array of Structures) — Tableau de structures. Disposition mémoire où les champs d'un élément sont contigus. Voir SoA.

Amdahl (loi d') — Borne l'accélération d'un programme par l'inverse de sa fraction séquentielle. Voir Modèles de performance.

Apptainer — Système de conteneurs conçu pour le HPC, anciennement Singularity. S'exécute sans privilège, contrairement à Docker.

AVX (Advanced Vector Extensions) — Familles d'instructions vectorielles x86 : AVX et AVX2 sur 256 bits, AVX-512 sur 512 bits.

AVX offset — Baisse de fréquence du processeur sous charge vectorielle soutenue. Peut annuler le gain de la vectorisation.

B

Bande passante mémoire — Débit maximal de transfert entre la mémoire principale et le processeur, en octets par seconde. Mesurée par STREAM. C'est la borne de la majorité des codes de calcul.

BLAS (Basic Linear Algebra Subprograms) — Interface standard des opérations d'algèbre linéaire de base, en trois niveaux : vecteur-vecteur (1), matrice-vecteur (2), matrice-matrice (3). Seul le niveau 3 peut approcher le pic de calcul.

BLIS, OpenBLAS, MKL — Implémentations optimisées de BLAS.

BQP (Bounded-error Quantum Polynomial time) — Classe de complexité des problèmes résolubles en temps polynomial par un ordinateur quantique avec erreur bornée.

Burst buffer — Couche de stockage rapide intercalée entre les nœuds de calcul et le stockage principal, pour absorber les rafales d'écriture.

BSP (Bulk Synchronous Parallel) — Modèle de calcul parallèle en super-étapes séparées par des barrières.

C

Checkpoint (point de reprise) — Sauvegarde de l'état d'un calcul, pour reprendre après interruption. L'intervalle optimal suit la formule \(\tau \approx \sqrt{2CM}\).

FISA — Calcul Intensif et Données Massives, le parcours HPC de l'ENSIIE.

Coalescence — Sur accélérateur, propriété d'un accès mémoire où les threads consécutifs d'un warp accèdent à des adresses consécutives. Sa violation effondre la bande passante.

Compute bound — Se dit d'un code dont la performance est limitée par la capacité de calcul du processeur, et non par la mémoire. Opposé à memory bound.

CSR (Compressed Sparse Row) — Format de stockage de matrice creuse, le plus répandu.

CUDA — Modèle et langage de programmation d'accélérateurs de NVIDIA.

D

Darshan — Outil de profilage des entrées-sorties d'une application, sans recompilation.

DMD (Dynamic Mode Decomposition) — Méthode d'extraction de modes dominants d'un système dynamique à partir d'instantanés.

Dragonfly — Topologie réseau à groupes densément connectés reliés par des liens globaux. Économe en câbles, sensible au placement.

E

ECM (Execution-Cache-Memory) — Modèle de performance plus précis que le roofline, modélisant les transferts entre niveaux de cache.

Eager (protocole) — Protocole MPI pour les petits messages : l'émetteur copie dans un tampon et rend la main immédiatement. Voir rendezvous.

ECTS — European Credit Transfer System. Unité de crédit universitaire européenne.

Exaflop — \(10^{18}\) opérations flottantes par seconde.

F

False sharing (faux partage) — Situation où deux threads écrivent dans la même ligne de cache sans partager de donnée logique. La ligne fait des allers-retours entre les cœurs. Coûte un facteur 5 à 20, et est invisible sans perf c2c.

Fat-tree — Topologie réseau en arborescence dimensionnée pour une bande passante constante entre niveaux.

First touch (première touche) — Règle Linux selon laquelle une page mémoire est physiquement allouée dans le domaine NUMA du thread qui y accède en écriture pour la première fois. Cause majeure de mauvaise performance OpenMP.

FLOP (FLoating-point OPeration) — Une opération flottante. FLOP/s ou FLOPS : opérations par seconde.

FMA (Fused Multiply-Add) — Instruction combinant une multiplication et une addition en une opération, comptée pour deux FLOP.

Flame graph — Représentation graphique d'un profil d'exécution : largeur proportionnelle au temps, empilement vertical de la pile d'appels.

G

GEMM (GEneral Matrix Multiply) — Produit matrice-matrice, l'opération de BLAS niveau 3. Le noyau le plus favorable à une machine.

GPU-aware MPI — Implémentation MPI capable de recevoir directement un pointeur de mémoire d'accélérateur, sans passage par l'hôte.

Green500 — Classement des supercalculateurs en performance par watt.

Gustafson (loi de) — Réponse à Amdahl : à charge proportionnelle au nombre de processeurs, l'accélération croît linéairement.

H

HDF5 — Format de fichier hiérarchique et autodécrit, standard de fait en simulation. Dispose d'un mode parallèle appuyé sur MPI-IO.

HIP — Modèle de programmation d'AMD, quasi-copie de CUDA, avec outil de conversion automatique.

Hockney (modèle de) — \(T(n) = \alpha + \beta n\) : le coût d'un message est une latence plus un terme proportionnel à la taille.

HPCG (High Performance Conjugate Gradient) — Benchmark de gradient conjugué creux préconditionné. Second classement officiel du Top500. Atteint 1 à 5 % du pic, donc représentatif des codes réels.

HPL (High Performance Linpack) — Benchmark de factorisation LU dense. Définit le Top500. Atteint 60 à 90 % du pic.

HPL-MxP — Variante de HPL en précision mixte avec raffinement itératif.

Huge pages — Pages mémoire de 2 Mo ou 1 Go au lieu de 4 Ko. Réduisent la pression sur la TLB.

hwloc — Bibliothèque et outils (lstopo) de découverte de la topologie matérielle d'un nœud.

I

Intensité arithmétique — Nombre d'opérations flottantes par octet transféré depuis la mémoire. Propriété du code. Détermine le régime (compute ou memory bound).

InfiniBand — Technologie de réseau à faible latence courante en HPC.

IO500 — Benchmark de stockage mesurant bande passante et débit de métadonnées en un score composite.

IOR, mdtest — Outils de mesure, respectivement de bande passante et de métadonnées, sur système de fichiers.

IPMI — Interface de gestion matérielle d'un serveur : alimentation, console, capteurs, y compris la puissance consommée.

IPC (Instructions Per Cycle) — Nombre d'instructions exécutées par cycle d'horloge. Indicateur de l'efficacité du pipeline.

K

Kokkos — Bibliothèque C++ de portabilité de performance, développée par Sandia. Permet d'écrire un noyau une fois et de le compiler pour CPU ou plusieurs types d'accélérateurs.

Krylov (méthodes de) — Famille de méthodes itératives de résolution de systèmes linéaires : gradient conjugué, GMRES, BiCGStab.

L

LIKWID — Suite d'outils de mesure par compteurs matériels et d'épinglage de threads, orientée HPC.

Ligne de cache — Unité de transfert entre niveaux de mémoire, 64 octets sur la plupart des architectures.

LLVM — Infrastructure de compilation modulaire, avec sa représentation intermédiaire.

Lustre — Système de fichiers parallèle client-serveur, très répandu en HPC. Architecture à serveurs de métadonnées (MDS/MDT) et serveurs d'objets (OSS/OST).

LU (factorisation) — Décomposition d'une matrice en produit d'une triangulaire inférieure et d'une triangulaire supérieure. Coût \(\frac{2}{3}n^3\). C'est ce que calcule HPL.

M

MAQAO — Outil français d'analyse de boucles sur binaire, avec diagnostic des limitations de performance.

Memory bound — Se dit d'un code dont la performance est limitée par la bande passante ou la latence mémoire.

MLPerf — Suite de benchmarks d'apprentissage automatique. La métrique de la partie Training est le temps pour atteindre une précision cible.

MPI (Message Passing Interface) — Standard de programmation parallèle par passage de messages. Le modèle dominant en mémoire distribuée.

MPI-IO — La partie du standard MPI dédiée aux entrées-sorties parallèles.

Multigrille — Famille de méthodes de résolution à complexité optimale pour les problèmes elliptiques : le nombre d'itérations ne croît pas avec la taille du problème.

MUST — Vérificateur d'exécution qui détecte les erreurs d'usage de MPI.

N

NCCL — Bibliothèque de collectives entre accélérateurs NVIDIA.

Non-temporal store — Écriture mémoire contournant le cache, évitant le coût de lecture préalable de la ligne.

NUMA (Non-Uniform Memory Access) — Architecture où le coût d'accès à la mémoire dépend du domaine auquel elle appartient. Un nœud moderne a deux à huit domaines.

O

Occupancy — Sur accélérateur, rapport entre le nombre de warps actifs et le maximum possible. Une occupancy élevée n'est pas un objectif en soi.

OpenMP — Standard de programmation parallèle par directives, pour la mémoire partagée, les tâches et les accélérateurs.

Outlining — Transformation par laquelle le compilateur extrait le corps d'une région parallèle OpenMP dans une fonction séparée.

P

PETSc — Cadre logiciel complet de solveurs pour systèmes linéaires et non linéaires creux. Permet de changer de solveur par option de ligne de commande.

PGAS (Partitioned Global Address Space) — Famille de modèles de programmation présentant un espace d'adressage global partitionné.

Pic de calcul — Performance maximale théorique d'un processeur, en FLOP/s. Jamais atteinte en pratique.

PINN (Physics-Informed Neural Network) — Réseau de neurones dont la fonction de perte intègre les équations physiques du problème.

Power cap (plafond de puissance) — Limite logicielle imposée à la consommation d'un composant. Limiter à 70-80 % coûte typiquement 5 à 15 % de performance.

PUE (Power Usage Effectiveness) — Rapport entre l'énergie totale d'un centre de données et celle consommée par les équipements informatiques seuls.

Pthread — L'API POSIX de threads.

Q

QAOA (Quantum Approximate Optimization Algorithm) — Algorithme quantique variationnel hybride pour l'optimisation combinatoire.

QUBO (Quadratic Unconstrained Binary Optimization) — Formulation d'un problème d'optimisation en variables binaires, langage d'entrée des machines à recuit quantique.

R

RAPL (Running Average Power Limit) — Interface des processeurs Intel et AMD exposant des compteurs d'énergie et permettant d'imposer des plafonds de puissance.

RDMA (Remote Direct Memory Access) — Accès direct à la mémoire d'une machine distante par le matériel réseau, sans intervention du processeur distant.

Raffinement itératif — Technique consistant à résoudre en précision réduite puis à corriger en précision élevée. Principe de HPL-MxP.

Rendezvous (protocole) — Protocole MPI pour les gros messages : négociation avant transfert. Cause des interblocages qui n'apparaissent qu'à grande taille.

RMA (Remote Memory Access) — Les communications unidirectionnelles de MPI : Put, Get, opérations atomiques sur fenêtre.

Roofline — Modèle de performance : \(P = \min(P_{\max}, B \times I)\). Le modèle de référence du domaine.

S

Score-P, Scalasca, Vampir, Cube — Chaîne européenne d'instrumentation, d'analyse et de visualisation de traces parallèles.

Scaling — Strong scaling : accélération à taille de problème fixe. Weak scaling : accélération à taille proportionnelle au nombre de processeurs. Il faut toujours préciser lequel on mesure.

SIMD (Single Instruction, Multiple Data) — Exécution d'une même opération sur plusieurs données simultanément, par registres vectoriels.

Slurm — Gestionnaire de travaux et ordonnanceur de la majorité des supercalculateurs.

SoA (Structure of Arrays) — Structure de tableaux. Disposition mémoire où chaque champ forme un tableau contigu. Permet la vectorisation. Voir AoS.

Spack — Gestionnaire de paquets pour le HPC, compilant depuis les sources avec gestion des variantes et des compilateurs.

SpMV (Sparse Matrix-Vector product) — Produit matrice creuse-vecteur. Irrémédiablement memory bound. Le noyau dominant de HPCG.

SSA (Static Single Assignment) — Forme de représentation intermédiaire où chaque variable est affectée une seule fois. Base des analyses de compilateur.

Stencil — Noyau de calcul où chaque point est mis à jour en fonction de ses voisins. Le motif des schémas de différences finies.

STREAM — Banc d'essai de référence pour la bande passante mémoire.

Streams (CUDA) — Files d'exécution asynchrones permettant de recouvrir calculs et transferts.

Striping — Découpage d'un fichier en bandes réparties sur plusieurs serveurs de stockage. Réglable par lfs setstripe sur Lustre.

SYCL — Standard Khronos de programmation hétérogène en C++ pur.

T

Tâche (OpenMP) — Unité de travail déclarée dynamiquement, avec dépendances, ordonnancée par le runtime avec vol de travail.

TDP (Thermal Design Power) — Enveloppe thermique de conception d'un composant. Ce n'est pas une mesure de consommation.

Tensor Core — Unité matricielle dédiée des accélérateurs NVIDIA, exploitable en précision mixte.

Tiling (ou blocking) — Découpage d'un calcul en blocs tenant dans le cache, pour augmenter la réutilisation des données.

TLB (Translation Lookaside Buffer) — Cache des traductions d'adresses virtuelles en adresses physiques. Sa saturation coûte cher ; les huge pages y remédient.

Top500 — Classement semestriel des supercalculateurs, fondé sur HPL.

ThreadSanitizer (TSan) — Détecteur de courses de données à l'exécution, activé par -fsanitize=thread.

V

Vectorisation — Transformation d'une boucle scalaire en instructions SIMD. Effectuée par le compilateur, à condition que rien ne l'en empêche.

VQE (Variational Quantum Eigensolver) — Algorithme quantique variationnel hybride pour le calcul de valeurs propres.

W

Warp — Groupe de threads exécutés en lock-step sur un accélérateur NVIDIA (32 threads). L'unité d'ordonnancement réelle.

Work stealing (vol de travail) — Stratégie d'ordonnancement où un travailleur inactif prend des tâches dans la file d'un autre. Garantie théorique de Blumofe et Leiserson.

WRF (Weather Research & Forecasting model) — Modèle de prévision météorologique, en Fortran. Au programme de la compétition SC26.