CUDA® in WSL
L'uso della contenitorizzazione delle applicazioni è diventato un approccio preferito per la gestione dei carichi di lavoro. Sebbene le applicazioni tipiche siano semplici da impacchettare e gestire, le applicazioni che utilizzano le GPU richiedono una considerazione speciale a causa del livello di astrazione aggiuntivo: WSL (Windows Subsystem for Linux). Microsoft ha progettato su misura questo kernel Linux per integrarsi strettamente con il server Windows, garantendo un funzionamento senza soluzione di continuità delle applicazioni su entrambi i sistemi.
Una domanda comune riguarda la sequenza corretta per l'installazione dei driver e delle librerie necessarie che abilitano le funzionalità di calcolo GPU. Per risparmiare tempo e facilitare questo processo, abbiamo preparato questa guida passo passo.
La sequenza appropriata è quella di installare WSL e Linux all'interno del WSL. Successivamente, installare i driver GPU per Windows Server e il toolkit NVIDIA® CUDA® in Linux. Se lo si desidera, Docker Desktop può essere successivamente aggiunto per eseguire eventuali contenitori abilitati per la GPU.
Prima di procedere, assicurarsi che tutti gli aggiornamenti necessari siano installati sul sistema.
Installa WSL e Ubuntu
Per iniziare, seleziona Start > PowerShell ed eseguilo con privilegi amministrativi. Il seguente comando abilita WSL:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Una Volta™ terminato il processo di installazione, dovresti riavviare il sistema operativo come al solito e riaprire PowerShell. Aggiorniamo il kernel di WSL:
wsl --update
Ed installare la distribuzione Linux necessaria, ad esempio Ubuntu 22.04 LTS:
wsl --install -d Ubuntu-22.04
La nuova applicazione Ubuntu 22.04 sarà visibile nel menu Start. Cliccandoci sopra, il sistema fornirà una finestra del terminale che esegue un'istanza di Linux Ubuntu. È necessario aggiornare la cache e aggiornare tutti i pacchetti disponibili alle versioni più recenti:
sudo apt update && sudo apt -y upgrade
Il passaggio successivo è l'installazione del gestore di pacchetti di Python e del toolkit NVIDIA® CUDA®. È importante ricordare che non c'è bisogno di installare i driver GPU in questo kernel Linux:
sudo apt -y install python3-pip nvidia-cuda-toolkit
Per garantire il corretto funzionamento di tutti gli script inclusi nel toolkit NVIDIA® CUDA®, è necessario predefinire il loro percorso nella variabile $PATH. È possibile farlo aprendo il seguente file:
nano ~/.bashrc
E aggiungi la seguente stringa alla fine:
export PATH=/home/usergpu/.local/bin${PATH:+:${PATH}}
Salva il file ed esci dal terminale Ubuntu.
Installa i driver NVIDIA®
Segui le nostre istruzioni in questo articolo: Installa i driver NVIDIA® in Windows. L'esito apparirà come segue:

Installa PyTorch
Apri il terminale di Ubuntu 22.04 e digita il seguente comando per installare PyTorch con supporto CUDA:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
Test in Python
Entra nella console interattiva di Python:
python3
Python 3.10.12 (main, 20 Nov 2023, 15:14:05) [GCC 11.4.0] su linux Digita "help", "copyright", "credits" o "license" per maggiori informazioni.
E digita questi comandi sequenzialmente:
import torch
torch.cuda.device_count()
5
torch.cuda.is_available()
True
Il primo comando importerà il framework PyTorch. Il secondo comando mostrerà il numero di dispositivi compatibili con CUDA® in un sistema. Il terzo comando indica la disponibilità di utilizzo di CUDA®.
Test in Docker
Inizia installando Docker Desktop. L'installer può essere trovato qui. Riavvia il server ed esegui Docker Desktop. Questa azione avvia il motore Docker. Quindi apri la console Ubuntu 22.04 dal menu Start e digita il seguente comando:
docker run --rm -it --gpus=all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark -numdevices=5
dove -numdevices è il numero di GPU installate. Per questo esempio eseguiamo un test su un server dedicato con 5 GPU.
Se si ottiene un errore “Error: only 0 devices available, 5 requested. Exiting.” mantieni la calma. Questo è un bug di NVIDIA® e puoi facilmente correggerlo riabilitando ogni GPU in Device Manager. Fare clic con il tasto destro su un menu Start e selezionare Gestione dispositivi. Espandi l'elenco degli adattatori video, seleziona ogni GPU e disabilita dal menu Azione. Dopodiché, Abilita ogni GPU nello stesso modo. Ora questo comando funzionerà perfettamente:

Conclusione
Questo metodo consente di avviare quasi qualsiasi applicazione, anche se potrebbero esserci alcune limitazioni basate sulle specifiche del sistema. Nonostante queste limitazioni, il deployment è tipicamente senza soluzione di continuità e si possono godere tutti i vantaggi che Linux offre, ma all'interno di un ambiente di Windows Server.
Vedi anche:
Aggiornato: 28.03.2025
Pubblicato: 28.06.2024