Macへelmoの導入が成功したので備忘録として残しておく。
基本的にはネット上の情報を頼りに作業は進めました。
また手探りで進めて細かい検証をしていないため、もしかしたらやらなくてもいい手順が入っているかもしれません。
その辺はコメントなどで指摘いただければと思います。
コンピューター将棋を動かすためには以下の三つが必要らしいです。
- 評価関数
- 定跡
- 思考エンジン
このうち、前の二つがelmo
として公開されており、最後のがやねうら王2017 Early
として公開され、elmoの思考エンジンとして利用されているようです。
環境
- OS: macOS Sierra
- Homebrew インストール済み
- Xcodeコマンドラインツール インストール済み
事前準備
やねうら王をMacでビルドするために、デフォルトのclang
ではなくgcc
を利用します。
なぜclang
のままではダメだったかというと、fatal error: 'cstdint' file not found
が解決できなかったため。
(clang
のまま通す方法もありそうだけど……)
というわけで、以下の手順を進めgcc
を利用できるようにします。
OS X El Capitanにgccを入れてシンボリックリンクを作成のサイトを参考に、Homebrewを利用してgcc
をインストールし、さらにgcc
コマンドとg++
コマンドを利用できるようにしておきます。
$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/7.1.0/libexec/gcc/x86_64-apple-darwin16.7.0/7.1.0/lto-wrapper
Target: x86_64-apple-darwin16.7.0
Configured with: ../configure --build=x86_64-apple-darwin16.7.0 --prefix=/usr/local/Cellar/gcc/7.1.0 --libdir=/usr/local/Cellar/gcc/7.1.0/lib/gcc/7 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-7 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --enable-checking=release --with-pkgversion='Homebrew GCC 7.1.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-nls --with-native-system-header-dir=/usr/include --with-sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk
Thread model: posix
gcc version 7.1.0 (Homebrew GCC 7.1.0)
導入手順
やねうら王ダウンロード
落とし方は任意ですが、今回はgit
で。
場所も任意で問題ないはず。
$ git clone https://github.com/yaneurao/YaneuraOu.git
コンパイラの変更
エディタを使ってMakefile内のコンパイラを指定している箇所をclang++
からg++
に変更。
$ git diff
diff --git a/source/Makefile b/source/Makefile
index 28b596b..421a13e 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -6,8 +6,8 @@ YANEURAOU_EDITION = YANEURAOU_2017_EARLY_ENGINE
# clangでコンパイルしたほうがgccより数%速いっぽい。
-# COMPILER = g++
-COMPILER = clang++
+COMPILER = g++
+# COMPILER = clang++
# 標準的なコンパイルオプション
CFLAGS = -std=c++14 -fno-exceptions -fno-rtti -Wextra -Ofast -MMD -MP -fpermissive
ビルド
ここからはelmoをやねうら王で使用する方法のサイトを参考に進めていけば問題ないはずです。
makeの指定は使用しているPC(実際にはCPU)に合わせて指定するようですね。
$ cd source/
$ make avx2
ビルドが成功したら動作確認。
$ ./YaneuraOu-by-gcc
usi
動作確認できたらexeディレクトリに実行に必要なファイルを集約します。
以前はexeディレクトリがリポジトリに存在したようなんですが、今は見当たらないので自分で用意します。
$ cd ..
$ mkdir -p exe/2017Early/{book,eval}
$ mv source/YaneuraOu-by-gcc exe/2017Early/
elmo取得
公開されているelmoのバイナリファイルをダウンロードして解凍。
book/yaneura_format/standard_book.db
をbook
ディレクトリに、
eval/*
をeval
ディレクトリにコピーします。
結果、exe/2017Early
ディレクトリは以下のような構成になります。
$ tree
.
└── 2017Early
├── YaneuraOu-by-gcc
├── book
│ └── standard_book.db
└── eval
├── KKP_synthesized.bin
├── KK_synthesized.bin
└── KPP_synthesized.bin
3 directories, 5 files
配置できたら動作確認。
$ cd exe/2017Early/
$ ./YaneuraOu-by-gcc
usi
isready
以下のような結果が出力されていればうまくいっています。
info string Eval Check Sum = 65cd7c55a9d4cd9 , Eval File = elmo(WCSC27)
将棋ぶらうざQの導入
将棋ぶらうざQの公式サイトからMac版のソフトをダウンロード、解凍します。
手元の環境だとSbrowserQ
はうまく動かなかったので、SbrowserQ_Bundle_Java8
をアプリケーションディレクトリにコピーして、起動します。
(アプリケーションディレクトリにコピーしないと起動に失敗しました)
[設定]>[将棋エンジン設定...]を選択、
[追加]ボタンを押し、エンジンファイルパスに、先ほどビルドしたYaneuraOu-by-gcc
を選択します。
これでelmoを使用した対局や検討が可能になりました。
なお実際に利用する際には、オプションからBookDepthLimit
を0
に、ConsiderationMode
のチェックをONにするそうです。