GCC 14が先日新機能の実装を停止し、正式リリースに向けてバグの修正フェーズに突入しました。その直前にIntelのAVX10.1のサポートが追加されていることがわかりました。
AVX10
AVX10拡張命令セットは、AVX512の後継に当たる命令セットです。AVX512のすべての機能をAVX10が踏襲した上で互換性のために両方がサポートされる方針です。
AVX512の機能は基本的に512bit演算器を必要としていましたが、AVX10では必ずしもそうではなく、256bitあるいは128bitでも機能を扱える用に進化しています。これは可変長になっているということを意味しており、ArmのSVEに似ているといえます。
当初AVX512のみの対応だったVNNIの対応が後に256bitのAVX2にも追加されるなどかなりややこしかったことや、AVX512-XXXXのような命令が多岐にわたって追加されたこと、世代やラインナップあるいはセグメントによってサポートされる命令が異なっていたことなどから、複雑で分かりにくくなっていたAVX512を整理するためにもAVX10が導入されます。この関係で、AVX512はこれ以上拡張されず、今後はAVX10.xというバージョンで管理されるようになります。
また、512bit演算器を必須としないことから、Intel Hybrid TechnologyでPコアのみの対応となり結果としてプロセッサとして対応してこなかったAVX512機能がAVX10として今後実装されることになります。
バージョン
AVX10は今後数世代・数年に渡って順次実装されていくことになります。
まず、Xeonから搭載されていき、最初の製品はGranite Rapidsになるよう。Granite Rapidsはリリースサイクル的に2024年後半に登場する第6世代スケーラブルプロセッサになる見込みの製品です。
Granite RapidsではAVX10.1が実装されますが、この時点ではAVX512以上の機能は提供されず、準備段階となります。実際にAVX512からの拡張やP/Eコアの両対応や可変長に対応するのはAVX10.2となります。つまりコンシューマー向けのプロセッサにAVX10が降ってくるのも、実用面でAVX10が登場するのも少なくとも2年ほどあとということになります。
GCC 14
GCC 14は先日機能追加フェーズが終了し、現在正式リリースに向けてバグの修正や安定性の向上が進んでいます。
Intelはこのフェーズ移行の直前にAVX10.1のサポートをGCC 14に追加し、Granite Rapidsリリースへの準備を進めている事がわかります。
おそらくAVX10.2のサポートはGCC 15になる見込みです。
APXのサポートも進む
また、同時にAPXのサポートも進めています。
APXは既存の汎用レジスタ(GPRs)を16から32に増加させ、レジスタへのロード・ストアをそれぞれ最大10%と20%削減する事ができるということです。レジスタへの読み書きの頻度が低くなることで性能が向上します。対応はコンパイラのみで、既存のソフトウェアもAPXに対応したコンパイラで再コンパイルすることで恩恵が受けられます。
APXのサポートはLLVM Clangでもサポートが進んでいます。