Várias GPUs no Linux - Como especificar qual GPU executa o Windows X


12

Estou executando o Red Hat Enterprise Linux 6.1 em um sistema com um GTX 480. Recentemente, adicionei um GTX 580 de 3 GB, pois meu aplicativo CUDA requer mais memória do que o 480. Devido a problemas de espaço na caixa, tive que coloque o 580 no barramento PCI-E mais próximo da CPU e mova o 480 para o segundo slot.

Agora, quando executo o RHEL, o Windows X está sendo executado no 580. Eu gostaria que o Windows 480 rodasse X para que os 3 GB completos estejam disponíveis no 580. Eu só tenho um monitor que só será exibido se estiver conectado ao 580 ; não há sinal se conectado ao 480.

Eu explorei algumas opções:

  1. Alterando o BIOS - não parece haver nenhuma maneira de especificar a GPU principal no meu BIOS

  2. Alterando o arquivo xorg.conf. Corri nvidia-xconfig -a. O final do meu xorg.confarquivo é anexado abaixo.

Eu pensei que eu poderia apenas remover uma das seções "Tela" e fazer com que o Screen0 utilize o Device1, mas isso impede a execução do 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

Aqui estão alguns destaques selecionados do xorg.0.log quando o X windows falha ao iniciar:

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

Você também poderia postar erros que aparecerão em você /var/log/Xorg.0.log, depois que você deixar apenas um Screenno seu xorg.confe o X não for executado?
aland 15/09/11

Não faça perguntas cruzadas.
Nhinkle 15/09

@ nhinkle: Ok - entendi.
kues 15/09/11

@aland - Acabei de publicar meu arquivo
xorg.0.log

Respostas:


1

Se eu li sua configuração corretamente, você parece ter Device0 = seu 580 no PCI 9: 0: 0 e Device1 = seu 480 no 7: 0: 0. Sua tela0 é o emparelhamento do seu 580 (Dispositivo0) no Monitor0 e sua tela1 é o par dos seus 480 e Monitor1.

Mas, por outro lado, o log de saída pensa que Layout0 é a tela tripla0, monitor0 e Dispositivo1, que não é o que você queria. Poderia ser simplesmente o fato de você precisar definir o Layout0 em sua configuração para ser a tela tripla1, monitor1, dispositivo1? Talvez uma estrofe do ServerLayout?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.