I've seen solutions to this problem in other places but which involve xrandr
detecting all graphics cards, but that doesn't happen on my computer, so here goes:
My laptop has an Nvidia GPU and an Intel graphics card. I would like the Nvidia card to be detected and available for CUDA, Tensorflow etc but not used for graphics. This is the hardware:
lspci|grep VGA
00:02.0 VGA compatible controller: Intel Corporation Device 3e9b
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1f10 (rev a1)
And hardinfo
shows this for Graphics:
-Display-
Resolution : 1920x1080 pixels
OpenGL Renderer : Mesa DRI Intel(R) UHD Graphics 630 (CFL GT2)
X11 Vendor : The X.Org Foundation
so the graphics go via the Intel card.
One of the problems often listed as the cause for the Intel card not seeing the HDMI port is that the port is physically connected to the Nvidia card only, so if the other card is used, HDMI is unreachable. With xrandr
I only see the laptop screen so I am assuming that that is the case for me.
I tried to find out if that is the case on my system so that I can use xrandr --setprovideroffloadsink
to render on the Intel then send to the HDMI via the Nvidia. But
xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x43 cap: 0x9, Source Output, Sink Offload crtcs: 3 outputs: 1 associated providers: 0 name:modesetting
where in the examples I could find this would give two cards (named Nvidia and Intel or similar) I have no idea what to do with this?
It turned out to be a problem of the prime select mode of the Nvidia card as discussed here. Disabling the nvidia-drm modeset solved the problem for me.