Plusieurs GPU sous Linux - Comment spécifier quel GPU exécute X windows


12

J'ai exécuté Red Hat Enterprise Linux 6.1 sur un système équipé d'une GTX 480. Récemment, j'ai ajouté une GTX 580 de 3 Go, car mon application CUDA nécessite plus de mémoire que sur la 480. En raison de problèmes d'espace dans la boîte, j'ai dû placez le 580 sur le bus PCI-E le plus proche du CPU et déplacez le 480 dans le deuxième emplacement.

Maintenant, lorsque j'exécute RHEL, X windows fonctionne sur le 580. J'aimerais que les 480 fenêtres exécutent X windows pour que les 3 Go soient disponibles sur le 580. Je n'ai qu'un seul moniteur qui ne s'affichera que s'il est connecté au 580 ; il n'y a pas de signal s'il est connecté au 480.

J'ai exploré quelques options:

  1. Changer le BIOS - il ne semble pas y avoir de moyen de spécifier le GPU principal sur mon BIOS

  2. Modification du fichier xorg.conf. J'ai couru nvidia-xconfig -a. La fin de mon xorg.conffichier est jointe ci-dessous.

Je pensais que je pouvais simplement supprimer une des sections "Screen" et que Screen0 utilise Device1 mais cela empêche X windows de fonctionner.


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

Voici les points saillants sélectionnés du xorg.0.log lorsque X windows ne démarre pas:

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

Pourriez-vous plese également publier des erreurs qui apparaissent en vous /var/log/Xorg.0.log, après avoir laissé un seul Screendans votre xorg.confet X ne fonctionne pas?
aland

Veuillez ne pas transposer les questions.
nhinkle

@nhinkle: Ok - compris.
kues

@aland - vient de publier mon fichier
xorg.0.log

Réponses:


1

Si j'ai bien lu votre configuration, vous semblez avoir Device0 = votre 580 à PCI 9: 0: 0 et Device1 = votre 480 à 7: 0: 0. Votre screen0 est le jumelage de votre 580 (Device0) sur Monitor0 et votre screen1 la paire de votre 480 et Monitor1.

Mais d'un autre côté, le journal de sortie pense que Layout0 est le triplet screen0, monitor0 et Device1, ce qui n'est pas ce que vous vouliez. Serait-ce simplement que vous devez définir Layout0 dans votre configuration pour être le triplet screen1, monitor1, device1? Peut-être une strophe ServerLayout?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.