長く書いていると日記のタイトルが被ることがあるので年号入れておきます。
前回のStrataの話題でうちのゲーミングノートPCでQwen3.8 Flash Nextが30tpsくらい出ている話をしたが,今はもう40超えてます。
久しぶりに出してきたPCですが,これTigarLakeと言ってインテルCoreの11世代です。
インテルの暗黒時代で不遇のモデルと言っていいのですが,これ実は個人的にはお気に入りで8コア積んだTigarLakeはレアものです。
TigarLakeは12世代以降では外されたAVX512を搭載しており,加えてVNNIという8ビットの内積演算が追加されています。RyzenではZen4世代から加えられており,Zen5では高速化されています。
Strataくらいの尖ったチューニングをするとこのVNNIの有無で実行速度が結構変わるわけです。同様の話は動画のエンコーダなどでもあるのですが,昨今GPUにさせることが多くあまり話題に上がって来なくなりました。
ちなみに,2027年にリリースされる予定のインテルのNovaLakeとAMDのZen6においてもAVX512VNNIは搭載されますし,なんなら更に両者追加命令が入ります。
一命令で複数のデータを処理するSIMD命令というのがここ数年拡張命令の主役でした。特に512ビット処理ができるAVX512がその最たるものです。しかしながらインテルは上記のTigarLake以降いわゆる消費者PCでは命令を実装しておりません。これがNovaLakeで復活どころか更に色々と追加される見込みです。
AMDは本来互換機ですので完全に追従できるわけもなくある程度追加され,次世代以降で追従となるでしょう。
面白いのはインテルでSIMD以外の追加命令も結構多く入るようです。これらに関してもAMDはこれからの世代で追従することになるのでしょう。
とにかく実機が出るのが楽しみです。
で,TigarLakeが不遇になった理由のひとつでもあるのですが,ソフトウェアがこれらの追加命令に対応していないというのが割とPCあるあるでして本来の実力を発揮しないまま評価されます。特にゲームソフトの類はバイナリの実行ファイルが配布される都合上最適化されていることは期待できません。
個人的にはこう言う状況はなんとかしたいのでオープンソースのものに関してはちょいちょいチューニング紛いのことをして公開したりします。
ここでひとつ話題にしておくのが9月リリースのチェスエンジンStockfishのバージョン19です。
チェスエンジンは過去バージョンを見ればわかる通り拡張命令の対応毎にバイナリファイルを用意し配布されていました。SSE41,AVX2,BMI2,AVX512,VNNI対応,IceLake専用すらあります。(多分中の人はIceLake推しと思います。上記のTigarLakeはその純後継なので趣味合いそう)
それぞれの環境で最速を目指すとこのようなことになるわけです。
それがバージョン19で各環境毎1つのファットバイナリ(ユニバーサルバイナリ)になりました。
実装は1500行を超えたMakefileを見て頂ければ分かるのですが全部入りを実行時に使い分けているだけです。名前を付け替えたオブジェクトファイルを全リンクしてあるので,ファイルサイズが大きくなりますが全部入り一つの方が結局ダウンロードの手間など考えると良いのでしょう。
で,ユーザは嬉しいのですが開発側は割と面倒なことをしていることになります。こういったものも自動化の仕組みはある程度あるのですが,カリカリの限界チューニングとなるとまだまだStockfishのような処理が必要ということですね。
何がオチかというとNovaLakeやZen6が出てくるとこういうのが話題になるんじゃないかと考えているという話を最新トピック交えて休日の昼にだらだらと書いた次第です。
少なくともStockfishの内部バリエーションが2つ増えることが予想されます。