Konfigurieren Sie Xorg so, dass es von einer integrierten GPU aus funktioniert

11

Ich verwende Ubuntu 14.04LTS mit einer in Intel CPU + integrierten Grafik und einer GTX650-GPU. Ich habe diese Frage auf SO gestellt, aber sie sagten, sie sei offtopisch.

Ich möchte meine GPU zum Debuggen von CUDA-Code verwenden und dafür muss ich die Anzeige auf nur integriert ändern. Dies ist der Fehler, den ich bekomme, wenn ich versuche, ihn aktuell zu debuggen:

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

Ich ging ins BIOS und stellte die primäre Anzeige auf iGPU (die integrierte, HD4600) um. Aus den GPU-Ports kam nichts mehr heraus (in Bezug auf die Anzeige) und ich steckte meine Monitore in das Motherboard. Nur einer der Monitore funktioniert. Normalerweise habe ich sie wie:

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

In dieser Konfiguration wird mit iGPU auf Monitor 1 nichts angezeigt (es ist schwarz, aber der Computer weiß, dass es vorhanden ist - das grüne Licht leuchtet und alle meine Fenster öffnen sich darauf). Die einzige Möglichkeit, es zum Laufen zu bringen, besteht darin, Monitor 2 gegen VGA und Monitor 1 gegen DVI auszutauschen.

Wenn ich das lspci | grep VGATerminal betrete, erhalte ich Folgendes:

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)

Laufen xrandrgibt mir:

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

Es ist keine HDMI-Verbindung, ich weiß nicht, warum es denkt, dass es so ist. Mit der GPU weiß es, dass es DVI ist. Wie auch immer...

Dies ist das xorg.conf(wenn ich es ändere, überschreibt es es einfach):

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

Dies ist meine 10-monitors.confDatei 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

Dadurch kann mein CUDA-Code immer noch nicht debuggt werden. Wenn ich lsof / dev / nvidia * starte, bekomme ich:

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

Compiz (X-Server?) Verwendet es also immer noch. Wie kann ich verhindern, dass es verwendet wird?

Mewa
quelle
1
Ich nehme an, Sie verwenden proprietäre NVIDIA-Treiber? Vielleicht könnte es helfen, verschiedene Versionen auszuprobieren? (Versuchen Sie es mit 384.387?) Mit welcher CUDA entwickeln Sie? Ich habe 14.04 noch nicht ausprobiert, aber ich verwende CUDA8.0.61 am 17.04 mit einem 970M nvidia-384. (Keine iGPU hier)
Robobenklein
1
Ebenfalls gut zu überprüfen wären die Intel XServer-Treiber. Ich würde es mit der minimalen Anzahl angeschlossener Monitore versuchen und sicherstellen, dass die NVIDIA-Steuerelemente nicht mit dem Xserver aktiviert werden. (Sehen Sie im Nvidia-GUI-Dienstprogramm nach, während X ausgeführt wird, und sehen Sie, was dort angezeigt wird.) Überprüfen Sie auch nvidia-debugdump -l -v -z, wie Ihr System Ihre Karte erkennt.
Robobenklein

Antworten:

0

Ich hatte Erfolg mit einem Dual-Monitor-Setup, bei dem einer an meine dedizierte ATI-GPU und der andere an die i7P600K iGPU angeschlossen war.

Dazu bin ich gelaufen

xrandr --setprovideroutputsource 1 0

Früher funktionierte es einwandfrei, aber es wird immer noch als experimentell angesehen und seitdem mit mehreren Kernel-Upgrades YMMV.

BarBar1234
quelle