Skip to content

ふかうら王のビルド手順

yaneurao edited this page Jan 31, 2025 · 14 revisions

ふかうら王のビルド手順

ふかうら王で遊びたい方

ふかうら王をご自分でビルドしたい方

以下の資料も参考にしてください。

Windowsでふかうら王

DirectML版ふかうら王のビルド

DirectML版のビルドは、Visual Studioでは、NuGetを用いてOnnxRuntimeをインストールするのが手軽です。

Visual StudioのNuGetの使い方
	クイック スタート: Visual Studio にパッケージをインストールして使用する (Windows のみ)
	https://docs.microsoft.com/ja-jp/nuget/quickstart/install-and-use-a-package-in-visual-studio

Visual StudioのNuGetでインストールするときのpackage名

	- Microsoft.AI.DirectML
	- Microsoft.ML.OnnxRuntime.DirectML

また、Windows SDKが必要です。DirectML.hのincludeでコンパイルエラーになる場合は、これが原因です。

関連記事

TensorRT版ふかうら王のビルド

ふかうら王V8.60は、以下のCUDA、TensorRT、CuDNNのバージョンで動作することを確認済みです。

⚠ ふかうら王のバージョンが上がった時に依存するバージョンが変わることはあります。

も参考にしてください。

ふかうら王V8.60は、以下のバージョン以外で動作する保証はありません。ふかうら王が動作しないと言う人は、以下のバージョンで動作するかを試してみてください。(TensorRTとcuDNNは、配布版のふかうら王8.60には含まれているので、インストールしなくとも動作します。)

Version download page Installer/Zip Filename
CUDA 12.8 https://developer.nvidia.com/cuda-downloads cuda_12.8.0_571.96_windows.exe
TensorRT 10.8 GA https://developer.nvidia.com/tensorrt-download TensorRT-10.8.0.43.Windows.win10.cuda-12.8.zip ⚠要NVIDIAユーザー登録
cuDNN 9.7.0 https://developer.nvidia.com/cudnn cudnn-windows-x86_64-9.7.0.66_cuda12-archive.zip
  • EA(Early Access): 先行アクセス版: 新機能のテスト目的版
  • GA(General Availability): 正式版・安定版

上記の表にはダイレクトリンクがありますが、リンク先が変わる可能性があるので、以下に詳しくダウンロード方法も書いておきます。

CUDAのダウンロード

CUDA Toolkit 12.8 https://developer.nvidia.com/cuda-downloads

Operating System : 『Windows』 Architecture : 『x86_64』 Version : 11 (Windows 11の場合) Installer Type : exe(local) , exe(network)どちらでも。とりあえず、前者を選ぶ。

CUDA Toolkit Installer : Download (3.2GB) ⇨ ここからダウンロード

cuda_12.8.0_571.96_windows.exe

がダウンロードされる。これを実行する。

実行したあとのインストーラーでの手順。

⇨ NVIDIAソフトウェア使用許諾契約書「同意して続行する」
⇨ インストールオプション (不要なものをインストールしたくないのでカスタムを選びますが、自動でも問題ないです)「カスタム」
⇨ カスタムインストールオプション
    CUDA ⇨ チェックを入れる
    NVIDIA GeForce Experience components ⇨ いらない(チェックを外す)
    Other components  ⇨ いらない(チェックを外す)
    Driver components  ⇨ いらない(チェックを外す)
⇨ インストール場所の選択 ⇨ 変更の必要なし(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8)
⇨ Environment Variable Check ⇨ 次へ
⇨ Preparing for installation と表示される。これ5分ぐらいかかる。
⇨ インストールが進行中です。 と表示される。インストールが進む。
⇨ Nsight Visual Studio Edition Summary ⇨ 「次へ」

もし、上のバージョンより新しいバージョンがダウンロードされる場合、ページの画面下部にある「Resources」の「Archive of Previous CUDA Releases」をクリックして、下のバージョンを探す。

CUDA Toolkit 12.8.0 (January 2025)

上記のバージョンは、⇓このURLからダウンロードできる。 https://developer.nvidia.com/cuda-12-8-0-download-archive

環境変数の確認

Windowsのスタートメニュー ⇨ 「path」と入力 ⇨ 「システム環境変数の編集」 ⇨ システムのプロパティというダイアログが起動する。「詳細設定」のタブが選ばれている。「環境変数」のボタンをクリック。

変数「CUDA_PATH」の値が「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8」になっていることを確認。

cuDNNのダウンロード

https://developer.nvidia.com/cudnn

からダウンロード。

⇨ 「Download cuDNN Library」をクリック ⇨ Operating System : Windows ⇨ Architecture : x86_64 ⇨ Version : Tarball 💡 ここで 10を選択するとzipファイルではなく、インストーラー(exeファイル)がダウンロードできる。その場合、インストール先の変更をしないといけないので、この説明では、Tarballのほうを選んでいる。 ⇨ CUDA Version : 12 ⇨ Installer Type : exe(local) ⇨ Base Installer ⇨ Download(673.4MB)

古いバージョンは、 Resources : Archive of Previous Releases から。

zipファイルがダウンロードされる ⇨ 展開したフォルダを"C:\ProgramData\YaneuraOu"に移動させる。

TensorRTのダウンロード

https://developer.nvidia.com/tensorrt

からダウンロード。

💡 ダウンロードするためにNVIDIAのアカウント登録が必要。

ダウンロードの方法は、cuDNNと同様。

TensorRT 10.8をダウンロード。(以下のパッケージ) これがCUDA 12.8に対応している。

TensorRT 10.8 GA for Windows 10, 11, Server 2019, Server 2022 and CUDA 12.0 to 12.8 ZIP Package

⇨ ダウンロードしたZIPファイルを展開する。 ⇨ 展開したフォルダを"C:\ProgramData\YaneuraOu"に移動させる。

フォルダ編成

実行ファイルと同一のフォルダにこれらのdllを配置しない場合、環境変数PATHに、

  • CUDAのbinフォルダ 💡 配布している、ふかうら王V8.60以降には含まれています。
  • TensorRTのlibフォルダ 💡 配布している、ふかうら王V8.60以降には含まれています。
  • cuDNNのbinフォルダ 💡 配布している、ふかうら王V8.60以降には含まれています。

を追加する必要があります。

デフォルトのインストールディレクトリの場合、CUDAのbinは、以下のパスになります。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\【CUDAのバージョン番号】\bin

%CUDA_PATH% がCUDAのインストール先になっているはずなので

  • %CUDA_PATH%\bin

を環境変数PATHに追加すれば良いでしょう。(CUDAインストーラによって自動的に追加されている筈ですが)

💡 GitHubのReleasesで配布しているふかうら王を用いる場合は、上記3つは含まれているので、環境変数PATHへの追加は不要です。(このあと説明している「PATHを通す」作業は必要ありません。)

⚠ ふかうら王とdlshogiを共存させる場合などでは、それぞれ依存するcuDNNやTensorRTのバージョンが異なるためこれは上手く行かず、CUDAのbinフォルダ以外にPATHを通すのはお勧めしません。(環境変数PATHのリストの順番が先になっているライブラリが読み込まれるため、違うバージョンのライブラリが読み込まれることになって失敗するものが出る。)ふかうら王、フォルダ構成例の構成をお勧めします。

ビルドに必須なのはこのうちCUDAとTensorRTのみですが、cuDNNも以下のように配置すれば、ビルド先に実行に必要な.dllファイルを適宜コピーします。

- 🗄️ C:\
  - 📁 ProgramData (隠しフォルダ)
    - 📁 YaneuraOu
      - 📁 cudnn-windows-x86_64-9.7.0.66_cuda12-archive
        - 📁 bin
        - 📁 include
        - 📁 lib
      - 📁 TensorRT-10.8.0.43
        - 📁 bin
        - 📁 include
        - 📁 lib
        - ...

上記以外のファイル配置やバージョンで使いたい、Visual Studioをお使いの方は、

  • source/prop/YaneuraOuEdition-Deep-ORT-TRT.prop
  • source/prop/YaneuraOuEdition-Deep-TensorRT.prop

というプロパティシートでCUDA、TensorRTのフォルダを追加のinclude/libフォルダとして指定してあるのでそこを適宜修正して使ってください。

  • include = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\【CUDAのバージョン番号】\include
  • lib path = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\【CUDAのバージョン番号】\lib\x64

💡 ↑は、x64(64bit)版の時。32bit版なら"lib\x86"となっている。

環境変数PATHはWindowsでは大事な資源です(例: 指定できる合計文字数は約2000文字まで)。また、環境変数PATHの指定順によってはそれぞれ別のバージョンのライブラリに依存する同士で競合を起こしてしまうことがあります。以下ではTensorRT・cuDNN・zlibをPATHに加える方法を説明していますが、環境変数PATHに極力頼らない方法を推奨します。 👉 dlshogiとふかうら王との共存

TensorRTにPATHを通す

⚠ dlshogiとふかうら王とでは要求するTensorRTのバージョンが異なるので、ここに書いてある方法でTensorRTとcuDNNのlibにPATHを通すとdlshogiと共存できなくなる可能性が高いです。そこでTensorRTとcuDNNのlibにはPATHを通さずない方法をお勧めします。👉 dlshogiとふかうら王との共存

🍙 以下は、PATHを通す場合の説明ですが、ふかうら王では、この手順は非推奨です。

環境変数PATHに、TensorRTのlibディレクトリを追加します。

C:\に解凍した場合、以下のパスになっています。

C:\TensorRT-【TensorRTのバージョン番号】\lib

これを環境変数PATHに追加すれば良いでしょう。

cuDNNにPATHを通す

cuDNNのbinにも同様にPATHを通す必要があります。

⚠ TensorRT同様に、これもPATHを通さない方法をお勧めします。 👉 dlshogiとふかうら王との共存

🍙 以下はPATHを通す場合の説明です。ふかうら王では、この手順は非推奨です。

cuDNNに対しても同様にPATHを通すのは面倒なので、TensorRTのインストール先のフォルダにファイルコピーしてしまうのが手っ取り早いです。

例) cuDNNのbinフォルダのファイルが TensorRTのインストール先のlibフォルダのファイルになるようにファイルコピー。

Ubuntuでふかうら王

Docker環境でふかうら王のDockerfileの方にUbuntuでビルドするまでのコマンドが書かれていますので、それを参考にすると良いと思います。

例) ビルド用のmakeコマンド

make clean YANEURAOU_EDITION=YANEURAOU_ENGINE_DEEP_TENSOR_RT_UBUNTU
make -j8 tournament COMPILER=clang++ YANEURAOU_EDITION=YANEURAOU_ENGINE_DEEP_TENSOR_RT_UBUNTU ENGINE_NAME="FukauraOuV8.20" TARGET_CPU=AVX2
cp ./YaneuraOu-by-gcc ~

GPU 32個までに対応。

make clean YANEURAOU_EDITION=YANEURAOU_ENGINE_DEEP_TENSOR_RT_UBUNTU
make -j8 tournament COMPILER=clang++ YANEURAOU_EDITION=YANEURAOU_ENGINE_DEEP_TENSOR_RT_UBUNTU ENGINE_NAME="FukauraOuV8.20" TARGET_CPU=AVX2 EXTRA_CPPFLAGS="-DMAX_GPU=32"
cp ./YaneuraOu-by-gcc ~

Docker環境でふかうら王

Docker環境でふかうら王を起動するものはMizarさんが公開されています。

💡 Windowsから上記のDocker環境を構築し、起動するコマンドを以下のように書いて、後者を将棋所やShogiGUIに登録すると思考エンジンとして使えます。

  1. 事前準備

  2. Dockerのビルド

@echo off
cd %~dp0
docker build . -f fukauraou_dlshogi.dockerfile -t fukauraou
  1. Dockerの思考エンジン起動コマンド
@echo off
cd %~dp0
docker run -i --rm --gpus all -v %CD%:/workspace --ipc=host fukauraou FukauraOu-avx2 %1 %2 %3 %4 %5 %6 %7 %8 %9

🖋 Docker環境のなかでNVIDIAのGPUが認識できているかは、例えば次のようにすればわかります。

■ dockerコマンド

docker run -i --rm --gpus all nvidia/cuda:11.7.0-base-ubuntu20.04 nvidia-smi


■ 出力例

Unable to find image 'nvidia/cuda:11.7.0-base-ubuntu20.04' locally
11.7.0-base-ubuntu20.04: Pulling from nvidia/cuda
d5fd17ec1767: Already exists
2acb984f1135: Pull complete
558be3b594fb: Pull complete
acebc65b4885: Pull complete
6d5b0e795a9b: Pull complete
Digest: sha256:88754a02905efb25dacdc749ec5020875d7048012957c68f957541fcff7e251d
Status: Downloaded newer image for nvidia/cuda:11.7.0-base-ubuntu20.04
Sat May 21 01:49:31 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.43.01    Driver Version: 516.01       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:01:00.0  On |                  N/A |
|  0%   39C    P8    31W / 350W |   2592MiB / 24576MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA GeForce ...  On   | 00000000:21:00.0 Off |                  N/A |
|  0%   31C    P8    17W / 350W |      8MiB / 24576MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

ビルド時のMAX_GPUの指定について

また、ふかうら王をビルドする時に MAX_GPU = 32のように指定すると、GPUは16個までではなく32個まで扱えるようになります。(DNN_Model17~32, DNN_Batch_Size17~32, UCT_Threads17~32という思考エンジンオプションが追加されます。)

Macでふかうら王

Macでは、GPU(機械学習専用チップNeural Engine搭載機種ではNeural Engine)を使用するためCore ML版をビルドします。

macOS Montereyでビルド・動作します。Core MLが実装されていれば、もう少し古い環境でもビルド可能と思われます。ビルドには、Xcode Command Line Toolsのインストールが必要です。サードパーティ製ライブラリは不要です。

プロジェクトルートで以下のコマンドを実行することでビルドできます。

make -C source YANEURAOU_EDITION=YANEURAOU_ENGINE_DEEP_COREML TARGET_CPU=APPLEM1

Macは2020年以降のM1チップと、それ以前のIntelチップでCPUアーキテクチャに互換性がありません。TARGET_CPUを書き換えることで対象CPUアーキテクチャを切り替えます。

ターゲット環境 TARGET_CPU
M1 Mac APPLEM1
Intel Mac APPLEAVX2
Clone this wiki locally