Configura Xorg per funzionare dalla GPU integrata


11

Sto usando Ubuntu 14.04LTS, con una CPU Intel + grafica integrata, con una GPU GTX650. Ho fatto questa domanda su SO ma hanno detto che era offtopico.

Voglio usare la mia GPU per il debug del codice CUDA e per questo ho bisogno di cambiare la visualizzazione solo in integrata. Questo è l'errore che ottengo quando provo a eseguire il debug al momento:

"All cuda devices are used for display and cannot be used while debugging"

Sono entrato nel BIOS e ho cambiato il display principale in iGPU (quello integrato, HD4600). Non è più uscito nulla dalle porte GPU (in termini di visualizzazione) e ho collegato i miei monitor alla scheda madre. Funziona solo uno dei monitor. Normalmente li ho come:

|[Monitor 1, VGA]| |[Monitor 2, DVI]|

In quella configurazione, con iGPU, sul Monitor 1 non viene visualizzato nulla (è nero, ma il computer sa che è lì - la luce verde è accesa e tutte le mie finestre si aprono su di esso). L'unico modo per farlo funzionare è scambiare Monitor 2 con VGA e Monitor 1 con DVI.

Se lspci | grep VGAentro nel Terminale, ottengo questo:

00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)

Correre xrandrmi dà:

Screen 0: minimum 8 x 8, current 3360 x 1050, maximum 16384 x 16384
DVI-D-0 disconnected primary (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
VGA1 connected 1680x1050+0+0 474mm x 296mm
   1680x1050      60.0*+
   1600x1000      60.0 +
   1280x1024      75.0     72.0     60.0  
   1440x900       75.0     59.9  
   1152x864       75.0  
   1024x768       75.1     70.1     60.0  
   800x600        72.2     75.0     60.3  
   640x480        75.0     72.8     66.7     60.0  
   720x400        70.1  
DP1 disconnected
HDMI1 disconnected
HDMI2 connected 1680x1050+1680+0 474mm x 296mm
   1680x1050      60.0*+
   1600x1000      60.0 +
   1280x1024      75.0     72.0     60.0  
   1440x900       75.0     59.9  
   1152x864       75.0  
   1024x768       75.1     70.1     60.0  
   800x600        72.2     75.0     60.3  
   640x480        75.0     72.8     66.7     60.0  
   720x400        70.1  
HDMI3 disconnected
VIRTUAL1 disconnected

Non è una connessione HDMI, non so perché pensa che lo sia. Con la GPU, sa che è DVI. Comunque...

Questo è il xorg.conf(se lo cambio, lo sovrascrive):

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "nvidia"
    Inactive "intel"
EndSection

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

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

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:1@0:0:0"
    Option "ConstrainCursor" "off"
EndSection

Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    Option "AllowEmptyInitialConfiguration" "on"
    Option "IgnoreDisplayDevices" "CRT"
EndSection

Questo è il mio 10-monitors.conffile in /usr/share/X11/xorg.conf.d/:

  GNU nano 2.2.6                                      File: /usr/share/X11/xorg.conf.d/10-monitors.conf                                                                                   

Section "Monitor"
    Identifier     "VGA1"
EndSection

Section "Monitor"
    Identifier     "HDMI2"
EndSection

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

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

Section "Screen"
   Identifier     "Screen0"
   Device         "intel0"
   Monitor        "VGA1"
   DefaultDepth   24
   SubSection     "Display"
      Depth       24
      Modes       "1680x1050" "1920x1080"
   EndSubSection
EndSection

Section "Screen"
   Identifier     "Screen1"
   Device         "intel1"
   Monitor        "HDMI2"
   DefaultDepth   24
   SubSection     "Display"
      Depth       24
      Modes       "1680x1050" "1920x1080"
   EndSubSection
EndSection

Ciò non consente ancora il debug del mio codice CUDA. Se eseguo lsof / dev / nvidia * ottengo:

COMMAND  PID     USER   FD   TYPE  DEVICE SIZE/OFF  NODE NAME
compiz  1659 cinnamon  mem    CHR 195,255          11805 /dev/nvidiactl
compiz  1659 cinnamon  mem    CHR   195,0          11806 /dev/nvidia0
compiz  1659 cinnamon   11u   CHR 195,255      0t0 11805 /dev/nvidiactl
compiz  1659 cinnamon   12u   CHR   195,0      0t0 11806 /dev/nvidia0
compiz  1659 cinnamon   13u   CHR   195,0      0t0 11806 /dev/nvidia0
compiz  1659 cinnamon   14u   CHR   195,0      0t0 11806 /dev/nvidia0

Quindi suppongo che Compiz (server X?) Lo stia ancora usando. Come posso impedirgli di usarlo?


1
Presumo che tu stia utilizzando i driver nvidia proprietari? Forse provare versioni diverse potrebbe aiutare? (Prova 384.387?) Inoltre, con quale CUDA stai sviluppando? Non ho provato su 14.04, ma sto usando CUDA8.0.61 su 17.04 con un nvidia-384 di 970M. (No iGPU qui)
Robobenklein,

1
Buono anche da controllare sarebbero i driver Intel xserver. Proverei con la minima quantità di monitor collegati e assicurerei che i controlli nvidia non vengano attivati ​​con Xserver. (Guarda l'utilità della GUI di Nvidia mentre X è in esecuzione e vedi cosa mostra lì.) Vale anche la pena controllare nvidia-debugdump -l -v -zper vedere come il tuo sistema sta riconoscendo la tua scheda.
Robobenklein,

Risposte:


0

Ho avuto successo con una configurazione a doppio monitor, con uno collegato alla mia GPU ATI dedicata e l'altro collegato all'iGPU i7-2600K.

Per farlo ho corso

xrandr --setprovideroutputsource 1 0

Funzionava perfettamente, ma è ancora considerato sperimentale e con diversi aggiornamenti del kernel da allora YMMV.

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.