やねうら王をWindowsでコンパイルする方法【最速編】(MSYS2 / clangを利用)

やねうら王をWindowsでコンパイルする方法【メモ】(MSYS2 / clangを利用)

やねうら王をコンパイルする方法の自分用メモ
Windows環境を切り替えるとゼロから環境構築するのが面倒なので
ここに手順を書き記しておく。

なお、やねうら王のコンパイル以外の用途では
MSYS2を使う予定はないものとする。

 

1.MSYS2をインストール

MSYS2 installer

上記の64bitと書いてあるバージョン。

「次へ」を連打してとりあえずインストール。

以降はCドライブにインストールされたことを前提に話を進める。

2.MSYS2のミラーサーバーを高速なサーバーに切り替える

初期のサーバーは遅いので別の場所から落としてくるように設定する。
C:\msys64\etc\pacman.d\mirrorlist.mingw64をメモ帳以外のテキストエディタで開く。

メモ帳以外のテキストエディタが分からない場合にはこの手順は飛ばすこと
作業3の際のダウンロード時間が短縮されるだけなので
この部分は飛ばしたところで影響はない。

メモ帳以外のテキストエディタで先ほどのファイルを開いたら
下記の文字列を「## Primary」の上の行に挿入する。(上書き保存を忘れずに)

Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/

参考記事
msys2のミラーにjaistを使いたい

jaistのミラーは手元では上手く機能していなかったので
今回の手順では中国科学技術大学のミラーを利用している。

3.boost、git、clang、toolchain、openblasをインストール

インストール後に開かれるMYSY2は一旦閉じて
C:\msys64\mingw64.exeをダブルクリック。

pacman -Sy
pacman --needed -S mingw-w64-x86_64-boost git mingw-w64-x86_64-toolchain mingw-w64-x86_64-clang make mingw-w64-x86_64-openblas

上記を1行ごとにコピペをして実行。
(環境によっては文字列のスペース部分や「–」を正常にコピー出来ていない場合があるので注意)
困ったら「Enter」を叩くか「y」と打ち込んでエンターを押せば進む。
なんだか大量のファイルが入る。

※HPには最初にMYSY2を更新しろと書かれているのだが
やねうら王のコンパイルには必要ないので飛ばしているので注意。

4.とりあえずやねうら王をgithubから引っ張って来て試しにコンパイル

C:\msys64\mingw64.exeを開く。
下記のコマンドを1行ごとにコピペして実行。

git clone --depth 1 https://github.com/yaneurao/YaneuraOu.git
cd ~/YaneuraOu/source
make -j8 avx2 YANEURAOU_EDITION=YANEURAOU_2018_TNK_ENGINE

※1「YANEURAOU_EDITION=YANEURAOU_2018_TNK_ENGINE」は
いわゆるNNUE評価関数用のエンジンをコンパイルしたい場合のオプション
KPPT評価関数のエンジンをコンパイルしたい場合には付けなくてよい。

※2「–depth 1」は更新履歴をダウロードしないというオプション。
過去バージョンのコンパイルもしたい場合には外すこと。

コンパイルに成功する・・・はず。

成功していた場合には実行ファイルが
C:\msys64\home\user\YaneuraOu\sourceに作られている。

やねうら王の学習用のバイナリをコンパイルする

学習用のバイナリをコンパイルするには一工夫が必要になる。
下記の記事を参考にしつつ、コンパイル可能な環境を整えよう。

MSYS2/MinGW-w64 のclangで omp.h file not found と言われた時の対処法

上記の手順を参考に環境を整え終わったら

cd ~/YaneuraOu/source
make clean
make -j8 evallearn YANEURAOU_EDITION=YANEURAOU_2018_TNK_ENGINE

でコンパイル。
最初の「make clean」がないと通常のエンジンを再コンパイルしているだけの場合があるので一応推奨。

なお実行にはlibomp.dllが必要となる。
C:\msys64\mingw64\binに入っているので
コピーして実行するエンジンと同じフォルダに置いておく。

過去のバージョンのやねうら王をコンパイルしたい

https://github.com/yaneurao/YaneuraOu/commits/master

上記からどの時点のバージョンにしたいのかを選択して画像を参考に文字列をコピーする。

mingw64.exeを開く。
「作業4」は既にした事を前提に進める。

cd ~/YaneuraOu
git checkout b6f28761439f586f79e5f81f974926f60fc068b2

これで上記のバージョンの時点でのソースコードに変更される。
下のコマンドでエラーが出たら「-f」を付ける。
以降のコンパイル手順は同じ。

やねうら王のソースコードを最新版にしたい

今度は最新版にする手順。
毎回git cloneしていたら面倒なので差分だけ取り込もう。

mingw64.exeを開く。

cd ~/YaneuraOu
git checkout master

これでソースコードが最新版に切り替わった。
変更とかしてしまっていた場合には「-f」を加えて上書きする。

androidスマホ用のバイナリをコンパイルしたい

やねうら王はandrooid用にもコンパイルすることが可能だ。
使い方は省略、とりあえずコンパイルする方法だけ。

前提として作業4までは行っているものとする。

なお、経験がないと
かなり面倒なので覚悟すること

下記の手順はやねうら王のコンパイル以外では
andorid-ndkを利用しない人向けとなっている。

環境変数などにはタッチしない手法だ。

android-ndkをダウンロード

NDK のダウンロード

上記のページ内のWindows 64 ビットと書かれているリンクから
ファイルをダウンロードする。
必ず利用規約(約8000文字)を読んで納得してからダウンロードすること

ダウンロードが終わったら
ファイルを右クリックして「すべて展開」をクリック。
かなり時間がかかるので注意。

途中でファイルが重複してるだのなんだの聞かれるかもしれないが
とりあえず全て上書きで問題ない。(・・・はず)

とりあえずコンパイル

ファイルの展開が終わったら
とりあえず中に入ろう。

展開が終わったフォルダを開いたら
その中で、何も選択をせずに「Shift」を押しながら右クリックをする。
画像のようなメニューが出現するので
PowerShellウィンドウをここに開く」をクリックしよう。

Windows10以外の古いWindowsでは
コマンドウィンドウをここで開く」かもしれないがそれでもよい。

ウィンドウが開かれたら下の文字列をコピペしてEnterを押す。

.\ndk-build.cmd NDK_DEBUG=0 --directory=C:\msys64\home\user\YaneuraOu ENGINE_TARGET=YANEURAOU_2018_TNK_ENGINE

コンパイルは結構長い。
出来上がったファイルは
「C:\msys64\home\user\YaneuraOu\libs\arm64-v8a」に入っている。

 

とりあえず自分用のメモ。

自分用なのでかなり割り切った手順になっている
実行をする場合には自己責任で。

後で細かい情報を追記するかもしれない。(未定)