Une couche linéaire avec une dimension d'entrée de 4096 et une dimension de sortie de 4096 multiplie une matrice d'entrée (batch_size × 4096) par une matrice de poids (4096 × 4096), produisant une sortie (batch_size × 4096). Chaque élément de sortie est le produit scalaire d'une ligne d'entrée et d'une colonne de poids : 4096 multiplications et 4095 additions. Pour un seul exemple, ça fait 4096 × 4096 ≈ 16,8 millions d'opérations multiplication-addition. Pour une seule couche. Un Transformer à 32 couches fait ça des dizaines de fois par couche.
La multiplication matricielle est « embarrassingly parallel » : chaque élément de sortie peut être calculé indépendamment. Un CPU les calcule séquentiellement (rapide par élément, mais sériel). Un GPU en calcule des milliers simultanément (plus lent par élément, mais massivement parallèle). Un NVIDIA H100 effectue ~1000 TFLOP/s de multiplication matricielle FP16 — environ 1 quadrillion d'opérations multiplication-addition par seconde. Ce parallélisme est la raison entière pour laquelle le deep learning est devenu praticable.
GEMM (General Matrix Multiply) est tellement central que les fabricants de matériel l'optimisent de manière obsessionnelle. Les CUDA cores sont conçus pour le matmul. Les Tensor Cores (NVIDIA) effectuent des multiplications de matrices 4×4 en un seul cycle d'horloge. Toute la hiérarchie mémoire (registres, mémoire partagée, cache L1/L2, HBM) est organisée pour alimenter les unités de matmul en données. Quand on dit que l'inférence IA est « limitée par la bande passante mémoire », ça veut dire que le matériel peut multiplier plus vite qu'il ne peut lire les matrices de la mémoire.