Skip to content

Instantly share code, notes, and snippets.

@sunfish-shogi
Last active March 29, 2024 09:12
Show Gist options
  • Save sunfish-shogi/fbe14069e794a5c3bb033c6148c6349e to your computer and use it in GitHub Desktop.
Save sunfish-shogi/fbe14069e794a5c3bb033c6148c6349e to your computer and use it in GitHub Desktop.
M3 Mac で YaneuraOu をビルドして Háo を動かした時のメモ

環境

  • OS: macOS Sonoma 14.2
  • チップ: Apple M3
  • メモリ: 8GB

clang のバージョンを確認する。

% clang --version
Apple clang version 15.0.0 (clang-1500.1.0.2.5)
Target: arm64-apple-darwin23.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

Apple の開発ツールに付属しているやつなので少し古い。 Homebrew で新しいものを簡単に入れられるのだろうけど、今回は最新のコンパイラを試すのが目的ではないのでこのままにする。

YaneuraOu をビルドする。

git で clone する。

git clone git@github.com:yaneurao/YaneuraOu.git

作業時のデフォルトブランチのリビジョンは aaccad だった。

source ディレクトリに移動する。

cd YaneuraOu/source

make コマンドでビルドする。

NNUE に分類される評価関数でも、具体的な型ごとに異なるオプションでビルドしなければならない。

  • やねうら王標準型の場合 (e.g. Háo)
    • make tournament TARGET_CPU=APPLEM1 -j 4
  • halfkp_1024x2-8-32 の評価関数を使う場合 (e.g. Lí-VENGE)
    • make tournament TARGET_CPU=APPLEM1 YANEURAOU_EDITION=YANEURAOU_ENGINE_NNUE_HALFKP_1024X2_8_32 -j 4

これより後の項目は標準型でビルドした前提で記述する。なお、オプションを変えてビルドし直す場合は make clean を実行してオプジェクトファイルを消す必要がありそう。

ビルドに成功するとバイナリが YaneuraOu-by-gcc という名前で出力される。 (clang でビルドしても by-clang とはならないらしい。)

Háo をダウンロードする。

tanuki-.halfkp_256x2-32-32.2023-05-08.7z をダウンロードして展開する。

https://github.com/nodchip/tanuki-/releases/tag/tanuki-.halfkp_256x2-32-32.2023-05-08

sha-256 sum: f16dc66c529857bf08fce8cee4f1e53a6993297644100267a6ccccd62e43dbba

(最近の Mac のアーカイブユーティリティは 7zip に対応しているらしく何もインストールせずに解凍できた。)

ディレクトリを作成してファイルを配置する。

自分の都合の良い場所にエンジン用のディレクトリを作成して、ビルドしたエンジンとダウンロードした評価関数パラメーターを配置する。

スクリーンショット 2023-12-17 6 26 27

(なんとなくファイル名の末尾を -by-clang++ にしたが特段意味は無い。)

GUI に登録して実行する。

GUI から YaneuraOu-by-gcc を探して登録する。

エンジン設定を入力する。

Háo の FV_SCALE は 20 が最適らしいので、変えておく。 参考: https://www.youtube.com/watch?v=j_I05pdpn_U&t=437s

スレッド数は 1 にしておく。

それ以外はデフォルト値のままにする。

探索する。

平手初期局面を 20 秒ほど探索させると 19.8 秒で深さ 38 の読み筋が現れ、NPS は概ね 150 万前後を推移していた。

スクリーンショット 2023-12-17 2 13 24

手元の Windows マシンと比較する。

価格帯や購入時期が違うので比較対象としてそれほど意味は無いのだが、とりあえず手元にある Windows マシンと比べてみる。

やねうら王は Intel や AMD 向けにチューニングされているだろうし、最近の CPU 性能の一般的な評価を見ると、同じ価格帯なら Intel か AMD の最新 CPU を積んだマシンを買った方が良いパフォーマンスを出すだろうと思う。 2018 年に購入した Surface Book 2 は結構高かったもののもうだいぶ古いし、 HP とマウスコンピューターは 10 万円台前半なので MacBook Pro と比べると 10 万円くらい安い。

HP Envy / Ryzen 7 5800U / 16GB RAM

同じリビジョンを VS 2022 でビルドして同じエンジン設定(FV_SCALE=20, Threads=1)で動かしてみた。

NPS は 126 万前後だった。 15.8 秒で深さ 35 に到達したが 20 秒までにその先は出てこなかった。

そもそも深さ 35 到達時点のノード数が、何度試しても Mac 版より 380 万程度多くなってしまっているので、ハード以外の部分でフェアではない要素がありそう。 なお、 GitHub で公開されているやねうら王 7.6.1 を使うと 20 秒以内に深さ 31 までしか到達せず NPS は 128 万前後だった。

Surface Book 2 / Intel Core i7-8650U / 16GB RAM

Envy でビルドしたものを持ってきて同じ設定で動かした。

NPS は 55 万程度、 19.5 秒で深さ 31 に到達した。

Mouse Computer G-Tune / AMD Ryzen 5 4500 / 16GB RAM

Envy でビルドしたものを持ってきて同じ設定で動かした。

NPS は 108 万程度、18.5 秒で深さ 35 に到達した。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment