Come posso ottenere nVidia CUDA o OpenCL su un laptop con scheda nVidia discreta / Intel Integrated Graphics?

25

Background: sono un artista 3D (come hobby) e ho recentemente iniziato ad usare Ubuntu 12.04 LTS come dual-boot con Windows 7. Funziona con un nuovo laptop Toshiba a 64 bit con una NVIDIA GeForce GT GPU 540M (scheda grafica). Tuttavia, ha anche Intel Integrated Graphics (che sospetto che Ubuntu abbia usato).

Quindi, quando eseguo il rendering delle mie scene 3D su immagini su Windows, sono in grado di scegliere se utilizzare la mia CPU o la mia GPU nVidia (più veloce). Dall'applicazione 3D, posso impostare la GPU in modo che utilizzi CUDA o OpenCL. In Ubuntu, non c'è l'opzione GPU.

Dopo aver fatto (troppo?) ricerche sui problemi con Linux e con la tecnologia nVidia Optimus, sono leggermente più illuminato, ma molto più confuso.

Non mi interessa un po 'della tecnologia Optimus, in quanto la durata della batteria non è affatto un problema per me.

Ecco la mia domanda: cosa posso fare per essere in grado di utilizzare programmi CUDA (come Blender) sulla mia GPU nVidia in Ubuntu? Avrò bisogno di driver nVidia? (Ho sentito che non funzionano bene con i setup di Optimus su Linux.) C'è almeno un modo per usare OpenCL sulla mia GPU in Ubuntu?

    
posta Peter Cassetta 04.05.2012 - 17:22
fonte

4 risposte

13

Ecco la risposta completa (basata su Alex Falappa e Lekensteyn's risposte):

È infatti possibile ottenere le GPU di nVidia Optimus per eseguire CUDA su Ubuntu.

Bumblebee non è necessario per CUDA. (altro su Bumblebee : È un NVIDIA GeForce con Optimus Technology supportata da Ubuntu? )

Tuttavia, quando devi mostrare esempi grafici usando OpenGL, fai hai bisogno di qualcosa come Bumblebee per i sistemi Optimus, altrimenti non vedi nulla sul display o ottieni l'errore:

ERROR: Support for necessary OpenGL extensions missing. 

Se hai bisogno di utilizzare un programma ad alta intensità grafica come Blender, Bumblebee è attualmente un buon modo per andare.

Passa a Installazione di CUDA se non desideri installare Bumblebee (ad esempio se non hai bisogno di OpenGL).
Altrimenti, continua a leggere.

Installazione di Bumblebee

Segui le istruzioni su Quanto funzionano i laptop con Nvidia Optimus?

Questi sono attualmente aggiornati da uno sviluppatore di Bumblebee.

Dopo aver installato Bumblebee e riavviato, sarai in grado di scegliere la scheda grafica da utilizzare quando avvii i programmi utilizzando il programma optirun .
Ad esempio:

optirun blender

Per testare rapidamente se tutto funziona correttamente, utilizzare:

optirun glxspheres

Vedrai un programma con sfere colorate rotanti se tutto funziona correttamente.

Verificare che la stringa del fornitore GL nel terminale contenga la parola nvidia .
Se esegui solo glxspheres , vedrai invece la stringa del fornitore che contiene la scheda Intel.

Quando si esegue un programma CUDA, è necessario installare il toolkit CUDA e un driver nvidia. Se si intende compilare programmi, è necessario anche l'SDK. Gli installer possono essere trovati su link , leggi le istruzioni di seguito prima di collegare il tuo laptop Optimus.

Installazione di CUDA

Driver

Raccomando di installare il driver nvidia dal gestore di pacchetti di Ubuntu. Se installi Bumblebee, non devi preoccuparti del driver. Altrimenti, dopo l'installazione, disabilita le librerie nvidia come descritto nel link . Se non lo fai, perderai l'accelerazione 3D e probabilmente rimarrai bloccato a bassa risoluzione.

Toolkit

Fondamentalmente devi scaricare il programma di installazione, renderlo eseguibile ed eseguirlo.  - Scarica il programma di installazione. A partire dal 9 gennaio 2013, 5.0.35 è il driver più recente. Poiché ho un sistema operativo a 64 bit, utilizzo il pacchetto Ubuntu a 64 bit a 11 bit (sebbene eseguo 12.10)  - Rendilo eseguibile e consenti l'installazione a /usr/local/cuda :

chmod +x cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
sudo ./cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run

Quando si verifica il messaggio di installazione che ti chiede dove installare CUDA, premi INVIO per accettare il /usr/local/cuda predefinito:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Dopo l'installazione, stamperà alcuni messaggi che suggeriscono di mettere la directory della libreria di cuda nel percorso di ricerca della libreria:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Puoi saltare questo passaggio se vuoi, ma poi devi impostare LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH più tardi quando esegui un programma.

SDK

Se vuoi essere in grado di compilare le applicazioni CUDA, puoi installare l'SDK in un modo simile a quello descritto sopra. Scarica, rendilo eseguibile ed eseguilo (non come root, ad esempio senza sudo !).

Utilizzo di CUDA

CUDA non ha bisogno di un server X basato su nvidia per funzionare. In tal caso, puoi eseguire il tuo programma di test casuale come:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Se non hai aggiunto CUDA al tuo percorso della libreria, avrai bisogno di:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(puoi rimuovere i percorsi a 32 bit da esso se il tuo programma è a 64 bit).

Se il programma CUDA ha qualcosa da mostrare usando OpenGL, devi usare optirun:

 optirun blender

Oppure, se non hai aggiunto CUDA al tuo percorso predefinito:

  

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH blender optirun

Installazione di una build di Blender

(con kernel CUDA precompilati)

Quando esegui optirun blender , potresti ricevere un messaggio da Blender che dice che la compilazione del kernel CUDA non è riuscita e un messaggio nel terminale simile al seguente:

Compiling CUDA kernel ...
nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when
targeting compute_20, sm_20, or higher
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
CUDA kernel compilation failed, see console for details.

Se vuoi usare la funzione di rendering della GPU di Blender, potresti aver bisogno di una build di Blender con kernel CUDA precompilati. I build di Blender.org hanno tutti kernel di CUDA precompilati; il ppa: cheleb / blender-svn builds ( ulteriori informazioni a questa domanda ) no.

Per installare una build ufficiale di Blender, segui semplicemente le istruzioni contenute in questa risposta .

Se hai installato Blender su /usr/lib/blender , dovresti essere in grado di avviare Blender dal terminale e utilizzare il rendering GPU con:

 optirun '/usr/lib/blender/blender'
    
risposta data Peter Cassetta 13.04.2017 - 14:24
fonte
25

Ho appena fatto qualche esperimento e posso confermare le affermazioni di Eric Appleman che Bumblebee non è necessario per CUDA. (altro su Bumblebee : È un NVIDIA GeForce con Optimus Technology supportata da Ubuntu? )

Tuttavia, quando devi mostrare esempi grafici usando OpenGL, fai hai bisogno di qualcosa come Bumblebee per i sistemi Optimus, altrimenti non vedi nulla sul display o ottieni l'errore:

ERROR: Support for necessary OpenGL extensions missing.

Quando si esegue un programma CUDA, è necessario installare il toolkit CUDA e un driver nvidia. Se si intende compilare programmi, è necessario anche l'SDK. Gli installer possono essere trovati su link , leggi le istruzioni di seguito prima di collegare il tuo laptop Optimus.

Installazione di CUDA

Driver

Raccomando di installare il driver nvidia dal gestore di pacchetti di Ubuntu. Se installi Bumblebee, non devi preoccuparti del driver. Altrimenti, dopo l'installazione, disabilita le librerie nvidia come descritto nel link . Se non lo fai, perderai l'accelerazione 3D e potresti rimanere bloccato a bassa risoluzione.

Toolkit

Fondamentalmente devi scaricare il programma di installazione, renderlo eseguibile ed eseguirlo.  - Scarica il programma di installazione. Al momento della stesura di questo, 4.2.9 è il driver più recente. Poiché ho un sistema operativo a 64 bit, utilizzo il pacchetto Ubuntu a 64 bit a 11,04 bit (sebbene sia in esecuzione 12.04)  - Rendilo eseguibile e consenti l'installazione a /usr/local/cuda :

chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

Quando si verifica il messaggio di installazione che ti chiede dove installare CUDA, premi INVIO per accettare il /usr/local/cuda predefinito:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Dopo l'installazione, stamperà alcuni messaggi che suggeriscono di mettere la directory della libreria di cuda nel percorso di ricerca della libreria:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Puoi saltare questo passaggio se vuoi, ma poi devi impostare LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH più tardi quando esegui un programma.

SDK

Se vuoi essere in grado di compilare le applicazioni CUDA, puoi installare l'SDK in un modo simile a quello descritto sopra. Scarica, rendilo eseguibile ed eseguilo (non come root, ad esempio senza sudo !). Durante la compilazione di parti di esso, ho dovuto apportare alcune modifiche a NVIDIA_GPU_Computing_SDK/C/common/common.mk però:

  • dopo circa la riga 189, OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu , aggiungi:

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • dopo circa la riga 271, scambia ${RENDERCHECKGLLIB} con ${OPENGLLIB} tale che assomigli a:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • alcune (5) righe, fai lo stesso, ma rimuovi anche -lcuda .
  • alcune (7) righe ulteriormente, fai lo stesso come hai fatto nella riga 271.

Utilizzo di CUDA

CUDA non ha bisogno di un server X basato su nvidia per funzionare. In tal caso, puoi eseguire il tuo programma di test casuale come:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Se non hai aggiunto CUDA al tuo percorso della libreria, avrai bisogno di:

  

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(puoi rimuovere i percorsi a 32 bit da esso se il tuo programma è a 64 bit).

Se il programma CUDA ha qualcosa da mostrare usando OpenGL, devi usare optirun:

 optirun blender

Oppure, se non hai aggiunto CUDA al tuo percorso predefinito:

  

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH blender optirun

    
risposta data Lekensteyn 08.05.2012 - 16:49
fonte
2

Il supporto della grafica ibrida (solitamente grafica integrata Intel e grafica Nvidia discreta) sotto Linux è al momento un po 'problematico. Qualcosa si sta lentamente spostando nel campo del server X, ma non trattenere il respiro.

Come hai immaginato che Bumblebee sia attualmente un buon modo per andare.

Recentemente ho acquistato un laptop Asus N55 con la grafica Intel / Nvidia. Sono riuscito a utilizzare il renderer di Blender Cycles per usare CUDA.

Quando ho installato Ubuntu 12.04, ho utilizzato la grafica integrata per impostazione predefinita tramite il driver grafico Intel. Il driver della noveau graphics non dovrebbe essere installato.

Poi ho aperto un terminale e ho fatto:

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia

Dopo ciò ho fatto (come raccomandato dalle istruzioni di installazione):

sudo usermod -a -G bumblebee $USER

Poi ho riavviato.

Per scegliere il driver da utilizzare all'avvio dei programmi, utilizzare il programma optirun, ad esempio:

optirun blender

Per verificare se tutto funziona correttamente, utilizzare:

optirun glxspheres

E verificare che la stringa del fornitore GL contenga la parola Nvidia. Se corri invece:

glxspheres

La stringa del venditore dovrebbe contenere la parola Intel

    
risposta data Alex Falappa 08.05.2012 - 09:45
fonte
1

Trovo che per eseguire tutti gli esempi di CUDA, usando Bumblebee, devi installare i driver 295.40 da qui e durante l'installazione scegli di non sovrascrivere config x11 .

Quindi devi usare lo stesso driver per compilare gli esempi e per eseguire il programma.

    
risposta data olmer 28.08.2012 - 16:28
fonte

Leggi altre domande sui tag