通常読みも高速化
ここのところ、MRSolverの並列演算の高速化についての話題が続いていたのだが、これは全て完全読みについてのものだった。しかし、MasterReversiでは通常読みと勝敗読みについても並列演算を行っている。なので、これらの高速化も今回の変更で行っておく。
« 2010年7月 | トップページ | 2010年9月 »
ここのところ、MRSolverの並列演算の高速化についての話題が続いていたのだが、これは全て完全読みについてのものだった。しかし、MasterReversiでは通常読みと勝敗読みについても並列演算を行っている。なので、これらの高速化も今回の変更で行っておく。
土曜日に書いたように、現状のMasterReversiでは、並列演算時にキャッシュサイズが小さいと性能が出ない。しかし、ちょっと性能が出なさ過ぎるので、チューニングを変更した。その結果、キャッシュサイズがデフォルトの64MB時にも、それなりの性能が出るようになった。
MasterReversiの並列演算方式の場合、殆ど独立した局面を探索する各タスクが同時にハッシュテーブルを利用する。なので、普通の方法でハッシュテーブルにアクセスすると容量がタスク分は欲しくなる。なので、優先度制御を入れることで、この問題を軽減している。
ここ二週間くらいはMRSolver、というか、MasterReversiの並列演算性能を向上させるために色々と改良を行っていたのだが、十分な成果があった。まだ、Edaxとの比較では、二割程度は劣っているのだが、今回はこの辺にしておく。やはり、キャッシュのヒット率の差が大きいようだ。
MRSolverの並列演算性能の向上については、作者としては、ほぼ満足な所まで来たのだが、FFO40-59の総合性能では、まだEdaxに負けている。なので、しぶとく、また少し弄ってみたのだが、まだ速くなった。既に現行バージョンと比べると別物というくらい速いのだが。
今回の変更では新しい評価データも作っているのだが、とりあえず、現行の評価データをそのまま使い続けることにした。これは、新しい評価データが、パッとしないこともあるのだが、評価データの精度が低い問題は、枝刈りルーチンの変更である程度対応できたからだ。
MRSolverの並列演算性能は、とりあえず満足できる程度にまで上がったのだが、まだ少しやれる改良があったので、やってみた。具体的には、仮探索のやり方を少し変えたのと、仮探索での最善手進行を並列演算用のタスク生成時に強制的に利用するようにした。
MasterReversiの並列演算性能がEdaxに負けていたので、Edaxを真似てYBWCアルゴリズムを導入しようかと思っていたのだが、現行方式を改良すると劇的に速くなり、テスト項目によってはEdaxを凌駕するものも出てきたため、現行方式を継続することにした。
MasterReversiの並列演算性能がEdaxよりも劣っている問題について、色々と検討してみたのだが、どうも、複合要因のようだ。キャッシュのヒット率が重要な問題となることは間違いないのだが、数日前に書いた問題は、現行バージョンが遅い理由にはならない。
先週は新しい評価データを作成しつつ、並列演算の方式と、その他の部分の変更の必要性を検討していたのだが、一応、何とかなりそうな感触は掴めた。なので、今週はそれらを適用していく。上手く行けば、今週中にもMasterReversiの変更作業に入れるかもしれない。
現在開発中のMRSolverの並列演算ルーチンの性能が期待したほど出ていない原因が判ったような気がする。並列演算時にはキャッシュによる性能向上率が低下するのが直接的な原因だ。これは実測で確認できた。で、その理由は、気がつけば、当然の事かもしれない。
MRSolverの並列演算性能がEdaxに敵わないため、今週は並列演算の方式をEdax相当のものに変更しようとしてみたのだが、タスクのコントロール方式が根本的に異なるため、同様の形に変更するのは大変そうだった。なので、とりあえず、現状の問題点を把握してみた。
今週は並列演算の改良と、評価データの作成を並行して行う、と、書いていた割には、それらの話題は無い。これは、作者がEdaxとの比較から他にも変更の必要がある箇所は無いかを確認する作業に注力していたからだ。結論として、上記以外の変更は必要無いようだ。
現在はMasterReversiのバージョンアップ開発の一環として、同じ思考ルーチンを使っているMRSolverの変更を行っているのだが、重要な事を一つ書き忘れていた。なので、今日はそれについて書いてみることにする。表題にある通り、ハッシュテーブルの効果についてだ。
局面の探索を並列に行う方式の事を一般には並列探索と呼んでいるようなのだが、MasterReversiでは並列演算という言葉を使っている。これは、趣味の問題もあるのだが、印象的には、MasterReversiの並列処理では探索は行っていないからでもある。
今週はMRSolverの評価データの作成と平行して並列演算の処理方式を変更する予定なのだが、今日のところは、評価データの作成作業で手一杯だった。評価データの作成作業には多くのCPUタイムが必要になるため、準備にもそれなりの時間をかける必要があるのだ。
MRSolverの評価精度の向上のためには、現状は4手毎の評価パラメータを1手毎にし、先手と後手の石が入れ替わった場合の評価値の扱いを変えた上で、評価データを作り直せば良い事が判った。ただし、微調整には時間がかかりそうなので、今週は並列演算を変更する。
現在、MRSolverの評価精度を上げるために新しい評価データを作成してみているのだが、やたらと時間がかかる。2週間前に話題にした強い将棋ソフトにはパラメータが50万個あるらしいのだが、強いリバーシソフのパラメータ数はその何倍もあるからだ。
昨日は評価データを変えても代わり映えしなかった、と、書いたのだが、Edaxの評価ルーチンで得られる評価値と、MasterReversi用に移行した評価データで得られる値には違いがあることが判った。その理由は、MasterReversiが評価データの対称性を意識しているからだ。
色々と作った新しい評価データを使ってみても代わり映えしなかったため、今日はEdaxのソースコードにあるルーチンを使って、Edaxの評価データを直接読み込み、MRSolverの評価関数の代わりをさせてみたのだが、結局、代わり映えはしなかった。残ったのは枝刈りだ。
今週は、MRSolver、というか、MasterReversiの評価精度を向上させるために色々とやってみているのだが、今日は、Edaxのソースコードを変更しつつ、ビルドしたバイナリを動作させ、MasterReversiと違う部分がどの程度の影響力を持っているのかを検証してみた。
今週はMRSolverの評価精度を上げるために色々とやるつもりなのだが、好都合な事に、評価精度がMRSolverよりも高いと思われるEdaxのソースコードが公開されている。なので、まず、今日はそれを読んでみた。理解度はまだ80%程度なのだが、結構違うのは判った。
MasterReversiのHPにMRSolver Ver1.0.7の開発中バージョンをアップした。まだ、ちゃんとした評価は行っていないので、不具合もあるかもしれないのだが、とりあえず、64Bit化による性能向上を確認して欲しい。ただし、32Bit版も速くなったので、アドバンテージは5%程度だ。
今回のMasterReversiのバージョンアップ開発では、本体の64Bit化は行っておくつもりだ。また、少しだけ性能が上げられそうなので、Windows7対応の意味からも32Bit版についても更新しておく事になるだろう。しかし、その他の項目については、今のところ未定だ。
今日、ネットを見ていると、「Appleが出願中のトラベルサービスアプリ特許、論議呼ぶ」という記事を見かけた。AppleがAppストアに登録された他社製アプリのアイデアをApple社の特許として申請したらしいのだが、特許は公知のアイデアには認められない。
現在は、MasterReversiの64Bit化を行っているのだが、思ったよりも64Bit版では性能向上が大きい。これは、64Bitモードへの最適化もあるのだが、ついでに性能向上用の変更も行ったからだ。なので、この変更を32Bit版にも適用して32Bit版も同時更新しようかと思っている。
現在、MRSolverの64Bit化を行っているのだが、比較相手を探そうと、久しぶりに主だったソフトのページを見てみたところ、殆どのソフトは未更新だったのだが、Edaxだけは更新されていた。64Bit化と並列演算に対応したようなので、MasterReversiは出遅れてしまった格好だ。
現在は、64Bit版のMRSolverをチューニングしているのだが、予想以上に速くなってきている。既に、現行の32Bit版と比べると15%は高速化されたのだが、まだ伸び代がある。もっとも、高速化の要因は64Bitモードへの最適化だけではなく、力技による部分もあるのだが。
現在はMasterReversiの64Bit化に向けて、まず、同じ思考ルーチンを使用しているMRSolverを64Bit化してみている。単純に64Bit化した時点では、32Bit版よりも5%程度遅くなったのだが、64Bitモードへの最適化を行い、現時点では、32Bit版よりも5%程度速くなっている。
現在は、MasterReversiの64Bit化に向け、MMX命令が使えなくなるために劣化する性能を補償するための改良案を何点か試しているのだが、今日はまだ詳細を書ける段階ではない。なので、思考ルーチンについて、作者が常々不思議に思っていることを書いてみる。
MasterReversiの64Bit化では、まだブログのネタになりそうな内容が無いため、苦労しているのだが、今日、ITmediaを見ていると、「プロ棋士並み」コンピュータ、女流王将に挑む 「機械学習」と「合議制」組み合わせ」という記事があった。今日はこの記事をネタにしてみる。