2012/05/20
■ 指し手の速度
以下の局面で、後手番の手生成速度を計測している。
(http://d.hatena.ne.jp/sakurapyon/20120415/1334454267 より)
Miyako Shogi Systemでは、1,310,615回/秒です。(amd64 gcc4.6)
2012/05/19
■ AMD CodeAnalyst Performance Analyzer for Linuxのインストール
Lubuntu 12.04(amd64)でのインストール方法
ビルド環境のインストール
rootユーザーでインストールする
apt-get install qt4-dev-tools binutils-dev g++ libpopt-dev libtool autoconf automake make libelfg0-dev zlib1g-dev xterm xauth evince
http://developer.amd.com/Downloads/CodeAnalyst3_3_18_0361Public.tar.gz
よりCodeAnalystのソースを落とし、解凍する。
cd CodeAnalyst-3_3_18_0361-Public
./autogen.sh
./configure
make
make install
ビルドできたら、
sudo /opt/CodeAnalyst/bin/CodeAnalyst
おお、動いた。
■ プロファイル結果
コンピューター将棋の進歩2より次の一手問題第1問。
CS:EIP Symbol + Offset CPU clocks 0x41a9e0 Quiescence 52.44% 0x401ee0 MakePin 13.44% 0x417460 MoveTo 6.89% 0x404d80 GenerateOrder 5.54% 0x403840 Evalute 4.97% 0x4012e0 AttackClr 3.05% 0x400ee0 AttackSet 2.40% 0x413720 MakeEvasion 2.05% 0x4016e0 AttackJmpSet 1.57% 0x41e2e0 See 1.53% 0x401a00 AttackJmpClr 1.27% 0x41c7c0 SearchNonPv 1.18% 0x40e700 MakeChecksNoncap 1.18% 0x413b60 move_sub 0.92% 0x402180 piece_pos 0.44% 0x41d5c0 SearchPv 0.31% 0x40b300 discovered_check 0.17% 0x416ce0 MakeMove 0.09% 0x4063e0 HashProbe 0.09% 0x404c80 get_ncnt 0.09% 0x41b140 sort.constprop.0 0.04% 0x41a580 NewBoard 0.04% 0x416dc0 MakeDrop 0.04%
静止探索で半分以上消費している。ピン情報の更新も結構時間を食っていることがわかった。
2012/05/13
■ 第22回世界コンピュータ将棋選手権バージョン公開
http://blog.gigacraft.net/download.htm
駒落ちには対応していません。稲庭将棋は対策をしていません。詰将棋モードは動作しません。
2012/05/06
■ 少し分析
勝った対戦:平均消費時間8分16秒,平均73.5手
負けた対戦:平均消費時間16分52秒,平均116手
先手勝率:0.5
後手勝率:0.667
勝った戦型:横歩取り,角換わり,居玉の矢倉(?)
負けた戦型:居玉の四間飛車(?),相矢倉,美濃に囲った四間飛車
急戦にはめっぽう強い。
■ 対技巧戦
第5戦、先手はMiyako Shogi System。
59手でMiyako Shogi Systemが銀を追い払う5六歩と打ったところ。
こちらは銀を金にぶつける△66銀▲66銀△66歩▲57金△65桂▲58金△52飛▲63銀△56飛
と読んでいるが、実際には、
△6六歩▲7七金△6五桂と銀取りを気にせず調子よく攻められ、
70手で
と、潰されたうえに、意味不明の▲7五歩(思考中断でスコアをINFにハッシュ登録するパスがある?)
を指して、一気に寄せられてしまった。
投了図
なんか、初歩の一手問題で、「銀取りの歩を打たれましたがどうしますか」で
「銀取りにかまわず、△6六歩▲7七金△6五桂で後手勝勢です」のような感じだ。
なぜこのような無様な読みをしたかは帰ってからよく考えてわかった。そのうちこの理由を書くことにしよう。
2012/05/02
■ 選手権1次予選前日のセッテイング風景
パソコンの電源ケーブルを忘れるという大失態がありましたが、
電通大伊藤先生に貸してもらいセッテイングすることができました。感謝です。
自分の席より
向かいのでかいマシンはSelene。隣はApery。斜め向かいは、なのは。
「このシマは(1次)全部抜けるぜ」と言われていたのですが...orz
私の跡地には2次予選でクマ将棋が入りました。
席の配置
2012/04/22
■ コンパイラ比較(バグ発見)
次の一手問題を解かすと、VC、MinGW、gccではノード数が同じなのだが、iccでは違うノード数となり、違う環境、違うコンパイラで、同じ結果にならないときは、難儀なバグがあるとみた。
探索のダンプを取り、静止探索が違う値を返すところまで追い詰めた。結局、静止探索内で使う差分計算用の変数を初期化するところで、配列の添え字越えを発見、それを直したところ、ノード数はピタリ同じとなった。
コンピューター将棋の進歩2より次の一手問題第1問。反復数=6終了時の値。今のバージョンでは反復数=5で正解(▲7四歩)を返す。
CPU:AMD PhenomII X2 BE555 (3.8GHz)
| コンパイラ | 総思考時間[ミリ秒] | NPS |
|---|---|---|
| VC++2008 (WindowsXP32bit) | 2312 | 445538 |
| MinGW4.6.2 (WindowsXP32bit) | 2109 | 486266 |
| icc 12.1 (Ubuntu64bit) | 2101 | 482015 |
| icc 12.1 (Ubuntu32bit) | 2201 | 470998 |
| gcc 4.6.1 (Ubuntu64bit) | 2002 | 502079 |
| gcc 4.6.1 (Ubuntu32bit) | 2102 | 480610 |
open64はやめました。gcc4.6の最適化はすばらしい。
ノード数
| PV | 非PV | 静止探索 |
|---|---|---|
| 50 | 8232 | 486266 |
昔のバージョンと比べると大幅に高速化している。手生成、オーダリング、探索、ハッシュテーブルをコツコツ、チューニングしていった結果だ。
惜しいことに、このバグは評価関数の学習データに影響があるはずで、今から学習をやり直していては選手権に間に合わない。うーん、どうするか。
追記:gcc4.7が出ているので測定。
| コンパイラ | 総思考時間[ミリ秒] | NPS |
|---|---|---|
| gcc 4.7.0 (Debian64bit) | 2035 | 493068 |
さらに追記:ついでにclangも測定。
| コンパイラ | 総思考時間[ミリ秒] | NPS |
|---|---|---|
| clang 2.9 (Ubuntu64bit) | 2202 | 469210 |

