UE 5 - learn to implement multi-GPU

I’m starting my first game in 12 years and I’m dead set on implementing multi-gpu support. Preferably I want to use Vulkan over DX, but if I have to use DX to implement this I will. I’ve always been a hard fan of SLI and mGPU, but nobody seems to care about it anymore. I polled my test group and 65% use SLI, as do I on two different computers, one with 2080 Ti’s and one with 3090s. NVIDIA has pulled the alternate frame modes from Ampere, and moved to native implementation, so here I am. Could someone help me learn to do this?

I’ve searched the web for training resources and found jack ■■■■. A complication is that I want to use Vulkan Ray Tracing, for compatibility, so that’s gonna hurt my progress, but I’m willing to do whatever it takes and sacrifice Vulkan if I must. I’m trained in game development, but I’ve never done it in a work environment. I learned on Unity, but grew up with Unreal so I know UDK and the unreal tournament map editor, so I’ve got the basics of the UI down.

I’m willing to use UE4 if I must. I asked on the UE subreddit, but was told it was outside the scope of what people would know there and was pointed towards macros, but IDK how a macro would help with this.

The techs I would like to use are these, and yes, some conflict and will have to be sacrificed, but multi-GPU and ray tracing are non negotiable, making this very hard:
-DLSS
-RTX
-Vulkan Ray tracing (conflict)
-Vulkan in general (conflict)
-DX12 as a backup, for mGPU

2 Likes

Supposedly it is possible to make your game use SLI, however you need to work with Nvidia on how to set it up.

I strongly recommend against it though, as you probably know it’s a feature that’s been dropped from most new GPU’s due to lack of interest, it’s probably much more trouble to implement than it will be worth to your game. If it’s something you are determined to do then it will not be easy and it’ll be very technical.

There are a ton of multi-gpu systems out there. It’s extremely common for content creators and with so many offline renderers taking advantage of such systems it makes sense people want to see real time renderers do the same.

It’s not surprising to see this question comes up but they always seem to get bashed down by naysayers for reasons which never seem entirely convincing.

Is the install base small? Sure, but not that small. Games have been developed for smaller markets in the past. Plus that’s a pretty shallow reason to prevent people from doing something cool. And with the boom in workstations and the flooding second hand GPU market the install base, and potential install base, is bigger than many probably realize.

Is it hard? Sure, a bit. But this has been a standard feature in the two main graphics APIs for five years. There is documentation and sample code for both DX12 and Vulkan.

We have examples of developers using their own bespoke engines where we see mGPU used to great effect: Rebellion, Rockstar, 2K, Crystal Dynamics, have all shown excellent scaling in released games. (you want 240Hz at 4K? then install a second GPU and load up Strange Brigade or Zombie Army)

Multi-GPU can work perfectly well with Ray Tracing, as demonstrated in the Port Royal benchmark which uses simple alternate frame rendering on linked-node setups along with temporal and other post-processing effects still applied.

Certain proprietary tech perhaps won’t work (DLSS ?) with multi-GPU so just disable it in those cases.

It’s a real shame that we finally get to a point where mGPU could be a reality yet the biggest engine going won’t support it.

  • Explicit/implicit multiGPU support is built into common APIs and has been for five years
  • All modern GPUs have async compute hardware and dedicated hardware copy engines
  • PCIe gen4 bandwidth allows us to throw 64MB over the bus in 1ms (gen 5 about to go mainstream)
  • It makes perfect sense for the growing VR segment
  • Even integrated graphics are getting to a point where they are potentially powerful enough to help out with certain rendering tasks. At 3.6TFLOPs the Radeon 680M is 2x a PS4 GPU. Next year they will be 1660 Super equivalent.

So. Rant over and done with. Looking ahead to UE 5.1’s roadmap we see " * Multi-GPU rendering" added to the Path Tracing section. Nice, but that is not a real-time renderer.

All this leaves us with the answer being, either; build your own engine, license an engine which does support it, or rewrite large parts of UE to support it. Because real-time rendering using multi-GPU is just not on the UE roadmap as far as I can tell.

1 Like

Hello there!

  • Added support for multi-GPU rendering (mGPU). SLI is required. To enable it, pass -MaxGPUCount=2 on the Unreal Editor command line and set r.PathTracing.MultiGPU=1, which can be toggled at runtime. (r.AllowMultiGPUInEditor=1 is no longer required in .ini files to enable mGPU in the editor.)

Sadly Nvidia dropped SLI support for 40XX. I see my 3090s has an NVLINK bandwidth of 56.2 GB/s vs the PCIE bus of 23.1 GB/s therefore Pcie 5.0 should be the same as NVLINK is now. I wonder if one can do Multi GPU Support for VR over the PCIE bus. One GPU per Eye.

1 Like