How to make use of dGPU and iGPU?


I'm on Arch (btw.) and I have a Intel i5-14600K CPU with a iGPU (UHD Graphics 770) (GPU 1) in it and a dGPU from Nvidia, the RTX 3060 (GPU 0). I have one monitor connected to the 3060 via display port 1.4.

I can see both GPUs in GNOME Mission Center, but hte iGPU has always Clock Speed 0 and Utilization 0. So anything which is done on the GPU is done on the 3060.

I want to seperate what is done on the iGPU and what is done on the 3060:

dGPU (RTX 3060):
1. Video editing
2. video transcoding
3. AI stuff (ollama)
4. Machine learning
5. Blender
6. Steam games

iGPU (intel):
1. Firefox (especially YouTube video decoding, it has hw acceleration for that)
2. Chrome
3. Libre Office
4. GNOME
5. etc.

I wonder if this or at least parts of it is possible. I need the whole 12 GB VRAM on the 3060 for ollama, and the iGPU is just sitting there doing nothing. Is there a way to distribute the work? Do I need two screens for that or something?

It might also be that I'm misunderstanding how the whole thing works or over estimating Linuxes capabilities.

in reply to Jeena

I'm going to assume that it is possible to put both the dedicated and integrated GPUs to work, though I've never seen this kind of setup.

This is likely not something you want to actually do.

The integrated GPU in your processor is not an additional bit of computing power your computer is not using, but special software that can use your processor to put out graphics if a dedicated GPU is missing. It is extremely inferior at processing graphics compared to the real dedicated GPU, and if you were running firefox to watch (Not decode) youtube, you would very likely see things like screen tearing as the processor struggled to keep up.

If you wanted to do this just to see the outcome for yourself, you could switch your displayport cable to your monitor to connect to your motherboard instead of your GPU to get an idea of how rough this would be. If you wanted to continue after seeing this, I believe you would need to connect a 2nd monitor in order to use both the dedicated and integrated GPUs.

don't like this

in reply to Pogogunner

I'm going to assume that it is possible to put both the dedicated and integrated GPUs to work, though I've never seen this kind of setup.

Every single laptop with a dGPU does that, as I'm typing this now only Minecraft is using the dGPU while everything else is on the iGPU. Everything is fully performant (including YT videos), and it greatly increases battery life.

Linux reshared this.

in reply to Pogogunner

At least on Debian based distros, it's all part of the driver installation.

As for how it works at the hardware/kernel level the iGPU take some of system RAM to use as VRAM, so all the kernel has to do is give the dGPU a DMA buffer into that. The final piece is for the iGPU driver to send a synchronisation signal to the dGPU when it's ready to receive the (partial-)frame.

Linux reshared this.

in reply to Pogogunner

This entry was edited (1 year ago)
in reply to Jeena

So desktops don't work like laptops in this sense.

On a laptop, the bus for the video output ports can be connected to one or both GPUs, and the software does the graphics switching or offloading.

On a desktop, there is no consolidated bus between the PCIe card and the onboard graphics, so you can't switch between which GPU is rendering what on hardware alone. It's the whole display that is rendered on the device you're plugged into.

Windows does have some sort of offloading utility that allows for this i believe, but I've never used it so don't know how well it works.

On Linux, your display server (X or Wayland) needs to address one GPU at a time to render things.

You can totally use both GPUs with multiple monitors, but I think that's defeating the purpose you have in mind.

This entry was edited (1 year ago)
in reply to Jeena

in reply to Jeena