2009-05-01から1ヶ月間の記事一覧
今日は利きの差分計算に着手した所まで。前のバージョンでも利き関連は手こずった記憶があるので、今回も大変かも。
…って、ブログに書くほどのネタじゃないですね。 まぁ、「今日はやった」って記録だけでも残しとかないと、後で混乱するんで。
まだ利きも何も無い状態なんで、非常にサクサク進みます。 例によって局面を進める時はコピーをスタックに詰んで、戻す時はPopするだけっていうお手軽実装で進めてます。楽だし。 えーと、局面クラスの実装は、最終的にはこんな感じで考えてます。 駒番号制…
VC++2008で動作確認した。 #include <intrin.h> unsigned __int64 i64 = 222482; unsigned __int64 count = __popcnt64( i64 ); Core i7だとcountに結果が入る。Core 2だと__popcnt64の部分でエラー発生。 速度とかは計測してない。てか、特定CPUでしか動かないんだと</intrin.h>…
とりあえず、駒を動かす手と打つ手の両方をちゃんと生成可能になりました。二歩の処理とか激しく面倒でしたが。 さて、んじゃ明日は局面を進める部分ですね。ボチボチやってきます。
この前のルーチンを全幅1手+静止探索で動かしてたんですが、対局数が少ないからかちゃんと学習してくれませんでした。 という訳で数日前から静止探索オンリーで動かしてた…ハズが、半分は全幅1手が残ってて、対局数少ないままでした。 探索の設定箇所が2カ…
とりあえずテンプレートとかは無しで書いておいて、後でちゃんとボトルネックを調べてから高速化する事にしました。 んで、駒を打つ手は後回しにして、盤上の駒を移動する手だけ生成するルーチンを作成。初期配置ではちゃんと30通り生成出来る様になりました…
現在のGA将!!!!の構成は自己対戦の結果からの強化学習なんですけど、対局の条件*1次第で1日10万〜100万局は行けます。 で、現在はその棋譜を評価関数の学習の為だけに使って、その後は捨ててますが、それではちともったいないので、なんとか有効活用出来ない…
手を表すクラスを実装して、そうすると初期化時にちょっと遠回りをして遅くなりそうだから位置を表すクラスの実装を修正して…って感じで、本筋とは無関係そうな所で時間を浪費してました。 と言うか、今の段階から性能云々言ったって無駄だし、さっさと動く…
と言うか、まずは昨日書いたコードを大幅修正する所からやりました。 局面クラスは初期化方法で悩んで中断。前は平手初期局面でしか初期化出来なかったんですが、USIにちゃんと対応する事を考えるとそれではまずいし、色々な作業の効率悪かったりするんで、…
風呂ん中で色々考えた結果、 実装上の都合で、上下方向の領域オーバーを検出出来ない ユーザ定義演算子の無駄遣い って言う二つのデメリットがあるので、やっぱり実装し直す事にしました。明日に。 特に演算子の方は、どういう処理になってるのかちゃんと理…
今回はマスの位置とか移動方向とかもクラスにして*1、マスを移動させるたびにねちっこくASSERTでテストしたりとかなんとかそんな感じの実装をしました。色々とデバッグの役に立ちそうな事はやってます。実際に役に立つかは知りませんが。 んで、実装→嫌がら…
http://pc.watch.impress.co.jp/docs/column/kaigai/20090518_168661.html Sandy Bridgeに関しては特に目新しい話は無いですが、Bulldozerはマイクロアーキテクチャの推定とかもあって面白い内容でした。
マシンA(開発用マシン)にWindows 7 RC x64をインストールしたんで、そのデータを追加。 マシン名 32bit 動作時間(秒) 64bit 動作時間(秒) 速度向上率 マシンA(XP x64) 16.74 15.35 +9% マシンA(7 RC x64) 18.02 15.99 +12% マシンB 23.85 18.94 +25% …
あ、開発用マシンってのは64ビットでの性能向上率を調べた時のマシンAの事です。一台だけXPだったヤツ。 性能向上率がXP VistaならVista ちなみにHDDは余ってたやつを使ってるんで、前のSSDにはちゃんとXP x64の動作環境が残ってます。ケーブル差し替えれば…
当面は開発日記に書くネタも無く、のんびりダラダラと進行するものと思われます。 あと、オブジェクトのメモリ占有量を減らす作業が意外と楽しい。はまりそうだけどはまっちゃいけない予感。
と言うか、コンパイラはSSE命令を(勝手に)生成してる? x64モードではコンパイルオプションに/arch:SSEとか/arch:SSE2を指定しても無視されるから、x64だとSSEが使えないかと思ったら、どうもそうではないみたいですね。 実際にdoubleをfloatにキャストす…
意外と早く終わった理由は、λ収益の計算が不要になった(割引率1・対局途中の報酬0なので、λ収益=末端の評価値になる)ので、実際のコーディングの量が減ったとかが大きいですね。後、何度も実装したアルゴリズムなんで、意外と慣れてて速かったってのもあ…
エラーメッセージ抜粋。 1>e:\my documents\source\gasyou\delta\gasyou4\core\rl\tdleafagent.cpp(256) : fatal error C1001: コンパイラで内部エラーが発生しました。 1>(コンパイラ ファイル 'f:\dd\vctools\compiler\utc\src\p2\amd64\unwindmd.c'、行 1…
色々なCPUで、32bit→64bitでの速度向上率を計測してみました。 まずは対象のマシン。 マシン名 CPU RAM OS マシンA Core i7 940(2.93GHz) 6GB Windows XP Pro x64 マシンB Core 2 Extreme QX6700(2.66GHz) 8GB Windows Vista Ultimate x64 マシンC Athlo…
32ビット→64ビットで速度が3倍です*1。 元々64ビットでのコンパイル前提で、64ビット整数とか無節操に使ってたから、ひょっとしたらその辺の影響かもしれません。 たまたま手元にCore 2,Core i7,Athlon X2の64ビット環境が揃ってるんで、その辺の性能比較と…
適格度トレース無しの状態で、今から実装するコードの下準備とか色々しておいた方が開発の効率が良さそうなので、今日はその辺の修正。 基本的に、今までちゃんと動いてたコードの修正なので、変なバグとか仕込まない様に気を遣って、短時間なのに結構疲れま…
http://d.hatena.ne.jp/ak11/20090514#p1 aki.さんの日記を読んでて思い出したんで、サクッと書いときます。 要点としてはこんな感じです。 ハッシュアクセス時にハッシュ表固有のカウンタをインクリメントしていく ハッシュの各エントリに、最後にアクセス…
http://pc.watch.impress.co.jp/docs/news/20090514_168533.html 次世代スパコンに使う予定の45nmプロセスで8コアのCPUで、現在試作品が完成した状態だとか。 x86のPC向けCPUだと8コアは早くて来年でしょうから、当分は指くわえて見てる事になりますね。うら…
http://wdoor.c.u-tokyo.ac.jp/shogi/tools/view/show-player.cgi?event=LATEST&filter=floodgate&show_self_play=1&user=fatechan%2B3ab4c5c1f48e577aac9951cef3ed4351 fatechanというソフトが昨夜一局だけ指していますが、ひょっとしてNanohaWCSC19の後継…
以前作ったクラスを使ってゴチャゴチャと処理するだけなんで、割とスムーズに出来ました。 んで、4x4のリバーシでの学習に成功したんで、以下自分用のメモ。 TD(0)+テーブル形式評価関数+ソフトマックス方策。 目標探査率は0.1だと成功*1。0.02だと失敗。 …
レーティングが一気に下がってます。も、目標にしてたソフトが落ちてきたら、私はどうすれば(汗 とりあえず今日の再参戦は無し。ひょっとしたら明日やるかもです。
今まで棋譜を使って学習する場合は「棋譜通りの手を指す方策」を使ってたのですが、これだと棋譜の数が少ないのが原因か、変な学習しかしてくれませんでした。 で、ちょっと思い付いたので「途中まで棋譜通りの手を指し、その後はソフトマックス*1の方策」を…
http://journal.mycom.co.jp/news/2009/05/12/049/index.html 「Sun買収はソフト部門が欲しかっただけなんじゃ?」とか思ってましたが、どうもそうではないみたいです。 高性能CPUがみんなx86になってもつまらないので、SPARCにも頑張ってもらいたいと思いま…
http://vivio.blog.shinobi.jp/Entry/100/ 5/11現在のRはGasyouより100位上。まずはNanohaWCSC19に追い付くのが目標ですね。 という訳で、明日か明後日にでも再参戦します。パラメータはこの間からの学習中のがあるので、とりあえずそれを投入予定。