Gestione di Multiple Versioni di CUDA su una Singola Macchina Una Guida Completa

Gestione di Diverse Versioni di CUDA su una Singola Macchina Una Guida Completa

Come gestire differenti versioni di CUDA nel tuo ambiente di sviluppo

Foto di Nikola Majksner su Unsplash

In uno dei miei ruoli precedenti come consulente AI, mi è stato chiesto di utilizzare ambienti virtuali come strumento per gestire e isolare gli ambienti Python. Dato che il progetto si basava sull’accelerazione GPU, mi sono trovato in una situazione in cui la versione di CUDA installata differiva dalla versione richiesta per il progetto. Per affrontare questo problema, ho dovuto installare la versione di CUDA necessaria e configurare il mio ambiente per utilizzarla senza influire sulla configurazione CUDA del sistema. Per quanto ne so, mancano tutorial completi e esaustivi che affrontino questa specifica esigenza. Pertanto, questo tutorial rappresenta una risorsa preziosa per coloro che desiderano capire come gestire in modo sicuro più versioni di CUDA Toolkit nei loro progetti.

Indice:

· 1. Introduzione· 2. Versioni di CUDA disponibili· 3. Scarica ed estrai i binari· 4. Installa il toolkit CUDA· 5. Configurazione del progetto· 6. Conclusioni

1. Introduzione

Installare più versioni di CUDA Toolkit sul tuo sistema può causare diversi effetti e conseguenze, alcune delle quali possono influire sul sistema:

  • Potrebbe portare a conflitti nel PATH del sistema e nelle variabili di ambiente. Se non gestiti correttamente, questi conflitti possono influire sulla versione di CUDA utilizzata per impostazione predefinita.
  • Potrebbe richiedere specifiche versioni di driver GPU per prestazioni e compatibilità ottimali. L’installazione di una nuova versione potrebbe richiedere l’aggiornamento del driver GPU.
  • Alcune librerie e software potrebbero dipendere da una specifica versione di CUDA. L’installazione di una nuova versione potrebbe interrompere la compatibilità con queste dipendenze.
  • Le applicazioni che dipendono da CUDA potrebbero avere bisogno di regolazioni per funzionare con la nuova versione. Incompatibilità possono causare errori o comportamenti inattesi.
  • La gestione errata di più versioni di CUDA può portare a instabilità del sistema o errori nelle applicazioni accelerate GPU.

Pertanto, per gestire in modo sicuro più versioni di CUDA Toolkit per il tuo progetto, segui questi passaggi:

  1. Verifica la versione corrente di CUDA del sistema.
  2. Scarica ed estrai i binari della versione desiderata.
  3. Esegui l’installer per installare solo il toolkit.

In questo tutorial, fornirò un esempio dettagliato e passo-passo di come fare questo. Inoltre, ti guiderò nella configurazione del tuo ambiente virtuale dopo l’installazione dei binari.

2. Versioni di CUDA disponibili

Vediamo quale versione di CUDA viene attualmente utilizzata dal sistema eseguendo il comando nvidia-smi:

Come puoi vedere, la versione di CUDA è 12.1.

Ora mostriamo le versioni di CUDA disponibili nel mio computer:

$ ls /usr/local/ | grep cudacudacuda-11.7cuda-12cuda-12.1

Ho tre diverse versioni disponibili nel mio computer.

3. Scarica ed estrai i binari

Supponiamo che il progetto su cui lavorerò richieda la versione 11.8 di CUDA Toolkit. Per ottenerla, iniziamo visitando il sito web dell’archivio NVIDIA CUDA Toolkit: qui . Cerchiamo la versione specifica di CUDA Toolkit richiesta dal nostro progetto. È importante assicurarsi di selezionare la versione compatibile con il nostro sistema operativo. Nel mio caso, ho scelto la piattaforma di destinazione:

La mia piattaforma di destinazione: Linux - x86_64 - Ubuntu - 22.04

Scegli la versione ‘runfile (locale)’ del CUDA Toolkit che corrisponde al tuo sistema operativo. Questo particolare file di solito ha l’estensione .run. Quando selezioni runfile (locale), il sito web fornisce le istruzioni per l’installazione. Nel mio caso, le istruzioni fornite sono le seguenti:

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.runsudo sh cuda_11.8.0_520.61.05_linux.run

Tuttavia, è essenziale tenere presente che il nostro obiettivo non è installare questa versione, in quanto è già presente una versione più recente. Pertanto, dobbiamo solo seguire la prima istruzione per scaricare il file:

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

Il download può essere verificato confrontando il checksum MD5 pubblicato a questo link con quello del file scaricato.

“Un installatore locale è autonomo. È un grande file che deve essere scaricato da internet una sola volta e può essere installato su più sistemi. Gli installatori locali sono il tipo di installatore consigliato con connessioni internet a banda ridotta o quando non è possibile utilizzare un installatore di rete (ad esempio per restrizioni del firewall).” [1]

In questa fase, apri un terminale, vai alla directory in cui hai trasferito il file di installazione CUDA e rendi eseguibile il file di installazione CUDA:

chmod +x cuda_11.8.0_520.61.05_linux.run

4. Installa il toolkit CUDA

Ora, eseguiamo il file di installazione CUDA con le opzioni --silent e --toolkit per eseguire un’installazione silenziosa del toolkit CUDA:

sudo ./cuda_11.8.0_520.61.05_linux.run --silent --toolkit

Dove:

  • --silent : esegue un’installazione senza ulteriori input dell’utente e con una minima visualizzazione della riga di comando.
  • --toolkit : installa solo il toolkit CUDA e mantiene i tuoi driver attuali.

Se ti viene chiesto di accettare l’accordo, accettalo per procedere con l’installazione.

Alla fine, i file binari del toolkit CUDA vengono estratti. Possiamo assicurarci di ciò eseguendo nuovamente il seguente comando:

$ ls /usr/local/ | grep cudacudacuda-11.7cuda-11.8cuda-12cuda-12.1

Come puoi vedere, cuda-11.8 è ora disponibile nel mio computer e la versione corrente del sistema rimane la stessa (puoi confermarlo eseguendo nvidia-smi).

Questi passaggi ti consentono di installare le versioni binarie di CUDA. Nella prossima sezione, ti mostrerò come configurare il tuo progetto per utilizzare la versione CUDA richiesta.

5. Configurazione del progetto

Quando si lavora su diversi progetti, è consigliabile utilizzare ambienti virtuali. Iniziamo creando un ambiente virtuale. Nel mio caso, è richiesto python3.8. Per creare un ambiente virtuale possiamo utilizzare il seguente comando. Ho creato un ambiente chiamato my_venv in venv, una cartella in cui ho inserito gli ambienti virtuali:

python3.8 -m venv venv/my_envsource venv/my_env/bin/activate

Vediamo quale versione di CUDA viene attualmente utilizzata:

$ nvcc --versionnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2021 NVIDIA CorporationBuilt on Thu_Nov_18_09:45:30_PST_2021Cuda compilation tools, release 11.5, V11.5.119Build cuda_11.5.r11.5/compiler.30672275_0

Come puoi vedere, l’ambiente creato non sta utilizzando la versione CUDA richiesta, quindi dobbiamo impostarla manualmente aggiornando il file activate e aggiungendo le seguenti righe:

export PATH=/usr/local/cuda-11.8/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

Puoi aggiornare il file activate utilizzando il tuo editor preferito, oppure puoi semplicemente eseguire il seguente comando per aggiungere testo alla fine del file:

echo "export PATH=/usr/local/cuda-11.8/bin:$PATH" >> venv/my_env/bin/activateecho "export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH" >> venv/my_env/bin/activate

Infine, è necessario riattivare l’ambiente e eseguire nuovamente il comando nvcc:

$ source venv/nerfstudio/bin/activate$ nvcc --versionnvcc: compilatore driver NVIDIA (R) CudaCopyright (c) 2005-2022 NVIDIA CorporationCostruito il Wed_Sep_21_10:33:58_PDT_2022Strumenti di compilazione Cuda, versione 11.8, V11.8.89Compilazione cuda_11.8.r11.8/compiler.31833905_0

Ecco fatto! Ora il progetto è configurato per eseguire la versione CUDA richiesta senza conflitti!

6. Conclusioni

Seguendo i passaggi illustrati in questo tutorial, puoi mantenere con successo più versioni di CUDA sul tuo sistema senza incontrare conflitti tra le installazioni. Questa flessibilità consente a ogni progetto di utilizzare l’esatta versione CUDA di cui ha bisogno, ottenuta attraverso la configurazione delle variabili d’ambiente personalizzate in base alle tue esigenze specifiche.

Grazie per la lettura. Spero che tu abbia apprezzato questo tutorial. Se apprezzi i miei tutorial, ti prego di supportarmi seguendomi e iscrivendoti. In questo modo riceverai notifiche sui miei nuovi articoli. Se hai domande o suggerimenti, non esitare a lasciare un commento qui sotto.

Riferimenti

[1] https://developer.nvidia.com/cuda-12-2-2-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local

Crediti immagini

Tutte le immagini e le figure in questo articolo la cui fonte non è menzionata nella didascalia sono dell’autore.