Più GPU in Linux - Come specificare quale GPU esegue X windows


12

Ho eseguito Red Hat Enterprise Linux 6.1 su un sistema con una GTX 480. Recentemente ho aggiunto una GTX 580 da 3 GB, poiché la mia applicazione CUDA richiede più memoria rispetto alla 480. A causa di problemi di spazio nella confezione, ho dovuto posizionare il 580 sul bus PCI-E più vicino alla CPU e spostare il 480 sul secondo slot.

Ora, quando eseguo RHEL, X windows è in esecuzione sul 580. Mi piacerebbe avere 480 windows X in esecuzione, quindi il 580 completo è disponibile sul 580. Ho solo un monitor che verrà visualizzato solo se collegato al 580 ; non c'è segnale se collegato al 480.

Ho esplorato un paio di opzioni:

  1. Modifica del BIOS: non sembra esserci alcun modo per specificare la GPU primaria sul mio BIOS

  2. Modifica del file xorg.conf. Ho corso nvidia-xconfig -a. La fine del mio xorg.conffile è allegata di seguito.

Pensavo di poter semplicemente rimuovere una delle sezioni "Schermo" e fare in modo che Screen0 utilizzasse Device1 ma ciò impediva l'esecuzione di X windows.


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

Ecco alcuni punti salienti selezionati da xorg.0.log quando X windows non si avvia:

(==) 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

Potrebbe anche plese errori POST che appaiono in voi /var/log/Xorg.0.log, dopo aver lasciato sola Screennella tua xorg.confe X non riesce a correre?
aland,

Per favore, non fare domande incrociate.
Pensa al

@nink: Ok - capito.
kues,

@aland - ho appena pubblicato il mio file
xorg.0.log

Risposte:


1

Se ho letto correttamente la tua configurazione, sembra che tu abbia Device0 = il tuo 580 a PCI 9: 0: 0 e Device1 = il tuo 480 a 7: 0: 0. Lo schermo0 è l'accoppiamento del 580 (dispositivo0) su Monitor0 e lo schermo1 è la coppia di 480 e Monitor1.

D'altra parte, il registro di output pensa che Layout0 sia la schermata tripletta0, monitor0 e Device1, che non è quello desiderato. Potrebbe essere semplicemente necessario definire Layout0 nella configurazione per essere la schermata tripletta1, monitor1, dispositivo1? Forse una stanza ServerLayout?

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.