Dev & Code il y a 1 hAjouter aux favoris
Mitchell Hashimoto (fondateur d'HashiCorp) signe un essai qui pose une thèse simple : à l'ère des CPU larges, ne pas connaître le SIMD, c'est laisser 4× à 16× de performance sur la table.
Mitchell Hashimoto - le co-fondateur d'HashiCorp devenu contributeur individuel prolifique (il travaille aujourd'hui sur Ghostty, son émulateur de terminal en Zig) - publie un long billet intitulé simplement Everyone Should Know SIMD. La thèse tient en une phrase : dans un monde où les CPU stagnent en fréquence mais s'élargissent en registres vectoriels, ignorer le SIMD c'est laisser dormir des ordres de grandeur de performance.
SIMD (Single Instruction, Multiple Data) désigne les instructions CPU qui appliquent la même opération à plusieurs valeurs simultanément - additionner huit float en un seul cycle, comparer seize octets d'un coup. Sur les CPU x86-64 modernes, ce sont les jeux d'instructions SSE / AVX / AVX2 / AVX-512. Sur ARM (Apple Silicon, serveurs Neoverse), c'est NEON et SVE.
Le débat n'est pas nouveau - le SIMD existe depuis MMX (1996). Ce qui a changé :
float32 ou 64 int8.Le message central : le SIMD n'est pas réservé aux codeurs de moteurs graphiques ou de codecs vidéo. Toute manipulation de données en masse - parsers JSON, moteurs de recherche plein texte, comparaisons de chaînes, calculs statistiques, filtres d'image, hachages - bénéficie massivement d'un passage en vectoriel.
Des cas d'école tangibles :
std::sort d'un facteur 3-5 sur des tableaux d'entiers.Autrement dit : ce n'est plus une niche, c'est une compétence de base pour tout ce qui touche à la performance sur volume.
Le SIMD à la main est réputé pénible : intrinsics illisibles, portabilité fragile entre x86 et ARM. Trois approches viables aujourd'hui :
core::simd en Rust nightly, @Vector builtin en Zig).Pour un développeur applicatif « standard », l'entrée par une bibliothèque portable (Highway, std::simd, @Vector) évite de plonger dans les intrinsics de bas niveau tout en gardant l'essentiel du gain.
Hashimoto touche juste : la génération de développeurs formée sur des runtimes managés (JavaScript, Python, Go) ignore souvent que le CPU dispose depuis dix ans de moyens de calcul qui ne sont jamais utilisés par leur code. Ce n'est pas une accusation - c'est un constat. Et le retour sur investissement, quand on connecte enfin ces moyens à un chemin critique, est spectaculaire.
À retenir
std::simd, Zig @Vector) rendent l'entrée abordable.Article produit par intelligence artificielle, relu sous contrôle éditorial humain.