Go言語にSIMD対応の実験的APIが登場
原題: Platform-Independent SIMD in Go
なぜ重要か
Go標準でSIMDが書けるようになることで、アセンブリ不要の高速計算コードの裾野が広がり、AIや暗号処理領域でのGoの競争力が増す。
Go言語の開発チームは2026年9月24日、Go 1.26と1.27にSIMD向け実験的APIを追加したと発表した。Go 1.27ではプラットフォームとベクターサイズを問わない完全ポータブルな「simd」パッケージが導入され、amd64(AVX/AVX2/AVX512)、arm64(NEON)、wasmのSIMD命令をサポートする。C++のHighwayライブラリを参考に設計された。
Go言語の公式ブログにて、David ChaseとJunyang Shaoが2026年9月24日に発表した内容によると、Go 1.26と1.27にSIMD操作向けの実験的APIが段階的に追加された。
SIMDはモダンなCPUが持つ機能で、例えばfloat64の値8組を1命令で加算するなど、ベクターデータに対して一括処理を行う。暗号処理やデータ処理、AIなど計算負荷の高い用途で大きな高速化が見込まれる。Go自身のGarbage Collector「Green Tea」もSIMDを活用してライブオブジェクトのメモリスキャンを高速化している。
これまでGoからSIMDを利用するには、Goアセンブリを直接記述するしかなく、ごく一部のパフォーマンスクリティカルなカーネルにしか適用されてこなかった。多くのコードがSIMDの恩恵を受けられないまま、CPUの処理能力を余らせていた。
Go 1.26ではamd64向けのSIMD APIが追加され、Go 1.27ではarm64(NEON)とwasmへの対応が加わった。各プラットフォームに特化したAPIは「archsimd」パッケージに収められている。
さらにGo 1.27では、これらのアーキテクチャ依存APIを超える形で、完全にポータブルな「simd」パッケージが実験的機能として導入された。C++向けSIMDライブラリであるHighwayを参考に設計されており、SIMDをサポートするプラットフォームではアセンブリに近い性能を、まだ対応していないプラットフォームでは十分な精度でのエミュレーションを提供することを目標としている。
SIMDアーキテクチャ間の違いは大きく、wasmやPowerPC、s390xは128ビット固定、amd64は128・256・512ビットの複数サイズ、RISC-V 64は128〜65536ビットの可変長など、プラットフォームごとに表現方法も対応演算も大きく異なる。この多様性への対応が、ポータブルAPIの設計上の核心的な課題となっている。