GPSをソースからビルドしてみた(無謀にも)
プロトコルの件はいくつかコメントをいただきまして、こちらも少し考えております。後ほど何か書きます。
ちょっとした実験を思い立ちまして、それを試すためにGPSをビルドしてみました。だいぶ以前にたしか1回やったことあるはずなんですが全然忘れてまして、今回やったらかなりハマったのでやり方メモしておきます。(当然ですけど、Linuxですよ。)
まずは「GPS将棋」+ I'm Feeling Lucky で出てくる
http://gps.tanaka.ecc.u-tokyo.ac.jp/gpsshogi/
を見にいきます。ところがまず、ここを見てもどうやってビルドすればいいのかぱっとはわからないんですよね…というところでハマります。いろいろ探しまわるとまあ何とかわかるんですが。結論から言うと、
・gpsshogiとoslの2つの部分がある
・事前にboostとcppunitのインストールが必要
ということで、
1. boost インストール
2. cppunit インストール
3. osl ビルド
4. gpsshogi ビルド
5. スクリプトをいじって実行
という順に進めます。(1と2は逆でも可)
1. boost インストール
http://www.boost.org からソースを入手します。boost_1_43_0.tar.gz とかいう名前のファイルを解凍して、
cd path/to/boost_1_43_0
./bootstrap.sh --prefix=path/to/install
./bjam
./bjam -install
bjamって何だかわかってませんが、とにかくドキュメントに従います。そうそう、boostのドキュメントも不便で、READMEとかINSTALLとかにさくっと書いといてほしいんですが、INSTALLを見ると「index.htmlを見ろ」とかほざいてます。それ見てもぱっとわからず、更に2,3回リンクをたどらないとインストールのやり方までたどりつきません。おまけに途中わかりづらいし。なめとんのかお前は。いやつい激昂してしまいました。失礼しました。
2. cppunit インストール
これもググって http://sourceforge.net/projects/cppunit/ に取りに行くんですが、ここでDLするとなぜか cvsの*repository*のファイルが来ます。xxx,vとかいうやつ。なぜこうなる?何考えてるんでしょうかこの人たちは。頭おかしいんじゃないでしょうか。いやつい激昂してしまいました。失礼しました。暑いと怒りっぽいんです。
どうやるかというと、"view all files"をクリックして、"cppunit"を開くと各リリースのディレクトリが出ますんで、そこだと cppunit-1.12.1.tar.gz とかいうファイルがあります。
こっちはINSTALLにちゃんとやり方書いてあります。
./configure --prefix=path/to/install
make
make install
という見慣れたやり方。
ちなみにググると yum なり apt-get なりで一発インストールする方法もある雰囲気もありましたが、今回は諸般の事情でroot権限のないマシンを使っていたため、/usr/localに書けないのでboostもcppunitもソースから作ってました。
3. osl ビルド
GPS将棋のページから「使い方(ソースから)」~「osl/Install」で行ける
http://gps.tanaka.ecc.u-tokyo.ac.jp/gpsshogi/index.php?osl%2FInstall
に従うんですけれども、まずmakefile.localで何をどう選べばいいのかがまたわからないんですよね~ とりあえず私がやったのは、CPUOPTION=-fno-strict-aliasing のみ。
BOOST_POSTFIX[_MT] は消す。INCLUDES と LDFLAGS は boost と cppunit の include, libを指定。更に、Linux(RHEL)なんですが "LDLIBS += -ldl" も必要でした。memory allocator は default にしたがう。これでmake。あそうそう、LD_LIBRARY_PATHもboostとcppunitのlibを指定しました。
7/15/2010 にDLしたcvs tarballを使ったんですが、2か所ほどコンパイルでエラーに。gccは4.1.2です。
lib/search/searchTimer.cc
lib/Annotate/analyzer.cc
両方ともint(/uint64_t)とdoubleの暗黙変換関連。warningがあるとエラーでビルド止まるようです("-Werror"がそれかな?)。warningでも止まらないようにしようかとも一瞬思いましたがさすがにちょっと恐いので、ソースを見てみます。幸い両方ともちょこっとキャストすれば通りそうなところだったので、"(int)"をつけたり、"* 0.9" を "* 9 / 10"とかにして切り抜けます。(正しいのかよくわからんが)
以上で何とかビルドは通りました。
テストができるとのことなので、test/ をビルドして testAll を実行。何かいっぱい出てきます。
Failures !!!
Run: 548 Failure total: 73 Failures: 70 Errors: 3
…ま、8割以上通ってるから問題ないんでしょう。(<いいのかそれで)
>一部のテストは著作権の問題で公開できないデータに依存しているため,失敗します.
とありますし。そうですか。失敗するんですか。まあ細かいことにはこだわらずに次に進みます。
4. gpsshogi ビルド
GPS将棋のページから「使い方(ソースから)」~「gpsshogi」で行ける
http://gps.tanaka.ecc.u-tokyo.ac.jp/gpsshogi/index.php?%BB%C8%A4%A4%CA%FD%2Fgpsshogi
を見ます。
cd gpsshogi/bin # gpsshogi/ は osl/ と同じdirに置く
make gpsshogi RELEASE=t
ここは特に問題なし。ちなみに私はもっぱらshogi-server経由で対戦するだけなので、GUIとかは目もくれません。gpsshogiだけあればおk。
5. スクリプトをいじって実行
gpsshogi/bin/scripts-for-game/ の下にいくつかスクリプトがあります。適当そうなのを選んでいじって使えばよいっぽい。私はwdoor.sh をとってきていじってました。これはenvを設定して network_x1.pl を呼ぶだけなので、わからないことがあったら network_x1.pl をみます。shogi-serverがローカルだったら"SERVER=localhost"でよさそうだな、とか適当に見当をつけて使います。
なお、以前にやってたときのうろ覚えですが、GPS将棋の時間設定はたしかGAMENAMEからとってくるんですよね。これだと不便なこともあるので、直接時間設定をするときはスクリプトをいじった記憶があります。今ぱっと見たところ、gpsshogi/bin/network/CsaClient.pm のなかの timeleft/byoyomi をセットしたんだったかな?
以上でいちおうローカルのshogi-serverと接続してGPS対ボナで対戦できました。1回だけやってボナが勝ったんですが、テストの結果とかから見ても、GPSが変に弱くなってる可能性はなきにしもあらず?
« CSAプロトコルでの詰みの扱い | トップページ | 詰ますや詰まさざるや »
「将棋プロセサ」カテゴリの記事
- ボンクラーズの開発過程について書いた記事が掲載されました(2019.03.07)
- 「浅い評価値を深い評価値に近づける学習法」誕生の背景(2016.10.06)
- 塚田九段の対ボンクラーズ練習棋譜を公開します(2013.09.07)
- Puella α ソース公開(2013.08.28)
- クラスタ並列の解説記事を公開します(2013.08.22)
コメント