Настройте Xorg для работы с интегрированной видеокартой.

Вопрос или проблема

Я использую Ubuntu 14.04LTS, с процессором Intel и интегрированной графикой, а также с видеокартой GTX650. Я задавал этот вопрос на SO, но мне сказали, что это не по теме.

Я хочу использовать свою видеокарту для отладки CUDA-кода, и для этого мне нужно отключить внешний дисплей и использовать только интегрированный. Вот ошибка, которую я получаю, когда пытаюсь отладить код в настоящее время:

"Все устройства CUDA используются для отображения и не могут быть использованы при отладке"

Я зашел в BIOS и переключил основной дисплей на iGPU (интегрированную графику, HD4600). С портов видеокарты больше ничего не отображается (в плане отображения), и я подключил свои мониторы к материнской плате. Работает только один из мониторов. Обычно у меня конфигурация такая:

|[Монитор 1, VGA]| |[Монитор 2, DVI]|

В этой конфигурации, с iGPU, ничего не отображается на Мониторе 1 (он черный, но компьютер знает, что он есть – зеленый индикатор горит, и все мои окна открываются на нем). Единственный способ заставить его работать – это поменять Монитор 2 на VGA и Монитор 1 на DVI.

Если я введу lspci | grep VGA в терминал, я получаю это:

00:02.0 VGA совместимый контроллер: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 VGA совместимый контроллер: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)

Запуск xrandr дает мне:

Экран 0: минимальное 8 x 8, текущий 3360 x 1050, максимальное 16384 x 16384
DVI-D-0 отключен основной (нормальный левый инвертированный правый по оси x по оси y)
HDMI-0 отключен (нормальный левый инвертированный правый по оси x по оси y)
VGA1 подключен 1680x1050+0+0 474мм x 296мм
   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 отключен
HDMI1 отключен
HDMI2 подключен 1680x1050+1680+0 474мм x 296мм
   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 отключен
VIRTUAL1 отключен

Это не HDMI-соединение, я не знаю, почему он так считает. С видеокартой он знает, что это DVI. В любом случае…

Вот xorg.conf (если я изменю его, он просто перезаписывается):

Секция "ServerLayout"
    Идентификатор "layout"
    Экран 0 "nvidia"
    Неактивный "intel"
КонецСекции

Секция "Устройство"
    Идентификатор "intel"
    Драйвер "intel"
    BusID "PCI:0@0:2:0"
    Опция "AccelMethod" "SNA"
КонецСекции

Секция "Экран"
    Идентификатор "intel"
    Устройство "intel"
КонецСекции

Секция "Устройство"
    Идентификатор "nvidia"
    Драйвер "nvidia"
    BusID "PCI:1@0:0:0"
    Опция "ConstrainCursor" "off"
КонецСекции

Секция "Экран"
    Идентификатор "nvidia"
    Устройство "nvidia"
    Опция "AllowEmptyInitialConfiguration" "on"
    Опция "IgnoreDisplayDevices" "CRT"
КонецСекции

Это мой файл 10-monitors.conf в /usr/share/X11/xorg.conf.d/:

  GNU nano 2.2.6                                      Файл: /usr/share/X11/xorg.conf.d/10-monitors.conf                                                                                   

Секция "Монитор"
    Идентификатор     "VGA1"
КонецСекции

Секция "Монитор"
    Идентификатор     "HDMI2"
КонецСекции

Секция "Устройство"
   Идентификатор      "intel0"
   Драйвер          "intel"
   BusID           "PCI:0@0:2:0"
КонецСекции

Секция "Устройство"
   Идентификатор      "intel1"
   Драйвер          "intel"
   BusID           "PCI:0@0:2:0"
КонецСекции

Секция "Экран"
   Идентификатор     "Screen0"
   Устройство         "intel0"
   Монитор        "VGA1"
   DefaultDepth   24
   Подсекция     "Отображение"
      Глубина       24
      Режимы       "1680x1050" "1920x1080"
   КонецПодсекции
КонецСекции

Секция "Экран"
   Идентификатор     "Screen1"
   Устройство         "intel1"
   Монитор        "HDMI2"
   DefaultDepth   24
   Подсекция     "Отображение"
      Глубина       24
      Режимы       "1680x1050" "1920x1080"
   КонецПодсекции
КонецСекции

Это все равно не позволяет отлаживать мой CUDA-код. Если я запущу lsof /dev/nvidia*, я получаю:

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

Так что я предполагаю, что Compiz (X сервер?) все еще его использует. Как мне остановить его от использования?

У меня был успех с конфигурацией из двух мониторов, один подключен к моей видеокарте ATI, а другой подключен к интегрированной графике i7-2600K.

Для этого я запустил

xrandr --setprovideroutputsource 1 0

Раньше это работало безупречно, но это все еще считается экспериментальным, и с несколькими обновлениями ядра с тех пор, возможно, будут отличия.

Это специально для настройки xorg для работы с интегрированной графикой:

Важно знать, что xrandr не может работать с любой графической дисплеем, который он не видит, что устанавливается конфигурацией xorg. https://unix.stackexchange.com/questions/146842/regenerate-xorg-conf-with-current-settings

Xorg -configure или “Вы можете указать, какой дисплей использовать с Xorg :1 -configure “Это создаст файл /root/xorg.conf.new, который вы затем можете скопировать в /etc/X11/xorg.conf: cp /root/xorg.conf.new /etc/X11/xorg.confhttps://fedoraproject.org/wiki/How_to_create_xorg.conf”

Это очень устаревшая версия Ubuntu. Обновите до как минимум 18.04, а лучше до 20.04 или новее.

Во-вторых, обновите прошивку вашей системы.

Затем попробуйте снова и дайте нам знать.

Ответ или решение

Настройка Xorg для работы с интегрированным графическим процессором (iGPU) в Ubuntu 14.04 LTS

Введение

Использование интегрированного графического процессора для отладки CUDA-кода может потребовать определенной конфигурации системы, особенно в условиях некоторой сложности, связанной с одновременным использованием дискретного графического процессора (GTX650). Рассмотрим, как правильно настроить Xorg и устранить проблемы, возникающие при попытке переключения на iGPU.

Шаг 1: Подготовка системы

  1. Обновление системы: Поскольку вы используете Ubuntu 14.04, идеально было бы обновить вашу систему до более новой версии (например, 18.04 или 20.04), так как поддержка более старых версий может быть ограничена.
  2. Обновление BIOS: Проверьте, доступны ли обновления для BIOS вашей материнской платы. Иногда обновление прошивки системы может улучшить совместимость с интегрированной графикой.

Шаг 2: Конфигурация BIOS

Вы уже упомянули, что изменили настройки BIOS, переключив основной графический адаптер на iGPU. Убедитесь, что это изменение успешно применено, и что мониторы подключены к соответствующим портам на материнской плате.

Шаг 3: Проверка подключения мониторов

Обратите внимание на то, как подключены мониторы. Если только один монитор работает, попробуйте поменять порты или кабели, чтобы убедиться, что проблема не в них.

Шаг 4: Настройка Xorg

Для настройки файлов конфигурации Xorg выполните следующие действия.

  1. Создание резервной копии конфигурации Xorg:

    sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
  2. Создание нового xorg.conf файла:
    Запустите Xorg с командой конфигурации:

    sudo Xorg -configure

    Это создаст файл /root/xorg.conf.new.

  3. Копирование нового конфигурационного файла:
    Затем скопируйте созданный файл в стандартное место:

    sudo cp /root/xorg.conf.new /etc/X11/xorg.conf
  4. Редактирование xorg.conf:
    Отредактируйте файл /etc/X11/xorg.conf, чтобы он выглядел следующим образом:

    Section "ServerLayout"
       Identifier "layout"
       Screen 0 "IntelScreen"
       Option "Xinerama" "0"  # Включите эту опцию, если не хотите использовать Xinerama
    EndSection
    
    Section "Device"
       Identifier  "IntelDevice"
       Driver      "intel"
       BusID       "PCI:0@0:2:0"
       Option      "AccelMethod" "sna"
    EndSection
    
    Section "Screen"
       Identifier "IntelScreen"
       Device "IntelDevice"
       Monitor "MonitorVGA1"
    EndSection
    
    Section "Monitor"
       Identifier "MonitorVGA1"
    EndSection
    
    Section "Device"
       Identifier "NvidiaDevice"
       Driver "nvidia"
       BusID "PCI:1@0:0:0"
       Option "UseDisplayDevice" "none"
    EndSection

    Важным моментом здесь является использование опции UseDisplayDevice "none" для Nvidia, чтобы предотвратить использование дискретного графического процессора.

Шаг 5: Остановка процессов, использующих GPU

Если после перезагрузки проблема все еще существует, необходимо убедиться, что никакие другие процессы не используют графические устройства NVIDIA:

  1. Завершение процессов:
    Используйте команду kill или killall для завершения процесса, использующего GPU:

    sudo killall compiz
  2. Проверка процессов:
    После завершения проверьте занятость устройств снова:

    lsof /dev/nvidia*

Шаг 6: Перезагрузка Xorg

Перезапустите сервер X:

sudo service lightdm restart

Или просто перезагрузите систему.

Заключение

Настройка Xorg для использования интегрированной графики в Ubuntu может быть сложной задачей, но с правильным подходом вы сможете справиться с этой задачей эффективно. Важно следовать описанным шагам и быть осторожным с конфигурациями, чтобы избежать проблем в будущем. Если проблемы продолжаются, вам может потребоваться дополнительная диагностика или поддержка сообщества.

Оцените материал
Добавить комментарий

Капча загружается...