スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 配布パッケージを作成 | トップページ | 暫くは営業活動に専念する »

最終的なFFO性能は?

今は、新しいリバーシプログラムの開発フェーズなのだが、今回は、MasterReversi Ver1.5.0をリリースするだけに留める。既に配布パッケージを使ったインストール確認中なのだが、FFO性能については、単体では、Edax4.4とほぼ同等、という事にしておきたい。

このブログの過去の記事を見ていると、FFO性能はEdaxを越えた、みたいな事が書かれているのだが、リリース版では越えなくなったのか、というと、そんな事はない。

つまり、作者環境では、FFO性能はEdax4.4を越えてはいるのだが、その差は僅かなので、測定環境によっては、その差は逆転するかもしれない訳だ。

更に言えば、作者が比較している性能は64Bitの4コア8スレッド環境でのソレで、スレッド数がより少なかったり、32Bit環境だったりした場合には、MasterReversiの処理性能が、圧倒的に、Edax4.4のソレを上回る。

しかし、逆に言うと、MasterReversiの処理性能は、スレッド数が増加するにつれて、Edax4.4と比較すると低下してしまっているので、今時のハイエンド環境である所の6コア12スレッド環境では、Edax4.4の性能がMasterReversiのソレを上回っている可能性もある訳だ。

と、いう事で、6コア12スレッド環境の持ち合わせがない作者的には、あまり強気の発言が出来ない訳なのだが、MRWorkerを使って4コア8スレッドのPCを2台使った8コア16スレッド環境を構築して性能測定した所では、キャッシュの共有が出来ないという性能低下要因があるにも関わらず、4コア8スレッド環境よりも大幅に性能が向上している。

なので、MasterReversi的にも、6コア12スレッド環境では、4コア8スレッド環境よりも処理性能は向上する筈ではあるのだが、その向上率がEdax4.4と比べてどうなのか、というのは微妙かもしれない。

ちなみに、何故、MasterReversiのスレッド数が増加するにつれての処理性能の増加が、Edax4.4の増加よりも少なくなるのか、というと、並列演算方式に違いがあるからの筈だ。

具体的には、Edax4.4の並列演算方式というのは、評価局面から最善手進行を何手分か進んだ局面について、まず、シングルスレッドでPVSを行い、マルチスレッド動作は、その結果を検証するNWSから行う格好になっている。

これに対して、MasterReversiの並列演算方式では、最初から、全スレッドを使ってPVSを行う格好になっている訳だ。

そして、最善パスが発見された時点で、全スレッドをNWSに切り替えているのだが、探索の初期段階では、本来の最善手進行以外の手筋についても、PVSが行われるので、NWSではない分、余分な探索が行われる事になる訳だ。

その結果として、スレッド数が増えるにつれて、この余分な探索を行うスレッド数が増えるので、PVS用スレッドがその弊害でどんどん遅くなる分、どんどんEdaxが有利になっていく訳だ。

と、いう事で、MasterReversiの並列演算というのは、スレッド数が増えるとEdaxの様な単純な並列演算と比較すると処理性能が相対的に低下するのだが、それを判っていて、何故、こんな方式を採用しているのか、というと、この様な方式にしておくと、評価順の順序付けを間違っても、大して性能が劣化しないからだ。

つまり、局面評価精度にイマイチ自信が無かったMasterReversi的には、Edaxは余裕で遊ばせているスレッドについても、投機実行をさせておく事にした訳なのだが、実際の所、全スレッドを同時動作させると、置換表、MasterReversiで言うところのキャッシュにアクセスが集中してしまう訳だ。

その分、単一スレッドの処理性能は低下してしまうので、PVS用スレッドの動作速度はシングルスレッド動作時よりも低下してしまうし、キャッシュブロックを他スレッドに使われてしまう分、シングルスレッド時よりも、ヒット率も低下してしまう。

なので、MasterReversiの並列演算では、スレッド数が増加するに従って、Edax4.4と比較すると、処理性能の優位性が無くなっていっているのだが、今回、この辺の問題に対する対策も、少しは行ったので、現行バージョンと比べれば、この問題による弊害も、少しは軽減されている筈ではある。

と、いう事で、頭の良い人なら、既に気が付いたと思うのだが、上記に書かれている事が本当だとすると、シングルスレッド性能でEdaxを凌駕しているMasterReversiの基本処理ルーチンの性能というのは、Edaxを大きく凌駕している訳だ。

具体的には、MacBook Pro 15インチ 2016モデルで、1スレッドのみ動作させてFFO40-59の性能を測定してみた所、Edax4.4の処理時間は953秒で、MRSolverの処理時間は791秒だったので、普通に鑑みれば、MasterReversiの基本処理ルーチンをEdaxに移植すれば、Edaxの処理性能は、2割くらいは向上しそうな訳だ。

また、MasterReversiの並列演算方式をEdaxの様に単純化すれば、MasterReversiの4コア8スレッド時の処理性能も、2割くらいは向上するかもしれない。

しかし、Edaxよりも大幅に処理性能が上になっているFFO項目が存在しているのは、MasterReversiが並列演算の初期段階では、全スレッドでPVSを行わせているからかもしれない訳だ。

なので、Ver1.5.0では、並列演算の方式自体には手を入れなかったのだが、今回、評価データの刷新により、MasterReversiの局面評価精度はEdaxに追いついたかもしれないので、そろそろ、投機実行の必要性はなくなってきているのかもしれない。

なお、FFOテストの結果については、今日の記事に書こうかと思っていたのだが、長くなったので、載せるのはヤメた。来週の月曜にはVectorにVer1.5.0を登録し、それが公開されるまでには、ホームページのFFOページは更新する予定なので、FFOテストの結果については、そこで参照できる事になる筈だ。

« 配布パッケージを作成 | トップページ | 暫くは営業活動に専念する »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/66510037

この記事へのトラックバック一覧です: 最終的なFFO性能は?:

« 配布パッケージを作成 | トップページ | 暫くは営業活動に専念する »

2018年9月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google