悪手ラインを削除
昨日書いた様に、今日は、Book生成用に使っているデータベースから悪手ラインを削除し、そのライン用に新たにMasterReversiのレベル5同士のセルフ対局相当の進行を追加した。悪手ラインは、Book上で-16石以下の値が付いていたラインになるのだが、結構、酷かった。
« 2014年3月 | トップページ | 2014年5月 »
昨日書いた様に、今日は、Book生成用に使っているデータベースから悪手ラインを削除し、そのライン用に新たにMasterReversiのレベル5同士のセルフ対局相当の進行を追加した。悪手ラインは、Book上で-16石以下の値が付いていたラインになるのだが、結構、酷かった。
ここの所、MasterReversiに添付するBook関連の話題を載せているのだが、これは、作者的には、現行版のBookの質は悪いと思っていて、それをベースにデータを追加しただけのBookも同様だと思っているからなのだが、ここで、一応は、再構築みなしの作業も行う。
昨日書いた様に、MasterReversiのBookには、明らかな非最善進行による対局データも含まれているので、この辺の影響を無くしたい。また、局面のの予期せぬ接続による意外なBook値の生成の問題も緩和しておきたい所ではあるので、少しBook関係に手を入れる。
MasterReversiの次バージョンは、既に、プログラム本体と評価データについては、一応は、確定しているのだが、Bookについては、まだ、修正中だ。次バージョンのBookは現行版のソレよりも、多くの正しげなDrawラインが追加されるのだが、信頼すべきかどうかは微妙だ。
昨日書いた様に、次バージョンのMasterReversiのBookは古いレベルの低い対局棋譜の影響を減らすために、20手の完全読みで置換した対局データを元に作り直したのだが、序盤についても、際どい値になっている評価リーフの進行については、対局データに置き換える。
次バージョンのMasterReversiに同梱するVer1.4.1Bookは、「Edax+Unified Book 2010」とのエンジン対局で修正が入ったのだが、基本的にはVer1.4.0Bookに新データを追加した形になっていた。しかし、このVer1.4.0Bookはそれ以前のBookにデータを追加したものだったので・・・
昨日書いた様に、次バージョンにもフルサイズBookは同梱できないのだが、現行版に同梱してあるBookには問題があって、Bookを信頼するモードにすると変な手を打つ事がある。また、新たな手筋を登録すると、デフォルト設定では、メチャクチャなBookを作ってくれる。
今日は、次バージョンのMasterReversiの配布パッケージを作ってインストール確認なんかをしてみたのだが、今の所、Bookにフルサイズ版を使ってみている。すると、Standard版のファイルサイズは11.1MB、Professional版は13.8MBになったのだが、これは64Bit版のみでだ。
MasterReversi Ver1.4.1のリリース準備は問題なく進んでいるのだが、今回の変更では、通常機能に変更は無かったので、リグレッションテストをやる気にならない。なので、XPのサポート期間が終了した事もあり、HPの「特徴」にある画像は取り直そうかと思っている。
1月からBook修正と完全読み性能の向上を行ってきたMasterReversiなのだが、とりあえず、格好は付きそうなので、リリース準備に入る事にする。ただ、MasterReversiにはStandard版とProfessional版があって、Professional版には32/64Bit版とMRSolver/MRWorkerもある。
今年に入って行ってきたWindows版MasterReversiの変更については、そろそろ仕上げに入るつもりなのだが、次バージョンの番号は1.4.1にする。これは、機能的な変更は無いからなのだが、デフォルト設定は少し変えるかもしれない。当然、評価/Bookデータも更新する。
32Bit版のFlip処理に64Bit版の改良アイデアの一部を入れた結果、1スレッド性能は1642秒から1594秒に向上した。なので、現行版の性能が1781秒である事から、次バージョンの性能は何とか1割は向上、という感じにはなったのだが、32Bit版の存在意義はどうなるだろう?
昨日書いた様に、MRSolverの性能を、改良した手元バイナリと現行版とで比較してみたのだが、一見して、何らかの要因がありそうな傾向のある結果が得られた。作者的には、現行版でも並列演算方式に問題はない、と、思いたかったのだが、やはり、そうでもなかった様だ。
2月くらいから長々と行ってきたMasterReversiの完全読み性能の向上施策を32Bit版のMRSolverにも適用していたのだが、作業は完了した。ただ、ここの所、64Bit版ばかり弄っていたので、相対的にその遅さが少し気になった。なので、現行版の性能測定を始めた。
昨日は、MRSolverで性能を向上させてきた処理ルーチンをMasterReversiの64Bit版本体に適用したのだが、今日は、32Bit版MRSolverへの適用を開始した。32Bit版への適用は、少し考えながらの作業になるのだが、明日には作業は終了するかもしれない。
昨日書いた様に、今日は64Bit版MasterReversi本体にMRSolverを使って改良してきたリバーシエンジン部を適用した。本体とMRSolverのリバーシエンジン部のファイル構成は同じなので、基本的には、ソースファイルを入れ替えただけなのだが、まだ、少し問題が出ている。
昨日書いた問題は、予想通り、勝敗読みの1スレッド時専用の上位ルーチンのバグだった。修正が終わり、問題は無くなったので、次にfull-25.obfについても、解答との比較を行うために、全問解かせているのだが、とりあえず、最善手の完全読みは問題無かった。
昨日書いていた問題は、書き間違えレベルの単純バグが原因だったので修正した。その後、再度FFO性能を測ってみた所では、大差無かったので安心したのだが、様々なモードでチェックしていると、今度は、1スレッド時の勝敗[全着手]で、間違った出力が行われた。
昨日の問題は、並列演算部でタスクの消し忘れがあったので、それをチャンと消す事で解決した。しかし、今回の変更では、下位ルーチンの殆どに手が入っているので、Edax付属の問題にある解答と比較するルーチンを作って動かしてみた所、出力の間違いが見つかった。
昨日書いた様に、手元にあるMRSolverのFFO40-79性能は、Edax4.3と比べても対抗し得る感じになったのだが、Edax4.3の配布バイナリには、その他の問題も添付されていたので、それらについても解いてみた。full-30/hard-30は時間がかかるので最初の15個だけなのだが。
一昨日書いていた様に、評価データを更新し、再度FFO40-79性能を測ってみたのだが、大差無かった。なので、更にパラメータ調整してみた所、FFO60-79の処理性能もEdax4.3を越えた。最後の4項目は若干負けているのだが、それ以前のリードを守りきった感じだ。
富士通は、「様々な可能性を検討しておりますが、『売却する手続きに入った』事実はありません」、と、コメントしているのだが、ネットを見ていると、今度こそ、Niftyが売却されるのは間違い無い感じだ。なので、作者のHPとこのブログの存続も危ういかもしれない。
昨日書いた様に、MRSolverの完全読み性能は、FFO60-79の最後の方で、Edax4.3よりも劣る項目があったのだが、調整をして、その差はかなり縮まった。なので、もう十分かもしれない、という事にする。現行版でも、十分と言ってしまえば十分な性能はあるのだが。
状況によって異常に遅くなる問題も解決できたので、MRSolverの完全読みは安定して高速動作する様になり、FFO60-79も、Edax4.3と比較できる感じになった。しかし、勝っている項目が多いものの、まだ、最後の方では若干負けている。なので、微調整は必要かもしれない。
評価時間が長い項目の実行後に処理性能が低下する完全読み処理の問題は、原因が分かり、対策も出来たので解決した。原因はバグだったのだが、このバグは性能向上用処理を阻害するだけだったので、性能低下した、というよりは、性能向上しなくなっていたのが実情だ。
昨日も書いた様に、今はMRSolverで複数の完全読み実行時に、処理時間がかかるテスト項目後の項目で、処理時間が2倍程度必要になる現象の発生理由を探っているのだが、再現環境は整った。具体的には、FFO68の実行後に処理を実行すると性能が半減する。
昨日書いた様に、今の所、MRSolverで時間のかかる評価項目を実行すると、以降の項目の評価時間が、単体で実行する場合よりも数倍遅くなる現象が見られていて、その原因はメモリアロケーション絡みかと思ったのだが、違った様だ。なので、まだ、問題は解決しない。
MasterReversiの完全読み性能は、FFO40-59については、十分になったのだが、FFO60-79の項目の中で、時間がかかるモノについては、まだ、Edax4.3と比べると、2~3倍遅い感じだ。その原因は、仮評価で最善手を検出できない事もあるのだが、もう一つの問題もある。
MasterReversiの完全読み性能は、FFO40-59で235秒という十分な数字が出たので、FFO60-79用の調整をしているのだが、テストに時間がかかるので、STAP絡みの書き込みを見たりしているのだが、この記事 によると博識者は極悪人になるのかもしれない。
この2ヶ月近く、MasterReversiの完全読み性能を上げてきたのだが、個別ルーチンの高速化だけでは、FFO40-59でCorei7 2600の8スレッド時にEdax4.3に届かず、FFO60-79の処理に時間がかかる項目では惨敗状態だったのだが、並列演算部の改良で一気に高速化できた。