CPU vs GPU vs NPU : conception, types de données et efficacité
Le CPU est un processeur généraliste capable de tout exécuter : avec un petit nombre de cœurs complexes, il termine une tâche le plus vite possible. Le GPU traite en parallèle de grandes quantités de données avec un grand nombre d'unités de calcul et sert à des calculs parallèles très variés, comme le graphisme ou l'entraînement de l'IA. Le NPU est un circuit dédié aux opérations de multiplication-accumulation sur des matrices qui représentent l'essentiel des calculs des réseaux de neurones : en alignant de nombreuses unités de calcul de faible précision comme l'INT8 et en réutilisant les données dans la mémoire sur puce, il effectue l'inférence avec une efficacité énergétique très élevée. En contrepartie, il est peu à l'aise avec les opérations qu'il ne prend pas en charge.
| Critère | CPU | GPU | NPU |
|---|---|---|---|
| Philosophie de conception | Généraliste, faible latence. Terminer une tâche le plus vite possible | Haut débit. Traiter en bloc de grandes quantités de calculs parallèles | Spécialisé dans les opérations des réseaux de neurones (surtout l'inférence), pour maximiser les performances par watt |
| Organisation des unités de calcul | De quelques à quelques centaines de cœurs complexes, chacun avec des unités SIMD | Des milliers d'unités de calcul simples. Beaucoup disposent aussi d'unités de calcul matriciel | Un grand réseau d'unités de multiplication-accumulation (réseau systolique, etc.) et des unités vectorielles pour les fonctions d'activation, etc. |
| Mode de contrôle | Prédiction de branchement et exécution spéculative (dans le désordre) à chaque instruction | Bascule entre de nombreux threads pour masquer la latence mémoire | Suit le plus souvent un flux de données fixé à l'avance par le compilateur, avec peu de contrôle par instruction |
| Points forts | Traitements riches en branchements, système d'exploitation, logique applicative | Graphisme, entraînement et inférence de l'IA, calcul scientifique | Inférence d'IA centrée sur les convolutions et les produits matriciels |
| Mémoire | Grands caches et mémoire principale de type DDR | Mémoire à haut débit de type GDDR ou HBM | Réutilise poids et données intermédiaires dans des tampons SRAM sur puce. Intégré à un SoC, il partage la mémoire principale avec le CPU |
| Types de données principaux | Surtout FP64, FP32 et entiers, mais presque tout | Surtout FP32, FP16 et BF16. Aussi FP8, etc. pour l'entraînement | Surtout faible précision : INT8, INT4, FP16, etc. |
| Mesure des performances | Fréquence d'horloge, nombre de cœurs, IPC | FLOPS (TFLOPS, etc.) | TOPS (le plus souvent une valeur maximale théorique comptée en INT8) |
| Efficacité énergétique en inférence d'IA | Faible | Élevée | La plus élevée. Parfois plus d'un ordre de grandeur au-dessus du CPU |
| Flexibilité | La plus élevée. Tout programme peut s'y exécuter | Élevée. Largement utilisable pour les traitements parallélisables | Faible. Les opérations non prises en charge sont renvoyées au CPU ou au GPU |
| Programmation | Langages de programmation et compilateurs courants | Écriture de kernels dans un modèle de programmation parallèle pour GPU | Les modèles entraînés sont convertis et exécutés par un compilateur d'IA ou un runtime d'inférence. Programmation directe rare |
| Emplacement | Dans tous les ordinateurs | Carte indépendante ou intégré à un SoC | Souvent intégré au SoC des smartphones et des PC. Il existe aussi des puces dédiées pour les centres de données |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.