GPSshogi

What is this?

GPSFish is a shogi program ported from Stockfish combined with GPSShogi's evaluation function and other shogi stuffs, to play shogi games via a part of USI.

チェスのオープンソースプログラムであるStockfishの、ルールを将棋に変更し、指手生成、評価関数、盤面の構造体、一手詰めをGPS将棋のものに取り替えてUSIの一部のコマンドに対応しました。

stockfishとの差分をなるべく小さくする方針で作成したため、稲庭将棋対策や高速に詰みを発見する機能(df-pn) 等はありません。

Executable for Microsoft Windows

see http://gps.tanaka.ecc.u-tokyo.ac.jp/gpsshogi/index.php?%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9#g022c609

Source code

Available under GPL version 3.

元のstockfish同様GPL version 3で公開します

How te use

  1. Ubuntu precise または oneiric, quantal またはDebian wheezy を用意します (C++0xのlambdaを使っているので、コンパイルにはg++ 4.5以上が必要です。前述の環境であれば標準のg++が条件を満たします。なお、gpsfish_devであればg++ 4.4 でもコンパイルできるようになっていると思われますが、動作確認は各自でお願いします。開発者は普段は、Debian squeeze上でソースコードからコンパイルしたg++-4.6.3を用いて作業していることが多いです 2014年現在はDebian wheezyでg++4.7.2以降を使っています)
  2. libboost-all-dev, libbz2-dev等をインストールします
    • Suggested environment: Ubuntu (precice, oneiric, quantal), or Debian wheezy with g++ version 4.5 or higher, libboost-all-dev and libbz2-dev.
  3. osl, gpsshogi, gpsfish のソースコードをそれぞれダウンロードし、兄弟ディレクトリに配置します
    • ダウンロードのリンクは、左下の"Download GNU tarball" の部分です。revisionを指定してダウンロードする場合は、先に、左上の"Sticky Revision:"の右の空欄にrevision値をキーボードから入力して"Set"ボタンを押してください。
    • なぜか二重にgzipがかかっているので gzip -d < gpsfish-gpsfish.tar.gz|tar xvzf - 等と展開してください (2012年5月12日追記)
    • Please click "Download GNU tarball" to get each source code of OSL (basic shogi library), GPSShogi (evaluation function data and others) and GPSFish, then extract them in a same directory.
  4. gpsshogi のデータディレクトリをosl にリンクします. Make link from osl/data to gpsshogi/data
    (cd osl; ln -s ../gpsshogi/data .)
  5. oslをコンパイルします. Compilation of OSL
    • (cd osl/release; make -j $n) # $nはコア数など (コンパイルの並列度)
    • (cd osl; make third-party -j $n) # ここでエラーが出た場合は、後で回避可能
    • (cd osl/core/osl; make -j $n) # 2014年4月にoslは{core,std,full}に分割され、gpsfishはcoreのみ使います
  6. (gpsfish_devを使う場合のみ) データを用意します
    (cd gpsfish/data; make)
  7. gpsfishをコンパイルします. Compilation of GPSFish
    cd gpsfish/src;
    make -j $n
    • 前述の"(cd osl; make third-party -j $n)" で失敗していた場合は、libtcmalloc-minimal.a が存在せず、リンクに失敗します。コマンドラインのg++ -o gpsfish ... の長い行から、libtcmalloc-minimal.aの部分を消してリンクしてください。tcmallocは標準のmallocを差し替えて性能を上げるライブラリですが、gpsfishの場合はそれほど差はないと思われます。 2014年4月現在、tcmallocは使いたい場合だけ、各自で用意してリンクする方針となりました
  8. USIで動きます. Run in USI.
    ./gpsfish
    usi
    ...
    isready
    readyok
    position startpos moves 9i9h
    go byoyomi 10000

その他

自動でコア数を認識しますが、hyper threadingが有効の場合は、弱くなってしまうかもしれません。無効に出来ない場合は、threads.h 内の以下の定数を、物理コア数に設定すると良いと思います。

const int MAX_THREADS = 32;

hyper threading をBIOSで無効にするのが一番良いでしょう。無効にできていれば上述の対策は不要です。

stockfishからの変更点詳細

チェスではpromotionがとても大きな価値を持ちますが、将棋ではそれほどでもないため、(詳細は後日記述されます)


[ 編集 | 凍結 | 差分 | バックアップ | 添付 | リロード ]   [ 新規 | | ヘルプ ]
https://gps.tanaka.ecc.u-tokyo.ac.jp:443/gpsshogi/index.php?GPSFish トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-04-12 (土) 00:59:10 (3894d)