Mehrere GPUs unter Linux - Festlegen, auf welcher GPU X-Fenster ausgeführt werden

12

Ich habe Red Hat Enterprise Linux 6.1 auf einem System mit einer GTX 480 ausgeführt. Kürzlich habe ich eine 3 GB GTX 580 hinzugefügt, da meine CUDA-Anwendung mehr Speicher benötigt als die 480. Aufgrund von Platzproblemen in der Box musste ich Setzen Sie den 580 auf den PCI-E-Bus, der der CPU am nächsten liegt, und schieben Sie den 480 in den zweiten Steckplatz.

Wenn ich RHEL starte, läuft X-Windows auf dem 580. Ich möchte, dass 480 X-Windows laufen, damit die vollen 3 GB auf dem 580 verfügbar sind. Ich habe nur einen Monitor, der nur angezeigt wird, wenn er mit dem 580 verbunden ist ; Bei Anschluss an den 480 ist kein Signal vorhanden.

Ich habe ein paar Optionen untersucht:

  1. Ändern des BIOS - Es scheint keine Möglichkeit zu geben, die primäre GPU in meinem BIOS anzugeben

  2. Ändern der Datei xorg.conf. Ich rannte nvidia-xconfig -a. Das Ende meiner xorg.confDatei ist unten angefügt.

Ich dachte, ich könnte einfach einen der "Screen" -Abschnitte entfernen und Screen0 "Device1" verwenden lassen, aber das verhindert, dass X-Fenster ausgeführt werden.


Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GTX 580" BusID "PCI:9:0:0" EndSection    
Section "Device" Identifier "Device1" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GTX 480" BusID "PCI:7:0:0" EndSection
Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 EndSubSection EndSection
Section "Screen" Identifier "Screen1" Device "Device1" Monitor "Monitor1" DefaultDepth 24 SubSection "Display" Depth 24 EndSubSection EndSection

Hier sind ausgewählte Highlights aus dem xorg.0.log, wenn X-Fenster nicht gestartet werden kann:

(==) Using config file: "/etc/X11/xorg.conf"
(==) ServerLayout "Layout0"
(**) |-->Screen "Screen0" (0)
(**) |   |-->Monitor "Monitor0"
(**) |   |-->Device "Device1"
...
(--) PCI: (0:7:0:0) 10de:06c0:10de:075f nVidia Corporation GF100 [GeForce GTX 480] rev 163, Mem @ 0xf6000000/33554432, 0xc8000000/134217728, 0xd0000000/67108864, I/O @ 0x0000dc00/128, BIOS @ 0x????????/524288
(--) PCI:*(0:9:0:0) 10de:1080:19da:2203 nVidia Corporation GF110 [Geforce GTX 580] rev 161, Mem @ 0xfa000000/16777216, 0xd8000000/134217728, 0xd6000000/33554432, I/O @ 0x0000ec00/128, BIOS @ 0x????????/524288
...
(II) Module nvidia: vendor="NVIDIA Corporation"
    compiled for 4.0.2, module version = 1.0.0
    Module class: X.Org Video Driver
(II) NVIDIA dlloader X Driver  270.41.19  Mon May 16 23:33:35 PDT 2011
(II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
(II) Primary Device is: PCI 09@00:00:0
...
(**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
(==) NVIDIA(0): RGB weight 888
(==) NVIDIA(0): Default visual is TrueColor
(==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
(II) Sep 15 16:18:27 NVIDIA(0): NVIDIA GPU GeForce GTX 480 (GF100) at PCI:7:0:0 (GPU-0)
(--) Sep 15 16:18:27 NVIDIA(0): Memory: 1572864 kBytes
(--) Sep 15 16:18:27 NVIDIA(0): VideoBIOS: 70.00.21.00.02
(II) Sep 15 16:18:27 NVIDIA(0): Detected PCI Express Link width: 8X
(--) Sep 15 16:18:27 NVIDIA(0): Interlaced video modes are supported on this GPU
(--) Sep 15 16:18:27 NVIDIA(0): Connected display device(s) on GeForce GTX 480 at PCI:7:0:0
(--) Sep 15 16:18:27 NVIDIA(0):     none
(EE) Sep 15 16:18:27 NVIDIA(0): No display devices found for this X screen.
(II) UnloadModule: "nvidia"
(II) UnloadModule: "wfb"
(II) UnloadModule: "fb"
(EE) Screen(s) found, but none have a usable configuration.

Fatal server error:
no screens found
kues
quelle
Könnten Sie bitte auch Fehler posten, die in Ihnen auftreten /var/log/Xorg.0.log, nachdem Sie nur einen Screenin Ihrem hinterlassen xorg.confund X nicht ausgeführt werden kann?
Aland
Fragen bitte nicht überkreuzen.
Nhinkle
@nhinkle: Ok - habs verstanden.
15.
@aland - habe gerade meine xorg.0.log-Datei gepostet
kues

Antworten:

1

Wenn ich Ihre Konfiguration richtig gelesen habe, haben Sie anscheinend Device0 = Ihre 580 bei PCI 9: 0: 0 und Device1 = Ihre 480 bei 7: 0: 0. Ihr Bildschirm0 ist die Paarung Ihres 580 (Device0) auf Monitor0 und Ihr Bildschirm1 das Paar Ihres 480 und Monitor1.

Andererseits geht das Ausgabeprotokoll davon aus, dass Layout0 das Triplett screen0, monitor0 und Device1 ist , was Sie nicht wollten. Könnte es einfach sein, dass Sie Layout0 in Ihrer Konfiguration als Triplett-Bildschirm1, Monitor1, Gerät1 definieren müssen? Vielleicht eine ServerLayout-Zeilengruppe?

Immer lernen
quelle