Windows PCにCUDA ToolkitとcuDNNを導入する

Kazuki Kyakuno
axinc
Published in
8 min readNov 6, 2023

Windows PCにCUDA ToolkitとcuDNNを導入する方法を解説します。

CUDA ToolkitとcuDNNの概要

CUDA ToolkitはNVIDIAの提供するGPGPUのためのプラットフォームです。cuDNNはNVIDIAの提供するDNNのためのライブラリです。

ailia SDKは単独でもCPUやGPU(Vulkan)を使用した推論が可能ですが、NVIDIA GPUでは、CUDA ToolkitとcuDNNを導入することで、より高速な推論が可能になります。

CUDA Toolkitのインストール

下記のページのDownload Nowからインストールします。

今回はCUDA Toolkit 12.3を導入します。ailia SDK 1.2.15からCUDA Toolkit 12に対応しています。Windows、x86_64を選択して、Base Installerのexeをダウンロードします。

ワークディレクトリはデフォルトで問題ありません。

インストールを行います。

12.3のインストーラには不具合があり、標準インストールだとインストールエラーになるため、オプションでCUDAのRuntime、Documentation、Development、CUDAと同じ階層にあるDriver componentsだけを有効にします。

インストールに成功すると、下記の画面になります。

cuDNNのインストール

下記のページのDownload cuDNN Libraryからインストールします。インストールには、NVIDIAのDevloper IDの登録が必要です。

デベロッパーアカウントが要求されます。

ログインすると、cuDNNがダウンロードすることができます。Local Installer for Windows (Zip)をダウンロードします。CUDA ToolkitのバージョンとcuDNNのバージョン(CUDA 12.xなど)は合わせる必要があります。cuDNN v9を使用するには、ailia SDK 1.4.0以降が必要です。ailia SDK 1.3.0以前の場合はcuDNN v9には未対応ですので、cuDNN v8をダウンロードしてください。

ダウンロードしたzipを回答し、c:/nvidia/などに配置します。

環境変数を設定します。Windowsの設定、詳細情報、システムの詳細設定から、環境変数を選択します。

Pathの環境変数名の編集に、先ほどダウンロードした「C:\nvidia\cudnn-windows-x86_64–8.9.6.50_cuda12-archive\bin」を指定します。

zlibのインストール

Windows版のcuDNN 8.3以上の利用にはzlibが必要です。昔はNVIDIAのインストールガイドにダウンロードリンクの記載があったのですが、最新のドキュメントからは記載が消えています。しかし、インストールしないとcuDNNを使用することはできません。

下記のZLIBのホームページのダウンロードリンクからx64版のzlib123dllx64.zipをダウンロードします。

ダウンロードしたzipを展開したあと、zlibwapi.dllをパスの通った場所にコピーします。例えば、「C:\nvidia\cudnn-windows-x86_64–8.9.6.50_cuda12-archive\bin」などです。

インストールの確認

ailia SDKのPython APIとailia MODELSを使用している場合は、各モデルのenv_listコマンドでデバイスを列挙可能です。CUDAが表示されていれば成功です。

cd ailia-models/image_classification/resnet50
python3 resnet50.py --env_list

出力例です。

E:\git\ailia-models\image_classification\resnet50>python resnet50.py --env_list
INFO arg_utils.py (13) : Start!
INFO arg_utils.py (153) : env[0]=Environment(id=0, type='CPU', name='CPU', backend='NONE', props=[])
INFO arg_utils.py (153) : env[1]=Environment(id=1, type='BLAS', name='CPU-IntelMKL', backend='NONE', props=[])
INFO arg_utils.py (153) : env[2]=Environment(id=2, type='GPU', name='cuDNN-NVIDIA GeForce RTX 3080 (8.6, FP32)', backend='CUDA', props=[])
INFO arg_utils.py (153) : env[3]=Environment(id=3, type='GPU', name='cuDNN-NVIDIA GeForce RTX 3080 (8.6, FP16)', backend='CUDA', props=['FP16'])
INFO arg_utils.py (163) : env_id: 2
INFO arg_utils.py (166) : cuDNN-NVIDIA GeForce RTX 3080 (8.6, FP32)

ailia SDKのUnity Pluginとailia MODELS Unityを使用している場合は、GPUの名称にCUDAが表示されていれば成功です。

ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。

--

--

Kazuki Kyakuno
axinc
Editor for

CTO — ax Inc. , Managing Director — AXELL