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


28

Background: sono un artista 3D (per hobby) e di recente ho iniziato a utilizzare Ubuntu 12.04 LTS come dual-boot con Windows 7. È in esecuzione sul mio laptop Toshiba a 64 bit abbastanza nuovo con una GPU nVidia GeForce GT 540M ( scheda grafica). Inoltre, ha anche Intel Integrated Graphics (che sospetto che Ubuntu stia usando).

Quindi, quando eseguo il rendering delle scene 3D in 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 per utilizzare CUDA o OpenCL. In Ubuntu non esiste alcuna opzione GPU.

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

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

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

Risposte:


27

Ho appena fatto alcuni esperimenti e posso confermare le dichiarazioni di Eric Appleman secondo cui Bumblebee non è necessario per CUDA. (maggiori informazioni su Bumblebee : NVIDIA GeForce con tecnologia Optimus è supportata da Ubuntu? )

Tuttavia, quando hai bisogno di mostrare esempi grafici usando OpenGL, si fa bisogno di qualcosa come Bumblebee per i sistemi di Optimus, altrimenti o non si vede nulla sul vostro schermo o l'errore:

ERROR: Support for necessary OpenGL extensions missing.

Quando si esegue un programma CUDA, è necessario installare CUDA toolkit e un driver nvidia. Se si intende compilare programmi, è necessario anche l'SDK. Gli installer sono disponibili su http://developer.nvidia.com/cuda-downloads , leggere le istruzioni seguenti prima di installare il laptop Optimus.

Installazione di CUDA

autista

Consiglio di installare il driver nvidia dal gestore dei pacchetti di Ubuntu. Se installi Bumblebee, non devi preoccuparti del driver. Altrimenti, dopo l'installazione, disabilitare le librerie nvidia come descritto su https://askubuntu.com/a/107746/6969 . Se non lo fai, perderai l'accelerazione 3D e probabilmente rimarrai bloccato a una bassa risoluzione.

Kit di strumenti

Fondamentalmente devi scaricare il programma di installazione, renderlo eseguibile ed eseguirlo. - Scarica il programma di installazione. Al momento della stesura di questo documento, 4.2.9 è il driver più recente. Dato che ho un sistema operativo a 64 bit, utilizzo il pacchetto Ubuntu 11.04 a 64 bit (anche se sto eseguendo 12.04) - Renderlo eseguibile e consentire l'installazione per /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 viene visualizzato il messaggio di installazione che ti chiede dove installare CUDA, premi Invio per accettare il valore predefinito /usr/local/cuda:

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

Dopo l'installazione, verranno stampati alcuni messaggi che suggeriscono di inserire la directory della libreria 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

Se lo desideri, puoi saltare questo passaggio, ma dovrai impostarlo in un LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHsecondo momento durante l'esecuzione di un programma.

SDK

Se si desidera essere in grado di compilare applicazioni CUDA, è possibile installare l'SDK in un modo simile come descritto sopra. Scarica, rendilo eseguibile ed eseguilo (non come root, ad es. Senza sudo!). Durante la compilazione di parti di esso, ho dovuto apportare alcune modifiche a NVIDIA_GPU_Computing_SDK/C/common/common.mk:

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

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • dopo la linea circa 271, di swap ${RENDERCHECKGLLIB}con ${OPENGLLIB}tale che assomiglia a:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • alcune (5) righe ulteriormente, fanno lo stesso, ma rimuovono -lcudaanche.
  • alcune (7) righe più avanti, fai come nella riga 271.

Utilizzando CUDA

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

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

Se non hai aggiunto CUDA al percorso della tua 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 visualizzare 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


Grazie, ti assegnerò il premio (ma accetterò la mia risposta Wiki della community).
Peter Cassetta,

Inoltre, 100 rappresentanti e un voto non esprimono con precisione quanto apprezzo il tuo lavoro sul progetto Bumblebee. Tu e i tuoi colleghi avete reso il software il migliore. Quindi grazie. :)
Peter Cassetta,

2
Prego, ora spero che il tempo ci assegni una soluzione finale in forma di PRIME con uno stack aggiornato xorg + mesa (o Wayland?) :)
Lekensteyn,

1
PRIME , Xorg è il server di visualizzazione responsabile della visualizzazione della grafica, Mesa è per OpenGL, Wayland è un possibile successore di Xorg.
Lekensteyn,

1
Si noti che CUDA richiede un driver NVIDIA minimo. Ad esempio, CUDA 6.5 richiede almeno NVIDIA 340.21.
Yamaneko,

15

Ecco la risposta completa (basata sulle risposte di Alex Falappa e Lekensteyn ):

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

Bumblebee non è necessario per CUDA. (maggiori informazioni su Bumblebee : NVIDIA GeForce con tecnologia Optimus è supportata da Ubuntu? )

Tuttavia, quando hai bisogno di mostrare esempi grafici usando OpenGL, si fa bisogno di qualcosa come Bumblebee per i sistemi di Optimus, altrimenti o non si vede nulla sul vostro schermo o l'errore:

ERROR: Support for necessary OpenGL extensions missing. 

Se hai bisogno di usare un programma ad alta intensità di grafica come Blender, Bumblebee è attualmente una buona strada da percorrere.

Passa a Installare CUDA se non vuoi installare Bumblebee (cioè se non hai bisogno di OpenGL).
Altrimenti, continua a leggere.

Installazione di Bumblebee

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

Questi sono attualmente tenuti aggiornati da uno sviluppatore di Bumblebee.

Dopo aver installato Bumblebee e riavviato, sarai in grado di scegliere la scheda grafica da utilizzare all'avvio dei programmi utilizzando il optirunprogramma.
Per esempio:

optirun blender

Per verificare rapidamente se tutto funziona correttamente, utilizzare:

optirun glxspheres

Vedrai un programma con sfere colorate che girano 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 contiene la scheda Intel.

Quando si esegue un programma CUDA, è necessario installare CUDA toolkit e un driver nvidia. Se si intende compilare programmi, è necessario anche l'SDK. Gli installer sono disponibili su http://developer.nvidia.com/cuda-downloads , leggere le istruzioni seguenti prima di installare il laptop Optimus.

Installazione di CUDA

autista

Consiglio di installare il driver nvidia dal gestore dei pacchetti di Ubuntu. Se installi Bumblebee, non devi preoccuparti del driver. Altrimenti, dopo l'installazione, disabilitare le librerie nvidia come descritto su https://askubuntu.com/a/107746/6969 . In caso contrario, perderai l'accelerazione 3D e probabilmente rimarrai bloccato a una bassa risoluzione.

Kit di strumenti

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. Dato che ho un sistema operativo a 64 bit, utilizzo il pacchetto Ubuntu 11.10 a 64 bit (anche se sto eseguendo 12.10) - Renderlo eseguibile e consentire l'installazione per /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 viene visualizzato il messaggio di installazione che ti chiede dove installare CUDA, premi Invio per accettare il valore predefinito /usr/local/cuda:

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

Dopo l'installazione, verranno stampati alcuni messaggi che suggeriscono di inserire la directory della libreria 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

È possibile saltare questo passaggio se lo si desidera, ma è necessario impostare in LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHseguito quando si esegue un programma.

SDK

Se si desidera essere in grado di compilare applicazioni CUDA, è possibile installare l'SDK in un modo simile come descritto sopra. Scarica, rendilo eseguibile ed eseguilo (non come root, ad es. Senza sudo!).

Utilizzando CUDA

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

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

Se non hai aggiunto CUDA al percorso della tua 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 visualizzare 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 un Blender Build

(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 GPU di Blender, potresti aver bisogno di una build di Blender con kernel CUDA precompilati. Le build di Blender.org hanno tutte kernel KUDA precompilati; le build ppa: cheleb / blender-svn ( ulteriori informazioni su questa domanda ) no.

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

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

 optirun '/usr/lib/blender/blender'

Le versioni recenti di Bumblebee (installato dal calabrone / PPA stabile) non richiedono il usermodcomando. Manterrò le istruzioni di installazione su askubuntu.com/a/36936/6969 aggiornate, quindi si prega di collegarsi a quel post invece di copiare quelle istruzioni di installazione.
Lekensteyn,

@Lekensteyn Ok, fatto!
Peter Cassetta,

2

La grafica ibrida (di solito grafica integrata Intel e grafica discreta Nvidia) il supporto sotto Linux è attualmente un po 'problematico. Qualcosa si sta lentamente muovendo nel campo del server X ma non trattenere il respiro.

Come hai intuito Bumblebee è attualmente un buon modo per andare.

Di recente ho acquistato un laptop Asus N55 con grafica Intel / Nvidia e sono riuscito a ottenere il renderer Blender Cycles per utilizzare CUDA.

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

Quindi 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

Successivamente ho fatto (come raccomandato dalle istruzioni di installazione):

sudo usermod -a -G bumblebee $USER

Quindi 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 usare:

optirun glxspheres

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

glxspheres

La stringa del fornitore deve contenere la parola Intel


Devo installare i driver nVidia prima di installare Bumblebee? Immagino di no, in base a come hai formulato la tua risposta. Inoltre, è bello vedere qualcuno che è stato in grado di utilizzare CUDA su Ubuntu con una scheda Optimus! Voterò questo non appena avrò 15 rappresentanti. :)
Peter Cassetta,

Ok, ho installato Bumblebee. Ho usato optirune posso verificare che Blender stava usando la mia GPU nVidia per il rendering del viewport 3D. Tuttavia, non esiste alcuna opzione "GPU" nel menu a discesa delle Preferenze utente di Blender. Elenca solo "CPU". Vedi questo screenshot . Devo installare driver aggiuntivi per utilizzare CUDA?
Peter Cassetta,

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 il config x11.

Quindi è necessario utilizzare lo stesso driver per compilare gli esempi ed eseguire il programma.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.