跳到內容

Windows CUDA & cuDNN 開發環境建置指南

NVIDIA CUDA

CUDA (Compute Unified Device Architecture) 是 NVIDIA 顯卡的靈魂,它讓 GPU 不只是打遊戲的顯卡,而是能進行平行運算的超級計算機。 搭配 cuDNN (Deep Neural Network Library),我們才能在 PyTorch 或 TensorFlow 中使用 GPU 加速模型訓練。

這篇指南在 Windows 環境下正確安裝與配置這些核心組件。了解其中配置後,也可於 Linux 環境下進行類似配置。

在安裝 CUDA 之前,擁有一個健康的驅動程式版本是必須的。

  1. 檢查系統資訊

    右鍵點擊桌面空白處,進入 NVIDIA Control Panel (控制面板),點擊左下角的「系統資訊」。

    NVIDIA 控制面板系統資訊

  2. 確認當前版本

    在系統資訊中,你可以看到目前的驅動程式版本與支援的最高 CUDA 版本。

    驅動程式版本資訊

  3. 下載最新驅動

    前往 NVIDIA 驅動程式下載頁面

    更新驅動程式

  4. 安裝與重啟

    下載後執行安裝程式,安裝過程中螢幕閃爍黑屏是正常現象。安裝完成後,請務必重新啟動電腦以套用變更。

    驅動程式安裝畫面

  5. 驗證驅動程式

    重新啟動電腦後,驗證驅動程式版本是否正確。

    驅動程式驗證畫面

CUDA Toolkit 包含了編譯器、開發工具與 runtime libraries。

若要查看官方版本的安裝流程,請參閱 CUDA Installation Guide for Microsoft Windows

  1. 確認版本需求

    並非越新越好!請先確認你的深度學習框架(PyTorch/TensorFlow)支援的版本。

    本範例使用 CUDA 12.8.1 作為示範。

    請注意,需確認 Pytorch 支援的版本。

    CUDA Toolkit 下載選項列表

  2. 選擇安裝包類型

    在下載頁面,你會看到兩種安裝類型:

    類型Network (exe)Local (exe)
    檔案大小小 (~13.7 MB)大 (~3.3 GB)
    安裝方式安裝時需連網下載離線安裝 (包含所有元件)
    建議網速快可選此項推薦 (避免安裝中斷)

    CUDA Toolkit 下載選項

  3. 執行安裝

    執行下載的 .exe 檔。對於大多數使用者,選擇 “Express (快速)” 安裝即可。

    若你是進階使用者,需要多版本共存,可選擇 “Custom (自訂)” 並取消勾選 Driver (因為第一步已經裝了最新的)。

    CUDA 安裝選項

  4. 驗證環境變數

    安裝程式通常會自動加入環境變數。檢查 CUDA_PATH 是否存在:

    1. 搜尋 “編輯系統環境變數”
    2. 點擊 “環境變數”
    3. 在系統變數中尋找 CUDA_PATH

    環境變數檢查

    若未出現請查找是否有該資料夾,並將以下路徑添加:

    變數名稱路徑
    CUDA_PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8
    CUDA_PATH_V12_8C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8

    打開終端機 (PowerShell / CMD) 輸入驗證指令:

    Terminal window
    nvcc -V

    若看到類似 Cuda compilation tools, release 12.x, V12.x.x 的輸出,即代表安裝成功。

    驗證輸出

cuDNN 是加速神經網路運算的關鍵函式庫,它不是執行檔,而是一包需要手動放置的二進位檔案。

  1. 下載 cuDNN

    前往 cuDNN Archive (需登入 NVIDIA 開發者帳號)。 請下載與你的 CUDA 版本 (12.x for CUDA 12.x) 對應的 Zip 檔案

    而下載的 cuDNN 版本(cuDNN v8.x.x)是 NVIDIA 對函式庫更新的版本。

    cuDNN Archive 頁面 cuDNN 下載頁面

  2. 解壓縮與檔案搬移

    解壓縮下載的 zip 檔,你會看到 bin, include, lib 等資料夾。我們需要將這些檔案複製到 CUDA 的安裝目錄中。

    預設 CUDA 路徑:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x

    請依序進行以下複製操作 (系統可能會要求管理員權限):

    • 資料夾解壓縮資料夾/
      • 資料夾bin/
        • cudnn.dll * ➡️ 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin 複製
      • 資料夾include/
        • cudnn.h * ➡️ 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\include 複製
      • 資料夾lib/
        • 資料夾x64/
          • cudnn.lib * ➡️ 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\lib\x64 複製
    • bin\cudnn*.dll 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin
    • include\cudnn*.h 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\include
    • lib\x64\cudnn*.lib 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\lib\x64
  3. 檢查 cuDNN 環境變數

    確保 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin 已加入系統環境變數 Path

    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\lib\x64 不需要加入系統環境變數 Path 中(由編譯器配置處理)。

    路徑用途是否加入 PATH
    ...\CUDA\v12.x\bin運行時載入 .dll 檔案
    ...\CUDA\v12.x\lib\x64編譯時連結 .lib 檔案(由編譯器配置處理)
    • 確保運行時能找到 .dll 檔案(需將 bin 加入 PATH)。
    • 確保編譯時能找到 .lib 檔案(由編譯器配置處理)。
    • 若需要指定 lib\x64 路徑,可在編譯器設定中配置(例如 Visual Studio 的庫路徑)。

環境裝好了,真的能跑嗎?讓我們用 Python 實測一下。

在終端機輸入 nvidia-smi 看出驅動對應的「最高 CUDA 版本」(例如顯示 CUDA Version: 12.3)。

建議使用 Conda 隔離環境,避免與系統 Python 衝突。

Terminal window
# 建立 Python 3.11 環境
conda create -n test_gpu python=3.11 -y
# 啟動環境
conda activate test_gpu
# 安裝 PyTorch (請依官網指令調整版本)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128

建立一個 gpu_test.py 檔案與執行:

gpu_test.py
import torch
import torch.nn as nn
print("="*40)
print(f"PyTorch Version: {torch.__version__}")
print(f"CUDA Available: {torch.cuda.is_available()}")
if torch.cuda.is_available():
device = torch.device("cuda")
print(f"Device Name: {torch.cuda.get_device_name(device)}")
print(f"CUDA Version: {torch.version.cuda}")
# 簡單的卷積運算測試 cuDNN
try:
model = nn.Conv2d(1, 1, 3).to(device)
data = torch.randn(1, 1, 64, 64).to(device)
out = model(data)
print("✓ cuDNN Test Passed! Convolution executed successfully.")
except Exception as e:
print(f"✗ cuDNN Error: {e}")
else:
print("✗ CUDA not detected.")
print("="*40)

執行結果若出現 ✓ cuDNN Test Passed!,恭喜你!你的 GPU 運算環境已經準備就緒。

A: 請確認 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin 已經加入到系統環境變數的 Path 中。

Q: PyTorch 報錯 AssertionError: Torch not compiled with CUDA enabled

Section titled “Q: PyTorch 報錯 AssertionError: Torch not compiled with CUDA enabled”

A: 你可能安裝到了 CPU 版本的 PyTorch。請使用 pip uninstall torch 移除後,務必加上 --index-url 指定 CUDA 版本的 whl 來源重新安裝。

Q: 驅動太新會影響舊版 CUDA 嗎?

Section titled “Q: 驅動太新會影響舊版 CUDA 嗎?”

A: 通常不會。NVIDIA 驅動有向下相容性 (Backward Compatibility)。新的驅動 (如 550.xx) 可以執行舊的 CUDA Toolkit (如 11.8) 編譯的程式。但反過來(舊驅動跑新 CUDA)是不行的。詳細的相容性規則(如 Minor Version Compatibility、Forward Compatibility)請參閱 CUDA 版本相容性


最後更新於:2025-03-18