Driver nvidia: sfruttare al meglio la GPU

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2931
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Driver nvidia: sfruttare al meglio la GPU

Messaggioda joe » gio giu 15, 2017 13:09

Ripropongo qui un tema che penso sia di interesse anche a molti altri. Avevamo iniziato a parlarne qui: viewtopic.php?f=51&t=38996
Ma poi giustamente mi è stato consigliato di aprire un nuovo topic più attinente.

Ricapitolando...
Ho una scheda video molto economica Ge_Force 210:
https://www.asus.com/Graphics-Cards/EN2 ... fications/

Volevo provare ad installare i drivers proprietari e cercare di sfruttare quanto meglio le "potenzialità" della GPU, sia per scaricare il carico della CPU, sia per migliorare le prestazioni.
Così ho visto dal sito invidia che il driver per la mia scheda è il seguente:

Codice: Seleziona tutto

Version:   340.102
Release Date:   2017.2.14
Operating System:   Linux 64-bit
Language:   English (US)
File Size:   66.72 MB


E ne abbiamo anche gli slackbuilds su SBo:
https://slackbuilds.org/repository/14.2 ... 40-kernel/
https://slackbuilds.org/repository/14.2 ... 40-driver/


- Ho installato anche il pacchetto xf86-video-nouveau-blacklist-noarch-1 che crea il file per il blacklist del driver open "nouveau" (si trova in "extra"). Si può fare anche a mano...

- Ed ecco il file di configurazione per xorg che ho creato:

Codice: Seleziona tutto

etc/X11/xorg.conf.d/10-nvidia.conf

Codice: Seleziona tutto

CODICE: SELEZIONA TUTTO
Section "Device"
    Identifier  "Device0"
    Driver  "nvidia"
    VendorName "Nvidia Corporation"
    BoardName ""
EndSection


Riavviato il PC tutto sembra funzionante e da lsmod si ha conferma che il driver in uso è effettivamente "nvidia" e non più "nouveau". (In teoria basterebbe solo riavviare Xorg, ma non partiva, forse dovevo scaricare il modulo "nouveau" a mano con modprobe e caricare il nuovo "nvidia").

Ok, installato tutto e configurato un minimo come spiegato, mi ero posto il problema di configurare al meglio il sistema in modo che utilizzi i driver proprietari con i parametri più corretti.

In particolare, siccome da qualche parte bisogna pur partire, ho fatto qualche prova con la riproduzione video testando sia MPlayer che MPV che qualche video da youtube con il browser chromium. Ne ho rilevato un maggiore carico sulla CPU durante la riproduzione dal browser rispetto a quella con MPV e MPlayer, quest'ultimo risultava il più "leggero".
Ponce, che ringrazio per le risposte sull'altro topic (v.di link più avanti), mi suggeriva che deve dipendere dal fatto che i player utilizzano VDPAU (per me oggetto misterioso...) mentre youtube si appoggia a flashplayer che non sfrutta questo vdapu.
Allora ho controllato meglio i due palyer e ho notato che MPlayer utilizza effettivamente vdpau, mentre MPV OpenGL... Non ho capito perché i due abbiano un default differente... Ad ogni modo si può tranquillamente settare "vo=vdpau" anche in MPV.

Poi un po' per caso ho letto del parametro "-hwdec". Se si imposta ad esempio in MPV "-vo=vdpau -hwdec=vdpau", ecco che si ottiene un carico sulla CPU molto inferiore. Ho testato il tutto con un video in HD e il carico sulla CPU senza hwdec impostato era del 30% circa. Con hwdec scende a meno del 10%!
Metto il link al messaggio in cui avevo riportato l'argomento:
viewtopic.php?f=51&t=38996#p348644

Ponce mi faceva notare come VDPAU stia lasciando il campo all'utilizzo sempre più spinto da parte degli sviluppatori delle API CUDA. Che roba sia non ne ho idea, CUDA l'ho già incontrato in un'infarinatura di calcolo parallelo, ma molto qualitativa...
Per quel che ne so CUDA significa ottimizzazione delle potenzialità della GPU con conseguente maggiore efficienza e prestazioni. Allora ho un po' riguardato il man di MPV (https://mpv.io/manual/stable/) e ho provato a lanciare mpv con "-vo=opengl -hwdec=cuda".

Come vedete dal link al mio messaggio sull'altro topic usciva il warning:

Codice: Seleziona tutto

Requested hardware decoder not compiled


La domanda allora era: usare CUDA è possibile per la mia scheda e con il mio sistema? Forse basta ricompilare MPV dopo aver installato i drvier proprietari nvidia?
E ancora, al di là di tutto quale sarebbe la combinata preferibile di "-vo" e "-hwdec" per MPV?
CUDA è effettivamente il "top" per ottenere la resa migliore?
Oppure meglio VDAPU... O cos'altro?

Insomma credo di aver reso il senso dell'argomento: come avere la migliore configurazione dei driver nVidia proprietari in modo da sfruttare al meglio la GPU.
Ho portato l'esempio della riproduzione video, ma vorrei estendere il discorso ad uno campo più generico se possibile.


Grazie in anticipo! :D


PS.
Riguardo a VDPAU poi era rimasto insoluta la funzione del file di configurazione /etc/profile.d/vdpau.sh e ".csh".
A cosa serve quello script? Vedo che definisce la variabile d'ambiente VDPAU_DRIVER che io ho impostato su "nvidia".
MA poi quando viene utilizzata quella variabile e da quali applicazioni?

Avatar utente
Trotto@81
Iper Master
Iper Master
Messaggi: 3532
Iscritto il: sab giu 26, 2004 0:00
Nome Cognome: Andrea
Slackware: Slackware64 14.2 bet
Kernel: default
Desktop: KDE 4.14.14
Località: Monasterace M. (RC)
Contatta:

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda Trotto@81 » gio giu 15, 2017 16:14

La GPU la sfrutti tramite la libreria vdpau, quindi, se le app la utilizzano bene, altrimenti c'è poco da fare.
Il formato HEVC è poco diffuso per ora, ma con la tua VGA non è possibile usare la decodifica hardware.
Con la mia GF 8600GT non riesco a sfruttare a pieno l'accelerazione hardware in Firefox, perché mancano alcune estensioni e per la riproduzione dei video in HTML 5 su youtube sarebbe utile per sgravare un po' la CPU.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2931
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda joe » gio giu 15, 2017 16:45

Trotto@81 ha scritto:Il formato HEVC è poco diffuso per ora, ma con la tua VGA non è possibile usare la decodifica hardware.

Potresti chiarirmi da cosa lo si può riscontrare?
Cioè dove lo hai letto? hai qualche link a questo tipo di specifiche? Cosa bisogna cercare di preciso?
Grazie!

Avatar utente
Trotto@81
Iper Master
Iper Master
Messaggi: 3532
Iscritto il: sab giu 26, 2004 0:00
Nome Cognome: Andrea
Slackware: Slackware64 14.2 bet
Kernel: default
Desktop: KDE 4.14.14
Località: Monasterace M. (RC)
Contatta:

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda Trotto@81 » gio giu 15, 2017 16:50

Per sfruttare la decodifica HEVC ti serve una GPU nVidia recente in grado di supportarla. Di seguito ti indico una pagina che le istruzioni supportate dalle varie GPU.
https://en.wikipedia.org/wiki/Nvidia_PureVideo

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2931
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda joe » gio giu 15, 2017 17:11

E per quanto riguarda CUDA invece? Si può sfruttare anche tipo per la riproduzione video no?
È la stessa cosa di HEVC? Mi pare di no... giusto?

Codice: Seleziona tutto

~# inxi -G
Graphics:  Card: NVIDIA GT218 [GeForce 210]
Display Server: X.org 1.18.3 driver: nvidia tty size: 124x37 Advanced Data: N/A for root

Avatar utente
Trotto@81
Iper Master
Iper Master
Messaggi: 3532
Iscritto il: sab giu 26, 2004 0:00
Nome Cognome: Andrea
Slackware: Slackware64 14.2 bet
Kernel: default
Desktop: KDE 4.14.14
Località: Monasterace M. (RC)
Contatta:

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda Trotto@81 » gio giu 15, 2017 17:21

Per sfruttare CUDA - quindi il calcolo parallelo - serve un software scritto appositamente, tipo MATLAB.
HEVC è un codec, comunemente conosciuto come x265, non una tecnologia proprietaria di NVidia, che si limita solo a supportare la codifica hardware sulle GPU più recenti: se poi usino o meno i CUDA cores per lo scopo non te lo saprei dire.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2931
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda joe » gio giu 15, 2017 18:11

Ok, si sulla questione del calcolo parallelo ti seguo, vale anche per il C o per il Fortran ecc...
Nel caso della riproduzione video però, così come per il rendering con Blender (di cui non so nulla a dire il vero..), ma anche per la conversione Video (encoding con ffmpeg ad esempio). Le potenzialità della GPU dovrebbero essere sfruttabili proprio grazie alle funzionalità CUDA. Penso sia una cosa differente rispetto a HEVC cui facevi riferimento tu.

Avevo messo il link nel primo post ma lo riporto qui:
https://mpv.io/manual/stable/#options-hwdec

Codice: Seleziona tutto

--hwdec=<api>


Come vedi tra le API da scegliere c'è anche "cuda". Ad esempio:

Codice: Seleziona tutto

mpv -vo=opengl -hwdec=cuda file.mkv


Nel mio caso se provo mi ritorna però:

Codice: Seleziona tutto

Requested hardware decoder not compiled

E la riproduzione avviene probabilmente usando solo opengl e stop. Ho il dubbio che CUDA vada in qualche modo installato (vedo un cuda toolkit su SBo, ma non so se quello serva per altro, magari non c'entra nulla con questo discorso ed è parecchio ingombrante...). Ho inoltre il sospetto che vada ricompilato anche ffmpeg per far funzionare cuda anche con MPV, ma è un sospetto poco fondato a dire il vero.

Avatar utente
Trotto@81
Iper Master
Iper Master
Messaggi: 3532
Iscritto il: sab giu 26, 2004 0:00
Nome Cognome: Andrea
Slackware: Slackware64 14.2 bet
Kernel: default
Desktop: KDE 4.14.14
Località: Monasterace M. (RC)
Contatta:

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda Trotto@81 » gio giu 15, 2017 18:34

Deve essere ricompilato sulla tua macchina per una prova, purché la tua VGA lo permetta, altrimenti devi farti bastare VDPAU.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2931
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda joe » gio giu 15, 2017 19:30

A cosa ti riferisci?
ffmpeg?
mpv?
cudatoolkit?

Avatar utente
Trotto@81
Iper Master
Iper Master
Messaggi: 3532
Iscritto il: sab giu 26, 2004 0:00
Nome Cognome: Andrea
Slackware: Slackware64 14.2 bet
Kernel: default
Desktop: KDE 4.14.14
Località: Monasterace M. (RC)
Contatta:

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda Trotto@81 » gio giu 15, 2017 20:23

MPV, ma ti ripeto che se riesci ad usare VDPAU è la stessa cosa. Prova a lanciare sei video in simultanea usando l'accelerazione hw e vedi cosa accade.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2931
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda joe » gio giu 15, 2017 23:58

Ecco cosa succede usando vo=vdpau e hwdec=vdpau
http://imagizer.imageshack.us/a/img922/5572/zepMHo.png

Come vedi dal terminale ho lanciato 10 sessioni di MPV che riproducono lo stesso video.
La CPU va al 100% di carico e praticamente risulta difficile anche spostare una finestra... Per prendere lo screenshot è stato un parto. Inutile dire che i video vanno tremendamente a scatti, restano indietro, ecc ecc insomma è solo un test ma ecco, i video riprodotti non sono praticamente visionabili.

Impostando -vo=opengl oppure vo=vdpau ma senza specificare hwdec=auto, oppure vdpau, ecco che il tutto peggiora drasticamente, praticamente non riescono neanche a vedersi aprire le finestre di MPV, al che ho praticamente dato "killall mpv" per porre fine all'agonia! :D

Sarebbe stato anche interessante dare un'occhiata al carico del GPU. Come vedi dallo screenshot ho un plasmoide con il carico cu è sottoposta la CPU, se ve ne fosse un'altro simile per la GPU sarebbe significativo vedere come cambiando i vari codec opengl vdpau con e senza hwdec, si ottenga una distribuzione differente del carico di lavoro tra CPU e GPU.
A quanto pare esiste nvidia-smi, ma non supporta la mia GPU quindi non si legge alcun valore del carico. Ho provato anche "glances" uno script in python, ma anche lì mancano i dati della GPU...
Insomma mi sà che non si può fare... devo basarmi esclusivamente dal carico della CPU e dal comportamento ad occhio e croce del sistema.

Avatar utente
Trotto@81
Iper Master
Iper Master
Messaggi: 3532
Iscritto il: sab giu 26, 2004 0:00
Nome Cognome: Andrea
Slackware: Slackware64 14.2 bet
Kernel: default
Desktop: KDE 4.14.14
Località: Monasterace M. (RC)
Contatta:

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda Trotto@81 » ven giu 16, 2017 15:33

Forse ho esagerato pure io consigliandoti questa prova onerosa, in fin dei conti non ha un GPU recentissima.
Il carico non posso vederlo nemmeno io, cosa possibile con nvidia-smi solo su schede recenti.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2931
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda joe » ven giu 16, 2017 17:17

Mah, si alla fine è una scheda molto economica, l'avevo montata sul mio PC, ormai vecchio anche lui, in occasione del nuovo monitor preso un paio di anni fà: il monitor non aveva ingresso VGA, mentre la scheda madre del PC ha anche un chip integrato (nvidia anche quello) che dispone solo di uscita VGA. Alla fine allora avevo preso quella scheda video esterna e un cavo HDMI, spesa totale intorno ai 30 euro. Quindi diciamo che non ho chissà quali pretese.

Però tanto per dire, la prova di MPV con le opzioni vo=vdpau e hwdec=vdpau (oppure anche "auto", dovrebbe settarsi sempre su vdpau) hanno dimostrato un notevole sgravio del lavoro della CPU. Se non ci smanettavo un po' non l'avrei neanche saputo.

Sul discorso CUDA ed MPV invece non riesco a trovare informazioni su come impostare la cosa.
Tu dicevi che basterebbe ricompilare MPV sulla mia macchina, ma di fatto MPV lo avevo compilato proprio sul sistema, infatti lo ho installato con sbopkg, quindi dallo slackbuild di SBo. Insomma non è un precompilato.
A dirla tutta l'avevo compilato prima di installare i drivers proprietari nvidia, ma dubito che basti installare i drivers, ricompilare mpv e ritrovarsi per magia CUDA disponibile tra i vari output video.
Come ho detto non riesco a trovare informazioni "ufficiali" per lo scopo. Tu lo avevi letto da qualche parte di preciso che è sufficiente la ricompilazione di MPV su un sistema con il driver "nvidia" attivato per fargli poi sfruttare CUDA? Oppure era una tua ipotesi "a naso"?

Avatar utente
Trotto@81
Iper Master
Iper Master
Messaggi: 3532
Iscritto il: sab giu 26, 2004 0:00
Nome Cognome: Andrea
Slackware: Slackware64 14.2 bet
Kernel: default
Desktop: KDE 4.14.14
Località: Monasterace M. (RC)
Contatta:

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda Trotto@81 » ven giu 16, 2017 17:20

Non conosco MPV, ma se vuoi sapere che ti accelerazione supporta la tua VGA ti basta anche digitare $ffmpeg -hwaccels. Se non c'è per ffmpeg non c'è nemmeno per MPV.
Quella sulla ricompilazione era una mia ipotesi.

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 2501
Iscritto il: mer mar 05, 2008 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 4.19.9
Desktop: lxde
Località: Pisa
Contatta:

Re: Driver nvidia: sfruttare al meglio la GPU

Messaggioda ponce » ven giu 16, 2017 17:40

joe, prova ad installare cudatoolkit e a ricompilare mpv, a me cosi' quando gira il configure dice

Codice: Seleziona tutto

Checking for CUDA hwaccel                                            : yes

io non ho ricompilato ffmpeg con cudatoolkit installato.