Edaxとの性能差は機種依存
今は、TiMediaServerの改良フェーズなのだが、並行してMasterReversi用の更新作業も行っていて、そろそろリリースする筈だ。FFO40-59は、手持ち環境ではCore i7-12700のiiyama PCでのみ、Edax4.5.0並み、という事になる。
ずっと書いてきた様に、Ver1.5.5の終盤解析性能、というか、完全読みのベンチマークにしているFFOテストについては、Edax4.5.0と比べて、FFO60-79については、測定誤差の範囲を超えて、より短時間で処理を終了できる様になっている。
しかし、FFO40-59については、Core i7-12700のiiyama PCでは、同程度の時間で処理を終了できているのだが、Ryzen 9 5900HXのミニPCだとか、Core i7-6700HQのMacBook Pro 15インチ 2016モデルでは、測定誤差の範囲を超えて、より処理時間を要している。
それぞれの環境では、CPUの絶対性能が異なるので、環境ごとに処理時間が変わるのは当然なのだが、環境によって、Edax4.5.0との性能比率が変わる理由については、推測しておく必要がある。
と、いう事で、このブログでは、過去に、色々と推論を書いてきているのだが、最終的な推論としては、Edax4.5.0は並列探索用にYBWCアルゴリズムを使っているので、マルチスレッド動作時には、その関係から、最善手探索中には他探索用のCPUコアを遊ばせているのが、諸々の性能差の原因になっている、という事にしている。
上記の様に考えている状況証拠としては、YBWCアルゴリズムというのは、本来、そういうアルゴリズムだ、という事もあるのだが、電力供給量や冷却が不十分な作者のCore i7-12700の仕事用iiyamaPCでは、MRSolverが20スレッド動作すると性能が劣化するにも拘わらず、Edaxは劣化しない、という事がある。
つまり、上記は、CPUを遊ばせているからこそ、20スレッド動作時にもサーマルスロットリングが発生しない、と、考える事ができるし、大昔から不思議だった、Edaxはハイパースレッディング動作による性能向上率が高い! という謎の回答にもなる訳だ。
何故なら、ハイパースレッディング動作時には、1コア分+少ししかないCPU資源を2スレッドが共有するので、2スレッドがフルに動作していれば、本来なら、1~3割程度の性能向上しかしない、と、インテルは言っているのだが、考えてみると、各スレッドが要所要所でWait動作をしているのなら、そのWait動作中にもう一つのスレッドがCPU資源を利用できる訳だ。
つまり、ハイパースレッディング動作時の性能向上率が高い! というのも、逆に、上記のEdaxの探索処理では、CPUコアを遊ばせている期間がそれなりにある、という状況証拠になる訳だ。
と、いう事なので、例えば、8コア16スレッドのRyzen 9 5900HXのミニPCで、8コアまでは、Edax4.5.0と比べて性能が同等か少し良いくらいのMRSolverは、16スレッド動作させると、少し差を付けられて性能的には劣る事になっている訳だ。
これは何故なのかというと、MRSolverは、YBWCアルゴリズムとは異なり、最善手探索中にもその他の着手候補を探索するので、理屈の上では、YBWCアルゴリズムを使う場合よりも、CPUコアを遊ばせている期間は少ない訳だ。
なので、ハイパースレッディング動作となる16スレッド動作時には、普通のハイパースレッディング分の性能向上しかないのに対して、Edaxは、元々遊ばせていた期間にハイパースレッディング用の追加スレッドが処理を行う様になる分、より高い性能向上率を達成できる。
このため、ハイパースレッディングを行っていない状況で、処理性能的に、かなり上にいない限り、ハイパースレッディング時には性能的に負けてしまうのは当然! になる訳だ。
もっとも、Core i7-12700はPコアとEコアで構成されていて、Eコアではハイパースレッディング動作は行われない。
つまり、Core i7-12700のEコアでは、Edaxはコアをそれなりの期間遊ばせている筈なので、コアを遊ばせる期間がより短いMRSolver的には、有利になる筈な訳だ。
その結果として、EdaxはRyzen 9 5900HXのミニPCとCore i7-12700のiiyama PCでの性能を比べると、シングルスレッド性能はiiyama PCで、それなりに高くなっているのだが、マルチスレッド性能は同等程度だったりする、と、考えられる。
また、Ryzen 9 5900HXのミニPCでは、FFO40-59の処理性能がEdax4.5.0に届かないMRSolver的には、iiyama PCでは、同等の性能が出ている、と、考えられる。
もっとも、シングルスレッド性能を比較すると、Edax4.5.0はiiyama PCで15%程度の向上になるのだが、MRSolverは22%程度の向上になる。
つまり、YBWCと無関係のシングルスレッド時の性能についても、MRSolverはiiyama PCで、Edax4.5.0との差が詰まる格好になっているのだが、その理由は、CPUキャッシュサイズの違いか、メモリ性能の違い、という事になる筈だ。
CPUキャッシュのサイズの違いについては、CPUスペックの話になるので、かなり前から把握できていたのだが、メモリ性能の違いについては、双方とも、DDR4-3200のメモリが使われているので、同等かなあ、と、思ったりもしていた。
しかし、ベンチマークソフトである所のCrystalMarkのMEMベンチで測定してみた所、結構、異なっていた。
また、少し古いPCである所のMacBook PRO 15インチ 2016モデルのメモリ性能も、結構、異なっていた。
以下にそれぞれの測定結果を載せておく。
仕事用 iiyama PC (Core i7-12700@16スレッド)
Read 96338.47 MB/s
Write 71574.11 MB/s
Read/Write 52525.34 MB/s
Cache 1540795.39 MB/s
MinisForum HX90 (Ryzen 9 5900HX@16スレッド)
Read 50515.32 MB/s
Write 20270.83 MB/s
Read/Write 20282.77 MB/s
Cache 732769.48 MB/s
MacBook Pro 15インチ 2016 (Core i7-6700HQ@8スレッド)
Read 22403.87 MB/s
Write 13537.66 MB/s
Read/Write 13306.85 MB/s
Cache 224417.75 MB/s
と、いう事で、上記を見ていると、メモリアクセスが多い! と、公言してきているMRSolver的には、Edaxと比べた場合の性能は、動作環境によって、結構、変わってくるのも、当然かなあ、という気もしてくる筈だ。

