If I'm using my GPU for CUDA computations and I want to use my CPU to manage the display, is there a way to get Xorg to use the CPU and the motherboard's HDMI slot instead of the GPU and its HDMI slot? Right now I'm maxing out the computational power of my GPU and Unity is really slow but my CPU is idling.
2 Answers
This answer: Use integrated graphics for display and NVIDIA GPU for CUDA on Ubuntu 14.04 appears relevant for you.
In summary setting up /etc/X11/xorg.conf as follows:
Section "ServerLayout"
Identifier "layout"
Screen 0 "intel"
Screen 1 "nvidia"
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
Read the entire post for more details.
Reply to comments
According Asus Canada specs:
Integrated Graphics Processor- Intel® HD Graphics support Multi-VGA output support : HDMI/DVI-D/RGB/DisplayPort ports - Supports HDMI with max. resolution 4096 x 2160 @ 24 Hz / 2560 x 1600 @ 60 Hz - Supports DVI-D with max. resolution 1920 x 1200 @ 60 Hz - Supports RGB with max. resolution 1920 x 1200 @ 60 Hz - Supports DisplayPort with max. resolution 4096 x 2304 @ 60 Hz Maximum shared memory of 512 MB Supports Intel® InTru™ 3D, Quick Sync Video, Clear Video HD Technology, Insider™ Supports up to 3 displays simultaneously DP 1.2 Multi-Stream Transport compliant, supports DP 1.2 monitor daisy chain up to 3 displays
I suggest temporarily taking out your two nVidia cards, plugging a monitor into the on-board HDMI port and booting with a Live USB to runs tests with Ubuntu.
It is important to know your CPU. Discover this using:
cat /proc/cpuinfo | grep 'model name'
and report back.
- 105,762
You can use modesetting driver.
Warning
Running a misconfigured X server may freeze the computer in such a way that Ctrl+Alt+F3 no longer switches to virtual terminal.
You have a few options:
- Boot into recovery mode or USB etc.
- If you have a
sshdrunning on the computer, you may try tosshinto it using a different machine, delete the incorrect configuration file, and reboot. - I use the following. Open virtual terminal 4, type
while sleep 120; do chvt 4; done &. That way, if something goes wrong, just wait for 2 minutes and you'll get back to virtual terminal 4.
Also useful to know: Hold down Alt, press SysRq, then press Enter (or any unrecognized key) will print out a help menu, which says you can press b to reboot (as long as Alt remains held).
Use modesetting driver
The documentation can be found at man modesetting.
Caveat: On my machine, sometimes the screen randomly freezes with
[~]$ sudo dmesg
[ 6048.632746] [drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00004700] Flip event timeout on head 1
and I don't know why. Still, it mostly works… I think.
For safety measure, you may want to turn off all but one monitor, if you have multiple.
Steps
Make sure xserver-xorg-video-modesetting package is installed.
Create a new file /etc/X11/xorg.conf.d/10-software-driver.conf with the content
Section "Device"
Identifier "randomname"
Driver "modesetting"
Option "AccelMethod" "none"
EndSection
Then restart the X server. In a virtual terminal:
sudo service gdm restart
You may want to ps -f -p $(pgrep gdm). If you see gdm-x-session then X server is probably correctly configured, if you see gdm-wayland-session then probably not.
If X server is correctly started, you may want to check that the GPU is indeed not used by
nvidia-smi
If No running processes found is seen, it is working.
Troubleshooting
The log for X server can be found from journalctl. The following conveniently shows the log of the last start of X server:
journalctl -b | tac | sed '/X Server/,$d' | tac | less
It can also be found in /var/log/Xorg.*.log or ~/.local/share/xorg/Xorg.*.log.
Use fbdev driver (failed attempt)
There are some guide to use fbdev instead. So far I have tried this, but it doesn't work.
First install package xserver-xorg-video-fbdev.
Then in /etc/X11/xorg.conf.d/10-software-driver.conf put
Section "Device"
Identifier "randomname"
Driver "fbdev"
Option "fbdev" "/dev/fb0"
BusId "pci:71:00:0"
EndSection
Supposedly the BusId is obtained by
[~]$ lspci | grep VGA
47:00.0 VGA compatible controller: NVIDIA Corporation TU117GLM [Quadro T1000 Mobile] (rev a1)
and convert 0x47 to decimal = 71.
Also on my machine head -c10000000 /dev/urandom > /dev/fb0 in a virtual terminal does fill the screen with random content.
Still, it doesn't work.
I already fixed the following issues
- after seeing
(EE) no screens found(EE)and(EE) No devices detected., I add theBusIdcorrectly - because I get
(EE) open /dev/fb0: Permission denied, I readman Xorg.wrap, and modify/etc/X11/Xwrapper.configto addneeds_root_rights=yes; and also add the relevant users tovideogroup
It still doesn't work with error messages (EE) FBDEV(0): FBIOPUTCMAP: Device or resource busy which I don't know how to fix.
Other drivers (failed attempt)
I tried vesa or nouveau, but some error happens and X chooses to use nvidia driver anyway.
- 151