TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

dlshogiをVisual Studio 2022+CUDA11.6+cuDNN8.4+TensorRT8.4に移行

Visual Studio 2022が去年の11月にリリースされたが、CUDAが対応するまで移行を控えていた。
1月にCUDA 11.6がリリースされてVisual Studio 2022に対応したが、cuDNNとTensorRTがCUDA11.6に対応したバージョンがリリースされていなかったので、移行できずにいた。
先日、やっとCUDA 11.6に対応したTensorRT 8.4 GAがリリースされたので、Visual Studio 2022 + CUDA11.6 + cuDNN8.4 + TensorRT8.4に移行した。

CUDAのバージョン

CUDAの最新バージョンは、11.7がリリースされているが、CUDA 11.7のnvccで、CUDAのソースをコンパイルすると、実行時に

Error: the provided PTX was compiled with an unsupported toolchain.

というエラーが起きたため、CUDAのバージョンは11.6にした。

.cuのカスタムビルド設定

nvccで.cuをカスタムビルドする設定で、-ccbinオプションのツールチェインのパスは、Visual Studioが64ビットになったため、$(VC_ExecutablePath_x86_x64)から$(VC_ExecutablePath_x64_x64)に変更が必要である。
また、/Fdで指定する.pdbのファイル名は、vc142.pdbからvc143.pdbに変更が必要である。
それ以外のオプションは以前のバージョンと変更ない。

実行時にzlibのdllが必要

cuDNN 8.4の実行にzlibwapi.dllが必要になったため、PATHが通ったフォルダに、ダウンロードしたZLIBに含まれるzlibwapi.dllをコピーする必要がある。
Installation Guide :: NVIDIA Deep Learning cuDNN Documentation

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\bin

にコピーした。

.serializedの削除

TensorRTのバージョンが変わると、TensorRTのキャッシュファイルの削除が必要である。
dlshogiのモデルファイル(.onnx)があるフォルダの拡張子.serializedのファイルを削除する。

NPS確認

dlshogiを再ビルドしてNPSを確認した。
RTX3090で、初期局面で1000000ノード探索時のNPSは以下の通りとなった。

20ブロック 25293
15ブロック 39465

以前とほぼ同じであることを確認した。

まとめ

dlshogiの開発環境をVisual Studio 2022に移行した。
CUDA、cuDNN、TensorRTがすべて対応するまで移行を控えていたが、TensorRT 8.4 GAがリリースされたことで、やっと移行することができた。
これで、ますます開発が捗るはずである。