gearhashがARM64で2倍高速化、NEON最適化の舞台裏
Speeding up gearhash on ARM64 (2× faster)
Rustクレートgearhashがバージョン0.1.4でNEONバックエンドを獲得し、ARM64上で約2倍高速化した。著者は2019年にFastCDC論文のGEARローリングハッシュをSIMD化したのがきっかけでこのクレートを作成。当時はARM64を最適化対象と考えていなかったが、Apple M1やAWS Gravitonの普及、Hugging FaceのXetクライアント採用により状況が一変。依存チェーンの短縮やコンパイラの再結合との格闘、スカラーレジスタでのテーブル結合など、試行錯誤の末に2倍を達成した。
依存チェーンを短くするため、2ステップ分の更新を書き下して乗算すると、h₂はhから単一のシフトと加算だけで依存するようになる。