Go 1.27 introduit une API SIMD portable

Original : Platform-Independent SIMD in Go

Pourquoi c'est important

Une API SIMD portable ouvre l'accès CPU haute performance à tout l'écosystème Go.

Go 1.27 lance une interface SIMD multiplateforme expérimentale, inspirée de Highway (C++). Elle prend en charge AVX/AVX2/AVX512 sur amd64, NEON sur arm64 et SIMD WebAssembly, avec émulation sur les plateformes non compatibles.

Historiquement, accéder aux instructions SIMD depuis Go exigeait d'écrire de l'assembleur Go — une contrainte qui décourageait son adoption sauf pour les noyaux de calcul ultra-critiques. Go 1.26 a franchi un premier pas avec une API SIMD dédiée à amd64. Go 1.27 complète ce travail sur arm64 (NEON) et wasm, puis introduit un paquet simd pleinement portable, conçu pour fonctionner sans modification sur les différentes architectures.

Le défi central est l'hétérogénéité des plateformes : taille de vecteur fixe à 128 bits sur wasm, PowerPC et s390x ; 128, 256 ou 512 bits sur amd64 ; taille variable de 128 à 2048 bits sur arm64 (SVE). L'API plateforme-indépendante abstrait ces différences. Elle vise des performances proches de l'assembleur sur les machines SIMD natives, et propose une émulation correcte ailleurs. Le ramasse-miettes Green Tea de Go utilise déjà SIMD pour accélérer le scan des objets vivants en mémoire, preuve que l'enjeu dépasse le simple calcul scientifique.

Source

go.dev — Lire l'original →