Come configurare igpu per xserver e nvidia gpu per cuda?


12

Ubuntu 16.04

Uscita di uname -a:

Linux HOST 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Grado del desktop:

  • CPU: Intel
  • GPU: Nvidia con 361.42

Quello che voglio:

  • la GPU Intel deve eseguire xserver e il mio monitor, che sono collegati al DP di bordo
  • la GPU nvidia deve essere utilizzata solo per il calcolo specifico CUDA ecc.
  • pieno controllo della GPU NVIDIA (tempo reale, statistiche, velocità della ventola temps ...)

Il mio problema:

  • nvidia-sminvidia-settingslavoro e non riesco a controllare la mia GPU nvidia (gli errori sono citati più in basso)

La mia storia:

Dopo il breve riassunto del mio problema, voglio approfondire l'argomento; Dal rilascio di Ubuntu 16.04 sto armeggiando e non riesco a ottenere quanto segue:

  • Voglio che la mia GPU Intel (i7 6700K) guidi il mio Xserver e tutto ciò ad esso associato.
  • Voglio che la mia GPU nvidia dedicata sia utilizzata solo per il calcolo basato su Cuda e simili.
  • Aggiungerò più di una GPU nvidia al sistema, dopo aver risolto i miei problemi.

Un breve riassunto del mio stato iniziale:

Ho installato i driver proprietari per nvidia e intel (intel-microcode e nvidia-361.42) tramite apt-get e disabilitato l'avvio sicuro tramite mokutul --disable-validation.
Quindi ho impostato nvidia-prime per utilizzare la scheda Intel.
Quindi ho modificato il mio xorg.conf per contenere solo una schermata con Intel Gpu e driver Intel. (chiedi dettagli se necessario)
Testando la GPU per il rendering con Blender, tutto sembrava a posto, tranne per il fatto che non riuscivo a ottenere alcuna statistica delle impostazioni della mia gpu e nvidia sembrava vuota.

Errori:

sudo nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

Quello che ho imparato finora attraverso tutti i miei tentativi e ricerche dall'uscita (versione breve, chiedi dettagli in qualsiasi momento):

I miei due problemi sono correlati ma non uguali:

Impostazioni Nvidia Vuoto:

  • questo perché queste impostazioni vengono visualizzate solo quando è presente un Xserver collegato alla GPU nvidia
  • la soluzione per questo sarebbe quella di aggiungere una nuova schermata in xorg.conf che forza e xserver inutilizzato a funzionare sulla GPU nvidia
  • ma questo al momento non è possibile (vedi altro problema) e non desiderato, dato che voglio puramente che la GPU nvidia si concentri su Cuda

Nvidia-smi non funziona:

  • bbswitch non è un problema in quanto la mia GPU (550ti) non lo supporta (errori in dmesg)
  • nvidia prime modifica la voce per x86_64-linux-gnu_gl_conf in /usr/lib/nvidia-361/ld.so.conf(GPU NVIDIA selezionata) o /usr/lib/nvidia-361-prime/ld.so.conf(GPU Intel selezionata)
  • la configurazione per la selezione delle informazioni manca di percorsi essenziali per i moduli nvidia essenziali che sono tutti presenti nel conf per la selezione nvidia
  • quando si passa a nvidia tramite prime-select, non ho un Xserver poiché il display è collegato alla GPU integrata, ma accedendo da una console virtuale nvidia-smi funziona

Il mio presupposto:

  • Nvidia prime è male e non vuole come voglio.
  • Devo in qualche modo superare prime e configurare il sistema (anche scrivendo manualmente nuove configurazioni?)

I miei tentativi:

  • Ho provato a disinstallare nvidia-prime ma ho riconosciuto solo in seguito che non può funzionare. Quando il file conf per x86_64-linux-gnu_gl_conf viene eliminato, il risultato è un casino ...
  • Ho anche provato ad aggiungere manualmente i percorsi mancanti ai file x86_64-linux-gnu_gl_conf, ma non sapevo davvero cosa stavo facendo e non ho avuto successo.

Le mie domande:

1) Come posso risolvere il problema nvidia-smi? Sono sulla buona strada? Qualcuno ha istruzioni su come procedere?

2) È possibile abilitare il controllo della ventola e ulteriori controlli per la nvidia gpu (coolbits in xorg.conf) senza un Xserver sulla gpu (senza uno schermo per la gpu in xorg.conf)?

Grazie mille in anticipo per eventuali risposte. Ho letteralmente pettinato il web, il pettine è il mio problema.
Se ho perso qualcosa di importante, per favore dimmelo e non esitare a richiedere file di registro, ecc.

GRAZIE

Immagini L'immagine della

mia scheda driver aggiuntiva: inserisci qui la descrizione dell'immagine


Ho anche creato una domanda launchpad: answers.launchpad.net/ubuntu/+question/294621
Winnetou

forse non ho descritto correttamente il mio processo di installazione: dopo aver installato nvidia-driver tramite apt-get viene anche controllato Driver aggiuntivi, come hai detto e i driver corretti erano già stati selezionati. ho incluso uno screenshot. i driver sono presenti e se cambio nvidia-prime su Nvidia-Gpu tutto funziona. la modifica di questa impostazione non può installare un intero driver, in realtà fa parte del driver e non funzionerà nemmeno senza che sia presente
winnetou,

era un'installazione Ubuntu 16.04 pulita Ad ogni avvio
aggiorno

So che i driver sono utilizzati dal sistema, in quanto posso usare CUDA sulla GPU NVIDIA. Ma non tutti i moduli nvidia vengono caricati all'avvio, quindi ad esempio nvidia-smi manca le librerie .... SE capisco correttamente il mio problema
winnetou

Risposte:


4

La risposta accettata utilizza il server X per abilitare i dispositivi Nvidia. Ciò non è necessario e significa che il server X utilizzerà parte della memoria della scheda.

Invece nvidia-modprobedovrebbe essere installato come descritto nelle FAQ del driver (può essere trovato al link sotto).

Quindi la mia soluzione raccomandata è di:

1) Installa il driver Nvidia più recente tramite il file di esecuzione da ftp://download.nvidia.com/XFree86/Linux-x86_64/ con il flag --no-opengl-filese --dkms.
2) Installa la nvidia-modprobeversione corrispondente tramite make alle sudo make installda ftp://download.nvidia.com/XFree86/nvidia-modprobe/

Il --dkmsflag si assicura che il modulo del kernel sia ricompilato quando si aggiorna il kernel.


Questo ha funzionato per me. Questa è la risposta più semplice e dovrebbe essere la risposta accettata.
Marko Avlijaš,

Questa soluzione non ha funzionato per me. Invece ho appena installato il driver normalmente e ho aggiunto il percorso nvidia a LD_LIBRARY_PATH come indicato di seguito.
inverti il

3

Io (creatore di questo post) ho trovato la soluzione di cui ho bisogno da solo!

Spiegherò ora la soluzione per chiunque si trovi in ​​una situazione simile e abbia bisogno di questo aiuto!

SOLUZIONE:
INSTALLARE IL DRIVER NVIDIA TRAMITE IL RUNFILE FORNITO SU http://www.nvidia.com/object/unix.html CON LA BANDIERA "--no-opengl-files" !!

Questo impedisce non solo ai file nvidia opengl di sovrascrivere i file mesa esistenti, ma installa anche il driver senza nvidia prime !!

Quindi tutti i miei problemi sono risolti, semplicemente installando il driver manualmente, invece di installarlo dai repository. Il pacchetto dai repository è "Optimus-Friendly" e quindi ha tutti gli inutili piantagrane in bundle con esso.

IN SECONDO LUOGO

xorg.conf deve essere esteso con un'altra schermata per le GPU dedicate in modo che abbia / abbiano voci nelle impostazioni di nvidia.

il mio assomiglia a questo

Section "ServerLayout"
    Identifier     "Layout0"
    Screen 0       "intel" 0 0
    Screen 1       "nvidia550ti" 3000 0
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "intel"
    BusID          "PCI:0@0:2:0"
EndSection

Section "Device"
    Identifier     "nvidia550ti"
    Driver         "nvidia"
    BoardName      "GeForce GTX 550ti"
    BusID          "PCI:2@0:0:0"
EndSection

Section "Screen"
    Identifier     "intel"
    Device         "intel"
EndSection

Section "Screen"
    Identifier     "nvidia550ti"
    Device         "nvidia550ti"
    Option         "AllowEmptyInitialConfiguration" "on"
    Option         "Coolbits" "4"
    Option         "ConstrainCursor" "on"
EndSection

1
Ciao. La risposta di leezu è più semplice e forse dovresti accettarla?
Marko Avlijaš,

Non posso ancora confermare la risposta di leezu, anche se mi sembra molto promettente. Se ci sono più persone che segnalano che funziona o finalmente riesco a testare la sua risposta e posso confermare, cambierò la risposta accettata. Risolve il problema che nvidia-modprobe non funziona senza un x-server in esecuzione su quella scheda.
Winnetou,

Questo non funziona se si rimuovono tutti i driver nvidia esistenti e si ricomincia da capo. Dice questo NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
AfzalivE,

1

Ho ottenuto la configurazione che desideri (volevo anche io;)):

  • la GPU Intel deve eseguire xserver e il mio monitor, che sono collegati al DP di bordo
  • la GPU nvidia deve essere utilizzata solo per il calcolo specifico CUDA ecc.
  • pieno controllo della GPU NVIDIA (tempo reale, statistiche, velocità della ventola temps ...)

usando bumblebee.

Ma prima di entrare nei dettagli, dovrei avvertirti che quando cambi la configurazione di nvidia-settings o xorg.conf o nvidia prime, devi riavviare il sistema (forse lo sai già). Il mancato riavvio potrebbe lasciare il sistema in uno stato non coerente.


Nella mia configurazione non ho toccato xorg.conf. Farlo per me è sempre stato fonte di dolore. Si prega di lasciarlo allo stato originale. Se non si desidera eseguire una nuova installazione, è possibile trovare alcuni backup in /etc/X11/( ls /etc/X11/xorg.conf*).

Il primo passo è cercare di far nvidia-settingsfunzionare. Se riesci a farlo, puoi usare nvidia PRIME per passare alla GPU Intel, come hai già detto. Avere nvidia prime point sulla GPU Intel è necessario se si desidera utilizzare la GPU NVIDIA solo per i calcoli CUDA (è particolarmente necessario se si desidera utilizzare il debugger cuda cuda-gdb).

Dopodiché puoi provare a installare bumblebee :

sudo apt install bumblebee

Reboot. Puoi monitorare lo stato del calabrone usando

sudo service bumblebeed status

o

bumblebeed -vv

Quello che fa bumblebee è attivare la GPU NVIDIA e provare a inserire il driver nvidia nel kernel solo quando richiesto. È possibile utilizzare Bumblebee pre-in attesa optirundel comando che si desidera eseguire.

Per far funzionare il calabrone, ho dovuto modificare manualmente /etc/bumblebee/bumblebee.confper impostare correttamente il nome e il percorso del driver nvidia.

[...]
Driver=nvidia
[...]
KernelDriver=nvidia_361
[...]
LibraryPath=/usr/lib/nvidia-361:/usr/lib32/nvidia-361

Quindi, dopo un sudo service bumblebeed restarttentativo sono riuscito ad attivare il sistema Bumblebee.

In effetti nvidia-smiritorna

$ nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

ma optirun nvidia-smi:

$ optirun nvidia-smi
Fri Jun 17 11:47:48 2016       
+------------------------------------------------------+                       
| NVIDIA-SMI 361.42     Driver Version: 361.42         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 970M    Off  | 0000:01:00.0     Off |                  N/A |
| N/A   53C    P1    18W /  N/A |     18MiB /  3071MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     20678    G   /usr/lib/xorg/Xorg                               4MiB |
+-----------------------------------------------------------------------------+

Spero che questo ti aiuti.


buona risposta! MA ho stancato Bumblebee con Ubuntu 15.10 e lo stesso hardware e si è incasinato. Tanto che ho fatto una nuova installazione di 16.04 dopo che è diventato disponibile. Era davvero peggio. Anche la modalità di recupero non si è avviata correttamente .... Quindi mi sono giurato di non usare più Bumblebee. Un altro problema con Bumblebee è stato (non so come tu abbia eluso questo) era che la mia gpu dedicata non supporta bbswitch, quindi ho ricevuto degli errori, che la gpu non poteva essere spenta correttamente
winnetou

Ma questa è teoricamente una possibile risposta! Ma non quello che sto cercando :(.
winnetou,

Un altro MA: (non lo so più, se questo ha funzionato al mio tentativo) nvidia-settings ti mostra la GPU (sudo optirun nvidia-settings ovviamente)? Sei in grado di controllare la velocità della ventola, la tensione ecc.? Se ricordo bene, queste impostazioni sono possibili solo nelle impostazioni nvidia, dopo aver abilitato i coolbits nel file xorg.conf. nvidia-smi ti dà solo un monitor ..... per favore correggi se sbaglio
winnetou,

E un altro enorme punto interrogativo è: Bumblebee funziona bene se ho più di una GPU dedicata? Questo caso d'uso (igpu + gpu) non è già raccomandato per bumblebee su gpus non mobile, ma avere più di un d-gpu è una nuova storia buca per bumblebee.
Winnetou,

@winnetou hai assolutamente ragione su più di una gpu - è una buona domanda. Un altro problema è che nvidia-docker non funziona come previsto molto probabilmente.
vskubriev,

1

Ho reinstallato i driver nvidia senza opengl come menzionato nelle soluzioni sopra ma non ha funzionato per me. Inoltre, queste soluzioni sono abbastanza insoddisfacenti, poiché implicano la rimozione di alcune capacità dei driver (opengl).

Ho trovato una soluzione molto più semplice, per la quale non è necessario reinstallare il driver:

  • Ho installato i driver nvidia normalmente
  • Nella GUI di nvidia-settings, untder nei profili PRIME, scelgo la scheda grafica Intel come GPU principale
  • Dopo il riavvio, nvidia-smi non funziona, ma ho risolto aggiungendo / usr / lib / nvidia-387 al percorso delle librerie:
    export LD_LIBRARY_PATH=/usr/lib/nvidia-387:$LD_LIBRARY_PATH

Notare che a seconda del driver installato, potrebbe essere necessario aggiungere un'altra cartella nel percorso della libreria, ad esempio / usr / lib / nvidia-384 .
È possibile aggiungere questo comando al file ~ / .bashrc per esportare automaticamente il percorso quando si carica un nuovo bash.


Cosa succede se si aggiorna il driver nvidia? Devi cambiare manualmente il percorso della libreria?
liang,

Immagino che questo non dovrebbe essere un problema se il driver è ancora nella stessa cartella. Se la cartella cambia, probabilmente dovresti cambiare il percorso della libreria.
inverti

0

principalmente come promemoria per me: in Ubuntu 18.04 per usare igpu per il rendering e nvidia gpu per cuda, installare i driver nvidia predefiniti, aprire le impostazioni nvidia e impostare l'uso di Intel gpu. Successivamente, aggiungi i driver nouveau alla blacklist e parte dei driver nvidia:

apri /etc/modprobe.d/blacklist-nvidia.conf e commenta le righe in questo modo:

#blacklist nvidia
blacklist nvidia-drm
#blacklist nvidia-modeset
#alias nvidia off
alias nvidia-drm off
#alias nvidia-modeset off

dopodiché apri /etc/modprobe.d/blacklist-nvidia-nouveau.conf e aggiungi quelle righe:

blacklist nouveau
options nouveau modeset=0

per essere veramente sicuri che nouveau sia disabilitato, puoi inserirli nella blacklist anche in /etc/modprobe.d/blacklist.conf: alla fine aggiungi:

#Blacklist nouveau drivers
blacklist nouveau
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off

quindi riavviare.

digitare nvidia-smiper verificare che nvidia sia caricato e digitare lspci -nnk | grep -iA2 3Dper verificare che il driver in uso sia nvidia e non nouveau.

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.