Configure o Xorg para funcionar a partir da GPU integrada

11

Estou usando o Ubuntu 14.04LTS, com uma placa gráfica Intel CPU + integrada, com uma GPU GTX650. Eu fiz essa pergunta no SO, mas eles disseram que era offtopic.

Quero usar minha GPU para depurar o código CUDA e, para isso, preciso alterar a exibição para somente integrado. Este é o erro que recebo quando tento depurá-lo atualmente:

"All cuda devices are used for display and cannot be used while debugging"

Entrei no BIOS e troquei o monitor primário para iGPU (o integrado, HD4600). Nada mais saiu das portas da GPU (em termos de exibição) e eu conectei meus monitores na placa-mãe. Apenas um dos monitores funciona. Normalmente eu os tenho como:

|[Monitor 1, VGA]| |[Monitor 2, DVI]|

Nessa configuração, com o iGPU, nada é exibido no Monitor 1 (é preto, mas o computador sabe que está lá - a luz verde está acesa e todas as minhas janelas se abrem). A única maneira de fazê-lo funcionar é trocar o Monitor 2 para VGA e o Monitor 1 para DVI.

Se eu entrar lspci | grep VGAno Terminal, recebo o seguinte:

00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)

Correr xrandrme dá:

Screen 0: minimum 8 x 8, current 3360 x 1050, maximum 16384 x 16384
DVI-D-0 disconnected primary (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
VGA1 connected 1680x1050+0+0 474mm x 296mm
   1680x1050      60.0*+
   1600x1000      60.0 +
   1280x1024      75.0     72.0     60.0  
   1440x900       75.0     59.9  
   1152x864       75.0  
   1024x768       75.1     70.1     60.0  
   800x600        72.2     75.0     60.3  
   640x480        75.0     72.8     66.7     60.0  
   720x400        70.1  
DP1 disconnected
HDMI1 disconnected
HDMI2 connected 1680x1050+1680+0 474mm x 296mm
   1680x1050      60.0*+
   1600x1000      60.0 +
   1280x1024      75.0     72.0     60.0  
   1440x900       75.0     59.9  
   1152x864       75.0  
   1024x768       75.1     70.1     60.0  
   800x600        72.2     75.0     60.3  
   640x480        75.0     72.8     66.7     60.0  
   720x400        70.1  
HDMI3 disconnected
VIRTUAL1 disconnected

Não é uma conexão HDMI, não sei por que ela pensa que é. Com a GPU, ela sabe que é DVI. De qualquer forma...

Este é o xorg.conf(se eu mudar, ele apenas sobrescreve):

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "nvidia"
    Inactive "intel"
EndSection

Section "Device"
    Identifier "intel"
    Driver "intel"
    BusID "PCI:0@0:2:0"
    Option "AccelMethod" "SNA"
EndSection

Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:1@0:0:0"
    Option "ConstrainCursor" "off"
EndSection

Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    Option "AllowEmptyInitialConfiguration" "on"
    Option "IgnoreDisplayDevices" "CRT"
EndSection

Este é o meu 10-monitors.confarquivo em /usr/share/X11/xorg.conf.d/:

  GNU nano 2.2.6                                      File: /usr/share/X11/xorg.conf.d/10-monitors.conf                                                                                   

Section "Monitor"
    Identifier     "VGA1"
EndSection

Section "Monitor"
    Identifier     "HDMI2"
EndSection

Section "Device"
   Identifier      "intel0"
   Driver          "intel"
   BusID           "PCI:0@0:2:0"
EndSection

Section "Device"
   Identifier      "intel1"
   Driver          "intel"
   BusID           "PCI:0@0:2:0"
EndSection

Section "Screen"
   Identifier     "Screen0"
   Device         "intel0"
   Monitor        "VGA1"
   DefaultDepth   24
   SubSection     "Display"
      Depth       24
      Modes       "1680x1050" "1920x1080"
   EndSubSection
EndSection

Section "Screen"
   Identifier     "Screen1"
   Device         "intel1"
   Monitor        "HDMI2"
   DefaultDepth   24
   SubSection     "Display"
      Depth       24
      Modes       "1680x1050" "1920x1080"
   EndSubSection
EndSection

Isso ainda não permite que meu código CUDA seja depurado. Se eu executar lsof / dev / nvidia *, recebo:

COMMAND  PID     USER   FD   TYPE  DEVICE SIZE/OFF  NODE NAME
compiz  1659 cinnamon  mem    CHR 195,255          11805 /dev/nvidiactl
compiz  1659 cinnamon  mem    CHR   195,0          11806 /dev/nvidia0
compiz  1659 cinnamon   11u   CHR 195,255      0t0 11805 /dev/nvidiactl
compiz  1659 cinnamon   12u   CHR   195,0      0t0 11806 /dev/nvidia0
compiz  1659 cinnamon   13u   CHR   195,0      0t0 11806 /dev/nvidia0
compiz  1659 cinnamon   14u   CHR   195,0      0t0 11806 /dev/nvidia0

Então eu acho que o Compiz (servidor X?) Ainda está usando. Como faço para impedi-lo de usá-lo?

Mewa
fonte
1
Presumo que você esteja usando drivers proprietários da nvidia? Talvez tentar versões diferentes possa ajudar? (Tente 384.387?) Além disso, com o que CUDA você está desenvolvendo? Eu não tentei no 14.04, mas estou usando o CUDA8.0.61 no 17.04 com uma nvidia-384 da 970M. (Não há iGPU aqui)
Robobenklein 11/01
1
Também é bom verificar os drivers intel xserver. Eu tentaria com a quantidade mínima de monitores conectados e garantiria que os controles da nvidia não estivessem sendo ativados com o Xserver. (Procure no utilitário da Nvidia GUI enquanto o X está em execução e veja o que é exibido lá.) Também vale a pena verificar nvidia-debugdump -l -v -zcomo o sistema reconhece a sua placa.
Robobenklein 12/01/19

Respostas:

0

Tive sucesso com uma configuração de monitor duplo, com um conectado à minha GPU ATI dedicada e o outro conectado à iGPU i7-2600K.

Para fazer isso, eu corri

xrandr --setprovideroutputsource 1 0

Costumava funcionar perfeitamente, mas ainda é considerado experimental e com várias atualizações do kernel desde então o YMMV.

BarBar1234
fonte