Come usare CUDA con NVIDIA Prime


10

Ho trovato una mezza dozzina di post su questo in tutto il web, ma nessuno di loro risponde davvero alla domanda.

Voglio impostare la mia GPU nvidia per fare solo calcoli, non guidare il display. Ma quando passo all'utilizzo della GPU Intel nella configurazione nvidia-prime, non riesco più a caricare il modulo nvidia.

modprobe: ERROR: could not insert 'nvidia_352': No such device

Senza il modulo, CUDA non funziona, ovviamente.

Quindi cosa sta facendo esattamente nvidia-prime che rende impossibile caricare il modulo? Non è nella lista nera. Non esiste un file xorg.conf, quindi come fa il sistema a utilizzare la GPU Intel anziché quella discreta?

Sono su un Dell 5510 Precision con Ubuntu 14.04 installato in fabbrica e la mia GPU è Quadro M1000M.

Alcuni suggeriscono di usare il calabrone, ma ciò non dovrebbe essere necessario per carichi di calcolo puri.

Inoltre, apparentemente il calabrone è in grado di caricare il modulo. Quindi cosa sta facendo esattamente?

Aggiornamento: allora perché mi sembra sempre di trovare la risposta quando finalmente pubblico una domanda, dopo ore di tentativi di capirlo. Questa in realtà è solo una risposta parziale, ma sono d'accordo su qualcosa.

Finora ho determinato che prime fa almeno due cose:

  • Spegni la GPU usando bbswitch.
  • Modifica le alternative per /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf.

Usando bbswitch per riaccendere la GPU, ora sono in grado di caricare il modulo NVIDIA.

Ma la domanda rimane ancora: qual è il modo migliore per configurare il sistema per utilizzare la scheda NVIDIA solo per i calcoli?

Devo impostare nvidia-prime per utilizzare la GPU Intel e provare a svelare manualmente ciò che ha fatto funzionare CUDA?

Come posso assicurarmi che il sistema usi ancora la GPU Intel per il display?

Come farei semplicemente disabilitando NVIDIA prime e configurandolo tutto manualmente?

O dovrei cedere e usare Bumblebee e optirun? Quali sono gli svantaggi di questo?

Qualche consiglio?


È possibile disabilitare la visualizzazione sulla GPU nell'app Impostazioni server NVIDIA X?
Roger Dahl,

L'utilità NVIDIA consente solo di scegliere tra GPU Intel e NVIDIA. Non fornisce impostazioni dettagliate, ad esempio quale scheda utilizzare per il display.
orodbhen,

Risposte:


5

Nel mio caso ho scoperto che la scheda NVidia non era effettivamente spenta e l'unica cosa che dovevo effettivamente fare per eseguire il codice CUDA era:

export LD_LIBRARY_PATH=/usr/lib/nvidia-352

nella shell in cui voglio eseguirlo (suppongo che cambiare a livello globale l'impostazione delle alternative rompa compiz, ecc, ecc ...)

Per arrivare a questo punto (su un Dell Optiplex 7010, con Ubuntu 14.04, CUDA 7.5 e una GTX 980) credo che i passaggi siano stati:

  1. Utilizzare la scheda Profili PRIME per selezionare Intel
  2. Riavvia e seleziona Intel come predefinito nel BIOS
  3. Spegni il computer
  4. Collega i monitor al video integrato :)

Finora tutto sembra funzionare bene (nvidia-smi vede la scheda, i campioni di cuda vengono eseguiti, quindi usa la scheda, ecc ...)


1
Sì, sfortunatamente non sembra esserci una soluzione coerente, motivo per cui volevo davvero capire cosa stava succedendo sotto il cofano.
orodbhen,

2

Credo di aver trovato almeno una soluzione sommaria a questo, come descritto nell'aggiornamento al mio post originale. Davvero ci sono due soluzioni che ho trovato, anche se sono sicuro che ce ne sono altre.

1 - Con Prime in modalità Intel, riattivare la scheda NVIDIA tramite bbswitch , quindi eseguire modprobe nvidiaper caricare il modulo e creare i nodi del dispositivo.

2 - Usa Bumblebee optirun per avviare una sessione bash da cui puoi fare tutto il tuo CUDA.

Entrambe queste soluzioni consentono di utilizzare la grafica integrata per il display, mentre si utilizza la scheda NVIDIA per i carichi di calcolo. La soluzione optirun sembra più versatile, ma preferisco la prima per il suo minimalismo.

Spero che qualcuno con più comprensione migliorerà su questa risposta.


puoi spiegare la prima opzione in modo più chiaro? Come si accende e si spegne la carta usando bbswitch?
Abonec,

In realtà ho capito come far funzionare bene il calabrone e aggiornerò la mia risposta quando avrò tempo. Ho praticamente seguito questo . È frustrante che questa roba sia così scarsamente documentata, perché è davvero abbastanza semplice.
orodbhen,

2

Uso la scheda NVIDIA solo per le esecuzioni CUDA e scopro questo approccio:

Per tutto il tempo che uso la scheda Intel ed è confermato dal comando lspci | grep -E "VGA|3D":

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

Nella riga corrispondente per la scheda NVIDIA dovresti vedere (rev ff)significa che è spento.

Per accendere la scheda e utilizzarla per i calcoli CUDA, utilizzo due comandi seguenti:

sudo prime-select nvidia
sudo prime-switch

Dopo quel lspci | grep -E "VGA|3D"rapporto di comando :

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)

Si noti (rev a2), non (rev ff)nella riga corrispondente. Ora la carta è pronta per il calcolo.

Dopo i calcoli uso azioni all'indietro:

sudo prime-select intel
sudo prime-switch

E lspci | grep -E "VGA|3D"rapporti:

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

Quindi, in pratica, devi solo riconnetterti dopo aver cambiato con prime, se vuoi cambiare quale GPU sta eseguendo il display? Non ci avevo pensato, ma ha senso. Naturalmente, è necessario assicurarsi di tornare indietro prima di disconnettersi o riavviare.
orodbhen,

Uso questo approccio. Eseguo l'accesso con il profilo Intel attivo, quindi Xorg e Firefox non utilizzano la GPU. Quindi passo al profilo NVIDIA e tutto il mio lavoro su CUDA passa poi alla GPU e non devo competere con Firefox e Xorg per la memoria :)!
Giovanni

0

Nel caso in cui qualcuno riscontri ancora problemi dopo aver seguito i passaggi indicati nella risposta accettata, prova questo:

echo "install bbswitch /bin/true" > /etc/modprobe.d/blacklist-bbswitch.conf
update-initramfs -u

Disabiliterà completamente bbswitch. Lo svantaggio è che non sarai in grado di disattivare la scheda NVIDIA per il risparmio energetico (Xorg utilizza comunque la grafica integrata, purché prime-select intel).


0

Sto usando un 1070 ti con un thinkpad T420 in un egpu impostato per estrarre criptovaluta mentre lavoro. In questo modo la GPU si ripaga in teoria dopo un paio di mesi.

Ho scoperto che con nvidia 387 export LD_LIBRARY_PATH = / usr / lib / nvidia-387 ha funzionato con ethminer usando cuda.

Tuttavia, l'unico modo in cui sono riuscito a far funzionare il sistema dopo un "Intel Prime Select Select" era se avessi un secondo monitor collegato alla scheda quando ho fatto la selezione e disconnesso. Altrimenti, visualizzerei un errore "Il sistema funziona in modalità grafica bassa" o uno schermo vuoto continuo. Naturalmente, quando eseguo il login eseguendo la grafica Intel, il monitor collegato alla GPU non visualizza nulla, quindi devo scollegarlo dalla GPU e ricollegarlo al sistema (output dock DVI) per eseguire la mia configurazione del monitor duello .

Credo che ciò sia dovuto al fatto che gpu-manager rileva che bbswitch non funziona e quindi elimina la configurazione di xorg.

Sto pubblicando questo per mostrare una soluzione alternativa per i pochi che potrebbero trovarsi in una situazione simile, ma anche per vedere se qualcuno ha un'idea per impedire che ciò accada, poiché dover spostare quel cavo per ogni riavvio è un po 'un inconveniente.

log_file: /var/log/gpu-manager.log

last_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot new_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot non è in grado di accedere / eseguire / udc-fglrx-è stato caricato il file in cerca di moduli fglrx in / lib /modules/4.4.0-104-generic/updates/dkms Cerchi moduli nvidia in /lib/modules/4.4.0-104-generic/updates/dkms Trovato modulo nvidia: nvidia_387_drm.ko Nvidia è caricato? sì È stato scaricato nvidia? no La nvidia è nella lista nera? sì Fglrx è caricato? no Fglrx è stato scaricato? no La fglrx è nella lista nera? no Intel è caricato? si Radeon è caricato? no Radeon è nella lista nera? no amdgpu è caricato? no Amdgpu è nella lista nera? no Il nouveau è caricato? no Il nouveau è nella lista nera? si È disponibile il modulo kernel fglrx? no Il modulo del kernel nvidia è disponibile? sì ID fornitore / dispositivo: 8086: 126 BusID "PCI: 0 @ 0: 2: 0" Boot vga? sì ID fornitore / dispositivo: 10de: 1b82 BusID "PCI: conf Alternativa core corrente: (null) Alternativa egl corrente: /usr/lib/nvidia-387-prime/ld.so.conf È abilitato nvidia? no È abilitato nvidia egl? no Fglrx è abilitato? no Mesa è abilitata? no Mesa egl è abilitata? no pxpress è abilitato? no Prime è abilitato? si è abilitato prime egl? si È disponibile NVIDIA? si È disponibile nvidia egl? no È disponibile fglrx? no È disponibile fglrx-core? no Mesa è disponibile? si È disponibile mesa egl? si pxpress è disponibile? no È disponibile prime? si Egl Prime è disponibile? nessun IGP Intel rilevato Sistema ibrido Intel Versione driver Nvidia 387.34 rilevata / sys / class / dmi / id / product_version = "ThinkPad T420" / sys / class / dmi / id / product_name = "4236L23" 1 ° tentativo: bbswitch senza strane Caricamento con bbswitch Parametri "load_state = -1 unload_state = 1" Errore: can ' t open / proc / acpi / bbswitch Rimozione di xorg.conf. Percorso: /etc/X11/xorg.conf non può accedere a /usr/share/gpu-manager.d/hybrid-power-saving Non è necessario modificare lo stato attuale di bbswitch

Se dopo nano xorg.conf è vuoto. Sto postando questo dopo aver fatto il trucco dell'interruttore del monitor, con il mining in corso in background e il mio xorg.conf è ancora vuoto. Quindi la mia ipotesi è che per qualche motivo quando tengo il monitor collegato alla GPU al riavvio di lightdm, non importa che il mio xorg.conf sia cancellato. Qualche idea?


Inoltre ... ho inserito nella lista nera bbswitch come suggerito sopra, perché avrei un errore continuo con esso all'avvio. Sono stato in grado di avviare in modalità Intel usando nvidia-384 una o due volte, ma ho avuto problemi a fare il mining con quello, e ho pensato che potesse essere perché il supporto 1070 ti è stato aggiunto con nvidia-387.
nhorning, il
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.