Varias GPU en Linux: cómo especificar qué GPU ejecuta X windows


12

He estado ejecutando Red Hat Enterprise Linux 6.1 en un sistema con una GTX 480. Recientemente agregué una GTX 580 de 3GB, ya que mi aplicación CUDA requiere más memoria de la que tengo en la 480. Debido a problemas de espacio en la caja, tuve que coloque el 580 en el bus PCI-E más cercano a la CPU y mueva el 480 a la segunda ranura.

Ahora, cuando ejecuto RHEL, X windows se está ejecutando en el 580. Me gustaría que el 480 ejecute X windows para que el 3GB completo esté disponible en el 580. Solo tengo un monitor que solo se mostrará si está conectado al 580 ; no hay señal si está conectado al 480.

He explorado un par de opciones:

  1. Cambiar el BIOS: no parece haber ninguna forma de especificar la GPU primaria en mi BIOS

  2. Alterando el archivo xorg.conf. Me encontré nvidia-xconfig -a. El final de mi xorg.confarchivo se adjunta a continuación.

Pensé que podría eliminar una de las secciones de "Pantalla" y hacer que Screen0 utilice el Dispositivo1, pero eso evita que X windows se ejecute.


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

Aquí hay algunos aspectos destacados seleccionados de xorg.0.log cuando X windows no puede iniciarse:

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

¿Podría también publicar errores que aparecen en usted /var/log/Xorg.0.log, después de dejar solo uno Screenen su xorg.confy X no se ejecuta?
aland

Por favor, no publique preguntas cruzadas.
nhinkle

@nhinkle: Ok, lo tengo.
Kues

@aland - acabo de publicar mi archivo
xorg.0.log

Respuestas:


1

Si leo su configuración correctamente, parece que tiene Device0 = su 580 en PCI 9: 0: 0 y Device1 = su 480 a 7: 0: 0. Su pantalla0 es el emparejamiento de su 580 (Dispositivo0) en Monitor0 y su pantalla1 el par de su 480 y Monitor1.

Pero, por otro lado, el registro de salida cree que Layout0 es la pantalla de triplete0, monitor0 y Dispositivo1, que no es lo que quería. ¿Podría ser simplemente que necesita definir Layout0 en su configuración para ser el triplete screen1, monitor1, device1? ¿Quizás una estrofa de ServerLayout?

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.