2017年5月
  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 31      

tweet

  • tweets

« 2010年1月 | トップページ | 2010年3月 »

2010年2月

Amazon EC2からfloodgateなう

Amazon EC2を試しに使ってみてます。1週間ほど前から、アカウント作りから始めて。最初は使い方がよくわからず苦労してましたが、だんだん理解してきました。

で、今EC2からfloodgateで流してます。bn413ec2m24xlvc8。High Memory 4X Extra Largeというインスタンスで、/proc/cpuinfoで見ると Xeon X5550 2.67GHzと出ます。8 'virtual cores'。ボンクラーズも動いてますが、ベンチマークの意味で本家ボナ(v4.1.3そのまま)でやってます。

Spot Instanceというやつで、$0.84/hour。24時間で2000円くらいかな。あまり長くはできません。
詳細はまた後ほど。

バグ?

つれづれなるままにボナソースを読んでいますが、ちょっと気になる点があったのでメモ。

hash.cのhash_store()の以下の部分ですが、

1     if ( hand_hash != HAND_B
2          && keyt_hash != ( word2 & ~(uint64_t)0x2fU ) )
3       {
4         slot = (unsigned int)hash_word2 >> 31;
5         SignKey( hash_word2, hash_word1 );
6         ptrans_table[index].always[slot].word1 = hash_word1;
7         ptrans_table[index].always[slot].word2 = hash_word2;
8       }
9     SignKey( word2, word1 );
10    ptrans_table[index].prefer.word1 = word1;
11    ptrans_table[index].prefer.word2 = word2;

探索結果をpreferに書く(10,11)んだけど、今のpreferの内容はalwaysにコピーする。ただし、書こうとしている結果が今のpreferと同じ局面に対するもの(より深い探索結果)ならalwaysへのコピーはしない、ってことだろうと思うんですが、

もしそうなら、if条件(1,2)でhandのチェックは不要、というかやらない方がいいんじゃないでしょうか?keyが違えば盤面が別なので、handが同じかは意味ないと思うんですが。

盤面が同じでhandが違う、という場合は書くべきかどうか微妙な気はしますが、そうしたいならばif条件は&&ではなくて||ですよね。

見てるのはv4.1.2ですが、v4.1.3でも変わってないようです。

ということでたぶんバグなんじゃないかなぁ?という気がしてはいるのですが、なにしろあのボナンザなので、私が何か勘違いしてるのかも?という気もしないでもないです^^;

まあここを変えてもそうドラスティックに強さ変わるわけではないとは思いますが、「盤面異なるが持ち駒は同じ」局面群に対してはpreferしか使わないことになるので、そこそこ発生するような気はします。

それにしても、なんでボナンザってコメントないんでしょうか?w 深まる謎がぜんぜん解決しない…

« 2010年1月 | トップページ | 2010年3月 »