いけないボナマジック
大会終わったあたりから、ボナにMagic Bitboardを入れてみることに取り組んでいました。いったんはじめたもののいろいろ割り込みが多くてなかなか進んでなかったんですが、最近ジョブがいくつか片付いて手が戻って、ようやく完了。
肝心の結果は…2-3%遅くなりました。使えねー、が結論orz
実装的には、従来のbitboardと別にoccupied専用のbitboard(uint64_t[2])をposi_tに持ちます。occupied_rl90/rl45/rr45は削除。[bw]_occupiedは残してます。
makemove/unmakemoveでは、従来のbitboardと追加したoccupied用bitboardを同時に更新。
Magic Bitboardの方式はissei流で、1-7/8-9筋に分け、[0]と[1]をORしてからmagicをかける、というもの。(発案者のisseiさんに感謝です)
従来のbitboardもすべて新形式に変えて統一して、とかやってぎちぎちにがんばればもしかしたらもう少し速くなるかもしれません。でも(根拠ないですが)最大うまくいってもせいぜい1-2%速くなるくらいかなー、という感触。というわけで、けっこう苦労して作ったんですが、お蔵入りすることに。
#CPUアーキが変わるとcore i8では速くなる…とか、まあないとは言えませんが
http://d.hatena.ne.jp/LS3600/20091119/p1
では「ほんとに速くなるの?」という懸念が示されてましたが、指摘どおりでしたね。かけ算が遅い?キャッシュのせい?
♪ 利きが遅けりゃ 夜は暗い
春の陽射しの中も とてもクラ~~~イ
« 7/24 不参加になりました | トップページ | LLVM 試してみた »
「将棋プロセサ」カテゴリの記事
- ボンクラーズの開発過程について書いた記事が掲載されました(2019.03.07)
- 「浅い評価値を深い評価値に近づける学習法」誕生の背景(2016.10.06)
- 塚田九段の対ボンクラーズ練習棋譜を公開します(2013.09.07)
- Puella α ソース公開(2013.08.28)
- クラスタ並列の解説記事を公開します(2013.08.22)
いっせいさんの報告でも遅くなってましたよね?
投稿: かず@なのは | 2011年7月25日 (月) 10時51分
うーん、そうなのですか・・・
本当に残念です・・・
投稿: issei_y | 2011年7月25日 (月) 19時54分
チェスではMagicが今や標準だそうなので、ちょっと不思議な気もするのですけどね。盤のサイズの差で、キャッシュに収まる収まらないの境界、とかなんでしょうかね。
投稿: A級 | 2011年7月25日 (月) 21時59分
やっぱりキャッシュなんですかねー・・・
もう少し配列サイズ小さくできないかな・・・
投稿: issei_y | 2011年7月26日 (火) 00時15分