NVIDIA CUDA WSL2
WSL2 讓 Windows 直接跑 Linux 原生的 CUDA 工具鏈,兼得 Windows 桌面與 Linux 開發環境。關鍵差異在於:驅動只裝在 Windows 端,WSL 內部只裝 toolkit、不裝也不該裝 Linux 原生 driver 套件。這篇涵蓋兩種安裝路徑:有 sudo 權限的系統層級 apt,與完全免 root 的使用者層級 runfile。
若你要的是原生 Windows(非 WSL)的 CUDA 與 cuDNN 配置,改看 Windows CUDA & cuDNN 開發環境建置指南。
1. 前置條件確認
Windows 主機端先裝好支援 WSL 的 NVIDIA 驅動(Game Ready 或 Studio 皆可,新版皆內建 WSL CUDA 支援)。驅動只裝在 Windows 端。1
更新 WSL 本體與 kernel
在 Windows PowerShell 確認並更新 WSL 版本:
2
在 WSL 內確認能看到 GPU
此步驟不需要任何 CUDA toolkit,只驗證驅動映射:
若這步就抓不到卡,先回頭處理 Windows 端驅動與 WSL kernel 版本,不要往下裝 toolkit。
2. 系統層級安裝(apt,需 sudo)
由具備 sudo 權限的帳號執行一次即可,所有使用者共用同一份 toolkit。1
安裝 WSL 專用 keyring 並裝 toolkit
/usr/local/cuda-13.3,預設權限 755,所有使用者皆可讀取執行。2
設定全域環境變數(僅 sudo 使用者可執行)
3
多版本共存切換
裝了多個版本時,用 update-alternatives 切換
/usr/local/cuda symlink 指向:3. 使用者層級安裝(runfile,免 sudo)
無 sudo 權限的帳號用 runfile 裝到自訂目錄,全程不需要 root。1
下載並執行 runfile
2
設定個人環境變數
4. 兩種安裝方式對照
點任一格看補充說明。有 sudo 且多人共用同一穩定版本走 apt;權限受限或多專案各自鎖版本走 runfile。5. 使用者切換方式
WSL 的身分切換分「單次」「永久預設」「WSL 內臨時」三種。- 單次切換(不改預設)
- 永久改預設登入使用者
- WSL 內臨時切換
6. nvidia-smi 找不到的排查
WSL 環境下 nvidia-smi 由 Windows 驅動掛載至/usr/lib/wsl/lib/nvidia-smi,與 Linux 原生的 nvidia-utils 套件無關。
1
確認掛載檔案是否存在
2
若存在,補進 PATH
無 sudo 權限則寫入 若目錄為空,回頭檢查 Windows 端驅動與 WSL kernel 版本。
~/.bashrc:7. sudo 相關注意事項
insults 彩蛋不是故障若 sudo 密碼輸錯或帳號無權限時,出現類似
I'm sorry <user>. I'm afraid I can't do that 的訊息,這是 sudoers 設了 Defaults insults 的幽默拒絕訊息(致敬 HAL 9000),屬正常行為,非系統故障。8. 常見錯誤對照表
驗證
裝完後跑一遍驗證流程,確認四層都通:驅動映射(nvidia-smi)、編譯器(nvcc)、框架層(PyTorch)、以及libcuda.so 未被 toolkit 覆蓋。點播放逐行看:
nvidia-smi 顯示的 CUDA Version 是驅動支援的最高 CUDA 版本(例如 13.3),不代表你裝的 toolkit 版本;toolkit 版本以 nvcc --version 為準。CUDA 具向下相容性,驅動比 toolkit 新沒問題,反過來不行。