Configurer Xorg pour fonctionner à partir du GPU intégré

11

J'utilise Ubuntu 14.04LTS, avec un processeur Intel + carte graphique intégrée, avec un GPU GTX650. J'ai posé cette question sur SO mais ils ont dit que c'était hors sujet.

Je veux utiliser mon GPU pour déboguer le code CUDA et pour cela, je dois changer l'affichage en intégré uniquement. Voici l'erreur que j'obtiens lorsque j'essaie de le déboguer actuellement:

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

Je suis allé dans le BIOS et j'ai basculé l'affichage principal sur iGPU (celui intégré, HD4600). Rien ne sortait plus des ports GPU (en termes d'affichage) et j'ai branché mes moniteurs sur la carte mère. Un seul des moniteurs fonctionne. Normalement, je les ai comme:

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

Dans cette configuration, avec iGPU, rien ne s'affiche sur le moniteur 1 (il est noir, mais l'ordinateur sait qu'il est là - le voyant vert est allumé et toutes mes fenêtres s'ouvrent dessus). La seule façon de le faire fonctionner est de permuter le moniteur 2 en VGA et le moniteur 1 en DVI.

Si j'entre lspci | grep VGAdans Terminal, j'obtiens ceci:

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)

La course xrandrme donne:

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

Ce n'est pas une connexion HDMI, je ne sais pas pourquoi il le pense. Avec le GPU, il sait que c'est DVI. En tous cas...

C'est le xorg.conf(si je le change, il le remplace juste):

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

Voici mon 10-monitors.confdossier en /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

Cela ne permet toujours pas de déboguer mon code CUDA. Si je lance lsof / dev / nvidia * j'obtiens:

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

Donc je suppose que Compiz (serveur X?) L'utilise toujours. Comment puis-je l'empêcher de l'utiliser?

Mewa
la source
1
Je suppose que vous utilisez des pilotes nvidia propriétaires? Peut-être qu'essayer différentes versions pourrait aider? (Essayez 384 387?) De plus, avec quel CUDA développez-vous? Je n'ai pas essayé le 14.04, mais j'utilise CUDA8.0.61 le 17.04 avec un nvidia-384 970M. (Pas d'iGPU ici)
Robobenklein
1
Il serait également bon de vérifier les pilotes Intel xserver. J'essaierais avec la quantité minimale de moniteurs branchés et je m'assurerais que les contrôles nvidia ne sont pas activés avec le Xserver. (Regardez dans l'utilitaire Nvidia GUI pendant que X est en cours d'exécution et voyez ce qui y apparaît.) Il vaut également la peine de vérifier nvidia-debugdump -l -v -zcomment votre système reconnaît votre carte.
Robobenklein

Réponses:

0

J'ai réussi avec une configuration à deux écrans, l'un connecté à mon GPU ATI dédié et l'autre connecté à l'iGPU i7-2600K.

Pour ce faire, j'ai couru

xrandr --setprovideroutputsource 1 0

Il fonctionnait parfaitement, mais il est toujours considéré comme expérimental, et avec plusieurs mises à niveau du noyau depuis lors, YMMV.

BarBar1234
la source