シングルスレッド性能は・・・
今は、macOS版MRWorkerの開発フェーズで、評価精度の向上用作業を完了した。結果的に、FFO40-59性能はかなり向上し、中盤も、少し強く出来た感じなのだが、これは、普通に並列演算を行わせた場合だ。
MasterReversiのリバーシエンジンは、並列演算を行う事が特長になる。
その結果として、マルチコアCPUが当たり前になった今となっては、2000年代に人気だったWZebraは、特に、終盤に行われる勝敗読みが遅すぎて、使う気にならない! みたいな感じになった筈だ。
もっとも、2000年代の主流となっていた高速CPUというのは、Pentium4で、CPUのクロック周波数は、今の普通のCPUと変わらない3GHzくらいはあった。
なので、性能的には、当時のPentium4でも、今時の1コア2スレッドくらいのCPUだと思って使えば、使えない事もない。
実際、作者は、去年まで、Pentium4マシンにUbuntu22.04LTSを入れて自前ソフトの評価環境として使っていたのだが、その環境にMirror-DTCサーバーをインストールして、メインマシンからリモート操作して使う事も出来ていた。
と、言う事で、2000年代のPCは馬鹿に出来ない今日この頃なのだが、今時のCPUは、CPUコア数が馬鹿みたいに増えているので、それらを有効活用するソフトの場合、1コア2スレッドのPentium4と比べると、段違いの性能が出せる様になっている。
昨日の記事にFFOテスト性能 (Ver1.0.0) へのリンクを貼ったので、何となく懐かしくなり、今日も、関連記事を書いているのだが、初版の頃のMRSolverは、作者の手持ち環境で最も高速だった、CoreDuo 2GHzのMacBookで、シングルスレッドで、FFO40-59が3826.8秒かかっていた。
もう一つの手持ち環境であったPentium4 3.2GHzのデスクトップPCでは、シングルスレッドで、4861.4secもかかっている。
つまり、より動作クロックが高いPentium4の方が、処理性能が低かった訳なのだが、これは、Pentium4は発熱が問題となり、動作クロックを想定通りに上げられなかった結果と言える筈だ。
ネットを検索すれば出てくる筈なのだが、当初、Pentium4の動作クロックは5GHzくらいにする予定だったので、4861.4/(5/3.2)=3111.3になるので、もし、クロック周波数をそこまで上げられていれば、CoreDuo 2GHzなんかには負けない性能を発揮できていた筈だ。
と、言う事で、インテル的にも、もうクロック周波数を上げるのは無理! という事で、Pentium4以降は、クロック周波数は据え置き、その分、余裕が出来た処理時間を利用して、より複雑な内部回路を実装する事で、1クロックあたりの命令処理数を増やしたり、そんな処理を実現するコア数を増やす格好で、処理性能を向上させる事にした訳だ。
その結果として、作者の現在の手持ち環境(Core i7-12700のiiyamaPC)では、MRSolverを使ったFFO40-59性能は45秒くらいになっているので、Pentium4のデスクトップPCと比べると、4861.4/45 = 108倍の性能を実現できている。
まあ、2000年当時でも、巷にある高性能なスーパーコンピュータなら、似た様な性能は出せていたかもしれないのだが、重要なのは、上記のPentium4のデスクトップPCは、13万円くらいで購入していたし、前述のiiyamaPCも、13万円くらいで購入している事だ。
つまり、普通に手に入る高性能PC同士の比較になるので、100倍という数字には、それなりに意味が出てくる訳だ。
もっとも、上記の比較は、Pentium4ではシングルスレッド動作、iiyamaPCではマルチスレッド動作になっている。
なので、FFOテスト (Ver1.5.5)にあるiiyamaPCのシングルスレッド性能を見てみた所、375.8秒だったので、この20年くらいで、CPUのシングルスレッド性能は4816.4/375.8 = 12.8倍、向上したのか・・・、と、思ったのだが、これは正しくもあり、間違いでもある。
何故なら、この20年で、MRSolverのソフトウェア的な性能も向上したからだ。
なので、今日、昨日書いていたscrzebraをiiyamaPCで動作させてみたのだが、その結果としては、FFO40-59には1249.4Secかかった。
つまり、この20年くらいで、CPUの基本的なシングルスレッド性能は、4816.4/1249.4 = 約4倍しか向上していない、という事になる。
基本的な、と、書いているのは、scrzebraは32Bitアプリで、mmxは使っていてもAVXは使っていないのに対して、MRSolverは64Bit化しているし、AVX2命令も使っているからだ。
なので、12.8/4 = 約3倍になる事を鑑みつつ、64Bit化で2倍高速化されたとすると、残りの5割程度の性能向上が、AVX2化だとか、アルゴリズムの向上だとか、評価データの最適化によるモノ、という事になる。
と、言う事で、FFO性能については、20年もかけて、本質的な部分については、5割程度しか性能向上できていない! という事になる。
しかしまあ、scrzebraしか存在していなければ、現在でも1249.4秒かかる処理が、MRSolverを真面目に更新してきたお陰で、45秒で終われるようになった! というのも事実なので、どちらが現実なのかを見誤るのもどうかと思った今日この頃だ。
ちなみに、今回開発した評価データと処理ルーチンを使うと、iiyamaPCで、2スレッド動作時でも、Ver1.5.5の測定値よりも5%くらいは性能が向上している。
しかし、シングルスレッド動作させると、3割も遅くなっている。
これは、シングルスレッド用には、マルチスレッド用とは異なる処理ルーチンを使っているからの筈なので、シングルスレッド用の処理ルーチンについても、新しい評価データ用に、少し手を入れておかないと、と、思っている今日この頃だ。