NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8(CUDA のインストールで winget を使用),NVIDIA cuDNN v8.9.7 のインストール手順(Windows 上)
NVIDIA CUDA ツールキット は,NVIDIA社が提供する GPU 用のツールキットである.GPU を用いた演算のプログラム作成や動作のための各種機能を備えている.ディープラーニングでも利用されている. NVIDIA 社のグラフィックス・カードが持つ GPU の機能を使うとき,NVIDIA CUDA ツールキット を利用することができる.
【目次】
- Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)または Visual Studio 2022 のインストール(Windows 上)
- NVIDIA ドライバのインストール(Windows 上)
- NVIDIA CUDA ツールキット 11.8 のインストール(Windows 上)
- NVIDIA cuDNN v8.9.7 のインストール(Windows 上)
- nvcc を動かしてみる(x64 Native Tools コマンドプロンプトを利用)
【サイト内の関連ページ】
GPUとは
GPUは,グラフィックス・プロセッシング・ユニット(Graphics Processing Unit)の略です.その高い並列計算能力から,3次元コンピュータグラフィックス,3次元ゲーム,動画編集,科学計算,ディープラーニングなど,並列処理が必要な幅広い分野で活用されています.
TensorFlowとNVIDIAソフトウェアの関連
TensorFlowは,Googleが開発した機械学習フレームワークであり,ディープラーニング開発で広く使われています.Python,C/C++言語から利用可能で,CPUだけでなく,NVIDIA GPUやGoogle TPU上で計算を高速化できます.TensorFlowでGPUの計算能力を活用するには、NVIDIAが提供するドライバ、CUDAツールキット、cuDNNライブラリが必要になります.
TensorFlowの特徴として「データフローグラフ」があります.これは,「データの流れ」を表現するもので,グラフの節点は演算(オペレーション)を,エッジはデータ(テンソル)の流れを表します.TensorFlowを使用することで,音声,画像,テキスト,ビデオなど多様なデータを扱う機械学習アプリケーションの開発が容易になります.2015年11月に初版がリリースされて以来,継続的にバージョンアップが続いています.
TensorFlow GPU版などのGPU対応フレームワークを利用するための主な動作要件(2024年7月現在参考):
- NVIDIA グラフィックス・ボード: CUDAに対応したNVIDIA製GPUが必要です.
Windows で,NVIDIA グラフィックス・ボードの種類を確認するには,次のコマンドをコマンドプロンプトで実行します.
wmic path win32_VideoController get name - NVIDIA ドライバ: GPUをOSに認識させ、性能を引き出すためのソフトウェアです.
- NVIDIA CUDA ツールキット: GPU上でプログラムを開発・実行するためのプラットフォームです.コンパイラ(nvcc)、ライブラリ、APIなどが含まれます.
TensorFlow バージョン 2.10.1の動作には,CUDA 11.2が必要です(公式ドキュメントより.対応するDLL: cudart64_110.dll, cusolver64_11.dllなど)。TensorFlowのバージョンによって要求されるCUDAバージョンは異なります。 Windows環境のTensorFlow 2.10ではCUDA 11が必要であり、そして、CUDA 11.8や12.xとの公式な互換性は保証されていないようです。本記事ではCUDA 11.8のインストールを解説しますが、TensorFlow 2.10を使用する場合はCUDA 11.2のインストールを検討してください。
また,NVIDIA CUDA ツールキット のバージョンを選ぶときは,NVIDIA cuDNNに対応したバージョンを選択することも重要です. 互換性の詳細はcuDNNの公式アーカイブページなどで確認できます.
- NVIDIA cuDNN: ディープニューラルネットワークのためのGPUアクセラレーションライブラリです.畳み込み演算などを高速化します.
TensorFlow GPU版の動作のためにNVIDIA cuDNNが必要です.これもTensorFlowやCUDAのバージョンとの互換性を確認する必要があります.(例: TensorFlow 2.10はcuDNN 8.1を要求)
TensorFlowの古いバージョンを使用する場合や特定のバージョン組み合わせについては、対応バージョン情報(別ページ »)も参照してください.
Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)または Visual Studio 2022 のインストール(Windows 上)
Build Tools for Visual Studio
Build Tools for Visual Studio は,Visual Studio の IDE を含まない C/C++ コンパイラ,ライブラリ,ビルドツール等のコマンドライン向け開発ツールセットである。
Visual Studio
Visual Studio は統合開発環境であり,Build Tools for Visual Studio と連携して使用する。
Build Tools for Visual Studio 2022 のインストール(Windows 上)
以下のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
REM VC++ ランタイム
winget install --scope machine --accept-source-agreements --accept-package-agreements --silent --id Microsoft.VCRedist.2015+.x64
REM Build Tools + Desktop development with C++(VCTools)+ 追加コンポーネント(一括)
winget install --id Microsoft.VisualStudio.2022.BuildTools ^
--override "--passive --wait --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.ComponentGroup.ClangCL --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.Windows11SDK.26100"
--add で追加されるコンポーネント
上記のコマンドでは,まず Build Tools 本体と Visual C++ 再頒布可能パッケージをインストールし,次に setup.exe を用いて以下のコンポーネントを追加している。
VCTools:C++ デスクトップ開発ワークロード(--includeRecommendedにより、MSVC コンパイラ、C++ AddressSanitizer、vcpkg、CMake ツール、Windows 11 SDK 等の推奨コンポーネントが含まれる)VC.Llvm.Clang:Windows 向け C++ Clang コンパイラClangCL:clang-cl ツールセットを含むコンポーネントグループ(MSBuild から Clang を使用するために必要)VC.CMake.Project:Windows 向け C++ CMake ツールWindows11SDK.26100:Windows 11 SDK(ビルド 10.0.26100)
インストール完了の確認
winget list Microsoft.VisualStudio.2022.BuildTools
上記以外の追加のコンポーネントが必要になった場合は Visual Studio Installer で個別にインストールできる。
Visual Studio Community 2022 の追加インストール(Windows 上)
Build Tools では対応できないケースもある。
- GUI でのコード編集、デバッグ、プロファイリングを行いたい
- C++/CLI による .NET との相互運用開発を行いたい
- NuGet パッケージマネージャーを GUI で使用したい
その場合は Build Tools の環境に Visual Studio Community 2022 を追加インストールできる。
以下のコマンドの実行前に、Build Tools for Visual Studio 2022 のインストールを終えておくこと。
以下のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
winget install --scope machine --accept-source-agreements --accept-package-agreements Microsoft.VisualStudio.2022.Community --override "--quiet --add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core Microsoft.VisualStudio.Component.VC.CLI.Support Microsoft.VisualStudio.Component.CoreEditor Microsoft.VisualStudio.Component.NuGet Microsoft.VisualStudio.Component.Roslyn.Compiler Microsoft.VisualStudio.Component.TextTemplating Microsoft.VisualStudio.Component.Windows11SDK.26100 Microsoft.VisualStudio.Component.VC.Tools.x86.x64 Microsoft.VisualStudio.Component.VC.ATL Microsoft.VisualStudio.Component.VC.ATLMFC Microsoft.VisualStudio.Component.VC.Llvm.Clang Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset Microsoft.VisualStudio.Component.VC.CMake.Project Microsoft.VisualStudio.Component.VC.ASAN Microsoft.VisualStudio.Component.Vcpkg"
Visual Studio Community は無償だが、企業利用にはライセンス条件(個人開発者、オープンソース開発、学術研究、小規模組織に限定)があり、条件を満たさない場合は Professional 以上のエディションが必要となる。
NVIDIA ドライバのインストール(Windows 上)
NVIDIA ドライバ
NVIDIA ドライバは,NVIDIA製GPUを動作させるための重要なソフトウェアである.このドライバをインストールすることにより,GPUの性能を引き出すことができ,グラフィックス関連のアプリ,AI関連のアプリの高速化が期待できる.
ドライバはNVIDIA公式サイトである https://www.nvidia.co.jp/Download/index.aspx?lang=jp からダウンロードできる.このサイトからダウンロードするときには,グラフィックスカードとオペレーティングシステムを選択する. なお,NVIDIA GeForce Experience を用いてインストールすることも可能である.
【サイト内の関連ページ】
- NVIDIA グラフィックス・ボードの確認
Windows で,NVIDIA グラフィックス・ボードの種類を調べたいときは, 次のコマンドを実行することにより調べることができる.
wmic path win32_VideoController get name - NVIDIA ドライバのダウンロード
NVIDIA ドライバは,以下の NVIDIA 公式サイトからダウンロードできる.
- ダウンロードの際には,使用しているグラフィックス・ボードの型番とオペレーティングシステムを選択する.
NVIDIA CUDA ツールキット 11.8 のインストール(winget を使用)(Windows 上)
CUDA 13.1のインストール
- 前提条件(CUDA インストール前): NVIDIA GPU,NVIDIA ドライバ,および Build Tools for Visual Studio もしくは Visual Studio が必要である.
- インストール中の注意: なるべく他のウインドウはすべて閉じておくこと.
以下のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
REM CUDAをシステム領域にインストール、最新版に更新(NVIDIA GPU搭載機のみ)
winget install --scope machine --id Nvidia.CUDA -e --silent --accept-package-agreements --accept-source-agreements
winget upgrade --scope machine --id Nvidia.CUDA -e --silent --accept-package-agreements --accept-source-agreements
REM CUDA のパス設定
set "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.1"
set "CUDNN_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.1"
if exist "%CUDA_PATH%" setx CUDA_PATH "%CUDA_PATH%" /M >nul
if exist "%CUDNN_PATH%" setx CUDNN_PATH "%CUDNN_PATH%" /M >nul
for /f "skip=2 tokens=2*" %a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set "SYSTEM_PATH=%b"
if exist "%CUDA_PATH%\bin" (
echo "%SYSTEM_PATH%" | find /i "%CUDA_PATH%\bin" >nul
if errorlevel 1 setx PATH "%CUDA_PATH%\bin;%SYSTEM_PATH%" /M >nul
)
REM 環境変数TEMP, TMPの設定(一時ファイルの保存先を短いパスに変更)
mkdir C:\TEMP
set "TEMP_PATH=C:\TEMP"
setx TEMP "%TEMP_PATH%" /M >nul
setx TMP "%TEMP_PATH%" /M >nul
インストール後の環境変数の確認
CUDAツールキットのインストーラーは、通常、必要なシステム環境変数を自動で設定します。主なものを確認しましょう。
- システム環境変数 PATH
バージョン 11.8 をインストールした場合、通常、以下のパスがシステム環境変数 `PATH` に追加されます。これにより、コマンドプロンプトから `nvcc` などのコマンドを実行できるようになります。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libnvvp
* 複数のバージョンのCUDAツールキットをインストールする場合の注意点:複数のバージョンをインストールした場合、`PATH` 環境変数には各バージョンの `bin` ディレクトリが追加されることがあります。コマンドプロンプトで `nvcc` などを実行すると、`PATH` で最初に見つかったバージョンのものが使用されます。意図したバージョンが使われるように、必要に応じて環境変数の編集画面で `PATH` 内の順序を調整するか、使用するバージョンを明示的に指定する(例: フルパスで実行する、バージョン切り替えツールを使うなど)必要があります。通常、新しいバージョンのパスが既存のパスの**前**に追加されるように設定するのが一般的です。
- システム環境変数 CUDA_PATH (または CUDA_HOME)
バージョン 11.8 をインストールした場合、通常、以下のシステム環境変数が設定されます。これはCUDAツールキットのルートディレクトリを指します。
CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8(wingetでインストールした場合、上記手順で
CUDA_HOMEも設定しています。CUDA_PATHもインストーラによって自動設定されることが多いです。)
* 複数のバージョンのCUDAツールキットをインストールしている場合、通常、最後にインストール(または環境変数を設定)したバージョンを指します。 - その他 (バージョン固有の環境変数)
バージョン 11.8 の場合、以下のようなバージョン固有の環境変数も設定されることがあります。
システム環境変数 CUDA_PATH_V11_8
CUDA_PATH_V11_8=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8これは、特定のバージョンを明示的に参照したい場合に便利です。
nvcc の動作確認 (パスの確認)
CUDAコンパイラ nvcc にパスが通っている(コマンドプロンプトから直接実行できる状態になっている)ことを確認します。
新しいコマンドプロンプトを開き(環境変数の変更を反映させるため)、次のコマンドを実行します。
nvcc.exe のフルパスが表示されれば、パスが正しく設定されています。エラーメッセージが出る場合は、環境変数 PATH の設定を確認してください。
where nvcc
NVIDIA cuDNN v8.9.7 のインストール(Windows 上)
NVIDIA cuDNN (CUDA Deep Neural Network library) は、ディープラーニングの主要な計算(畳み込み、プーリング、正規化、活性化関数など)をGPUで高速化するためのライブラリです。TensorFlowやPyTorchなどのフレームワークでGPUを使用する場合に必要となります。
cuDNNはCUDAツールキットとは異なり、通常、NVIDIA Developer Programへの登録と手動でのファイル配置が必要です。
NVIDIA cuDNN のインストール(Windows 上)の概要
- NVIDIA Developer Program メンバーシップへの加入: cuDNNのダウンロードには無料のメンバーシップ登録が必要です。
NVIDIA Developer Program の公式ページ: https://developer.nvidia.com/developer-program
- 互換バージョンの選択とダウンロード: インストール済みのCUDAツールキットのバージョン (今回は11.x) に適合するcuDNNのバージョン (今回はv8.9.7) を選択し、Windows用のzipファイルをダウンロードします。
- ファイルの展開と配置: ダウンロードしたzipファイルを展開(解凍)し、中のファイル(
bin,include,libフォルダ内)を、CUDAツールキットのインストールディレクトリにコピーします。 - (オプション) 環境変数の設定: 必要に応じてシステム環境変数
CUDNN_PATHを設定します。 - (必要に応じて) ZLIB DLL のインストール:
zlibwapi.dllが見つからないエラーが発生する場合にインストールします。 - 動作確認: cuDNNライブラリ (
cudnn64_*.dll) にパスが通っているか確認します。
zlib のインストール(Windows 上)
- 次のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー →
cmdと入力 → 右クリック → 「管理者として実行」)。
次のコマンドは,zlibをインストールし,パスを通すものである.
cd /d c:%HOMEPATH%
rmdir /s /q zlib
git clone https://github.com/madler/zlib
cd zlib
del CMakeCache.txt
rmdir /s /q CMakeFiles
cmake . -G "Visual Studio 17 2022" -A x64 -T host=x64 -DCMAKE_INSTALL_PREFIX=c:/zlib
cmake --build . --config Release --target INSTALL
powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\zlib\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
powershell -command "[System.Environment]::SetEnvironmentVariable(\"ZLIB_HOME\", \"C:\zlib\", \"Machine\")"
【関連する外部ページ】
- zlib の公式ページ: https://www.zlib.net/
【関連項目】 zlib
NVIDIA cuDNN 8.9.7 のインストール手順(Windows上)
- NVIDIA cuDNN のウェブページを開きます。
- ダウンロードセクションに進みます。(「Download cuDNN」ボタンなどをクリック)
- NVIDIA Developer Program へのログイン/登録が求められます。アカウントがない場合は無料で作成します。(「Join now」または「Login」)
利用者本人が,電子メールアドレス,表示名,パスワード,生年月日などを登録し,利用条件等に合意します.
- ログイン後、ダウンロードページが表示されます。最新版ではなく特定のバージョンが必要なため、「Archive of Previous cuDNN Releases」やそれに類するリンクをクリックします。
- アーカイブページで、目的のメジャーバージョン(例: cuDNN 8.x)を選択します。
- ダウンロードしたいバージョン(今回は cuDNN v8.9.7)を探し、インストール済みのCUDAバージョン (今回は CUDA 11.x) に対応するものを選びます。
「cuDNN Library for Windows (x86_64)」のような、Windows向けのリンクをクリックします。
- ライセンス条項を確認・同意し、ダウンロードを開始します。(.zip ファイルがダウンロードされます)
- ダウンロードした .zip ファイルを、7-Zipなどのツールを使って展開(解凍)します。
展開すると、通常
bin,include,libというサブフォルダが含まれています。
- CUDAツールキットがインストールされているディレクトリを開きます。デフォルトでは通常「
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8」です。
- (重要) ファイルのコピー: 先ほど展開してできたcuDNNのフォルダ(
bin,include,lib)の中身を、それぞれ対応するCUDAツールキットのインストールディレクトリ内のフォルダ(bin,include,lib)にコピー(マージ)します。- 展開したcuDNNの
binフォルダ内のファイル (例:cudnn*.dll) を CUDA のbinフォルダ (C:\...\v11.8\bin) へコピーします。 - 展開したcuDNNの
includeフォルダ内のファイル (例:cudnn*.h) を CUDA のincludeフォルダ (C:\...\v11.8\include) へコピーします。 - 展開したcuDNNの
lib\x64フォルダ内のファイル (例:cudnn*.lib) を CUDA のlib\x64フォルダ (C:\...\v11.8\lib\x64) へコピーします。
- 展開したcuDNNの
- パスが通っていることを確認します。
cuDNNのDLLファイル(例:
cudnn64_8.dll- バージョンによって数字は変わります)が、CUDAツールキットのbinディレクトリ(システム環境変数PATHに含まれているはず)に正しくコピーされたか確認します。新しいコマンドプロンプトを開き,次のコマンドを実行します。DLLファイルのフルパスが表示されればOKです。エラーメッセージが出ないことを確認してください.
where cudnn64_8.dll(注:
cudnn64_8.dllはcuDNN 8.x系のファイル名です。バージョンによってファイル名が異なる場合があります。where cudnn*.dllなどで確認してください。)
- (オプション) システム環境変数 CUDNN_PATH の設定
一部のフレームワークやライブラリは、cuDNNの場所を特定するために
CUDNN_PATH環境変数を参照することがあります。設定しておくと互換性が向上する場合があるため、設定を推奨します。Windows では,コマンドプロンプトを管理者として開き,次のコマンドを実行して、システム環境変数
CUDNN_PATHをCUDAツールキットのインストールディレクトリに設定します。コマンドプロンプトを管理者として実行する方法は、別ページで説明しています.powershell -command "[System.Environment]::SetEnvironmentVariable(\"CUDNN_PATH\", \"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\", \"Machine\")"
x64 Native Tools コマンドプロンプトを利用
- 以下の操作をx64 Native Tools コマンドプロンプト (x64 Native Tools Command Prompt)で実行する
(手順:スタートメニュー →
」の下の「x64 Native Tools コマンドプロンプト (x64 Native Tools Command Prompt)」を選ぶ)。 - C++コンパイラ(
cl.exe)へのパスが通っているか確認します。コマンドプロンプトで「
where cl」を実行し、cl.exeのパスが表示されることを確認します。エラーメッセージが出る場合は、Visual Studio または Build Tools のインストールに問題がある可能性があります。where cl
- nvccの動作確認用のサンプルコードを作成します。
ここでは、NVIDIAのブログ記事 Easy Introduction to CUDA C and C++ に記載されている簡単なベクトル加算のコードを使用します。このコードは、CPUとGPUそれぞれでベクトル加算を行い、結果が一致するかを確認するものです。
まず、作業ディレクトリに移動し、エディタ(ここではメモ帳
notepad)でソースファイルhello.cuを作成します。cd /d c:%HOMEPATH% notepad hello.cu
メモ帳が開いたら、上記リンク先のブログ記事にある最初のサンプルコード(`// Simple vector addition Cuda C++` から始まるコード)をコピー&ペーストし、ファイルを保存します。
ファイル hello.cu が作成されます。
- コードのビルドと実行
nvcc hello.cuコマンドでソースコードをコンパイルします。成功すると、デフォルトでa.exeという実行ファイルが生成されます。 次に.\a.exeを実行します。プログラムが正常に動作すれば、「Max error: 0.000000」のように表示されます。これが表示されれば、CUDAツールキットの基本的なコンパイルと実行が成功しています。del a.exe nvcc hello.cu
.\a.exe
【うまく動かない場合のトラブルシューティング】- 「Max error: 2.000000」のように 0 以外の値が表示される場合:
これは、GPUでの計算結果が期待値と異なっていることを示します。GPUハードウェアの問題、ドライバの不具合、CUDAやcuDNNのインストールが不完全またはバージョン互換性の問題などが考えられます。まずはインストール手順に誤りがなかったか再確認してください。ドライバやツールキットを再インストールしてみるのも有効な場合があります。また、NVIDIAの公式フォーラムなどで同様の問題が報告されていないか確認することも推奨します。
- 「Max error: ...」という表示自体が出ない場合、またはコンパイル時にエラーが出る場合:
- 日本語ユーザ名とTEMP変数: (再掲)Windows のユーザ名が日本語を含む場合、「nvcc hello.cu」を実行してもエラーメッセージなしにコンパイルが失敗することがあります。
この場合は、CUDAインストールセクションで説明した手順に従い、ユーザ環境変数
TEMPおよびTMPに日本語を含まないパス(例:C:\TEMP)が設定されているか再確認してください。設定を変更した後は、新しいコマンドプロンプトを開いて再度試してください。rem (再掲) TEMP/TMP 変数設定確認・設定コマンド例 mkdir C:\TEMP powershell -command "[System.Environment]::SetEnvironmentVariable(\"TEMP\", \"C:\TEMP\", \"User\")" powershell -command "[System.Environment]::SetEnvironmentVariable(\"TMP\", \"C:\TEMP\", \"User\")"設定後、新しいx64 Native Tools コマンドプロンプトを開き,再度
nvcc hello.cuと.\a.exeを実行して確認します。nvcc hello.cu .\a.exe
- Visual Studio / Build Tools の問題: C++コンパイラ(
cl.exe)が見つからない、またはリンカエラーなどが発生する場合は、Visual Studio または Build Tools のインストールが正しく完了しているか確認してください。C++ ビルドツールの動作確認(別ページ)の手順も参考にしてください。 - その他の問題: 環境変数
PATHの設定ミス、CUDAツールキットのインストール不備などが考えられます。エラーメッセージをよく読み、関連情報を検索するか、NVIDIAのドキュメントやフォーラムを参照してください。
- 日本語ユーザ名とTEMP変数: (再掲)Windows のユーザ名が日本語を含む場合、「nvcc hello.cu」を実行してもエラーメッセージなしにコンパイルが失敗することがあります。
- C++コンパイラ(