GoにプラットフォームPlatform-Independent SIMD実験API登場
Judul asli: Platform-Independent SIMD in Go
Mengapa Ini Penting
GoネイティブでSIMD対応が進むことで、AI・暗号・データ処理の高速化がアセンブリ不要で実現できる点が業界的に重要。
Go 1.26と1.27で、SIMD操作の実験的APIが導入された。amd64向けに1.26で開始し、1.27でarm64・wasmにも対応。完全ポータブルなsimdパッケージも追加された。
Go言語の公式ブログによると、Go 1.26と1.27にSingle Instruction Multiple Data(SIMD)操作の実験的APIが追加された。SIMDはモダンCPUが持つ機能で、例えば8組のfloat64値を1命令で加算するなど、ベクトルデータへの一括処理を高速化する。暗号処理からAIまで幅広い用途で有効だ。
これまでGoからSIMDにアクセスするにはGoアセンブリを書くしかなく、利用は限られたパフォーマンス重要な処理に限定されていた。Go 1.26ではamd64向けAPIを導入し、1.27ではarm64(NEON)とwasmにも拡張した。
各プラットフォームはベクトルサイズが128〜512ビット固定のものや、実行時にサイズを問い合わせる必要があるものなど大きく異なる。そこで1.27ではC++のHighwayを参考にした、プラットフォームおよびサイズに依存しない完全ポータブルなsimdパッケージも実験的に追加された。現在amd64のAVX/AVX2/AVX512、arm64のNEON、wasmのSIMD命令をサポートする。SIMDを持たないプラットフォームではエミュレーションで動作する。
GoのGreen Teaガベージコレクターも既にSIMDをメモリスキャン高速化に活用している。