Month: November 2024

Steam and Multiple GPUs

I recently upgraded my desktop to sport dual RTX3060s, purchased to support some AI nonsense I’m working on for a different project.

Things I quickly discovered:

  1. All the delightful -webui tools for Stable Diffusion, Flux, Tortoise-TTS, and whatnot don’t support dualies. You have to do it in Python like a chump.
  2. Steam gets very confused by multiple GPU setups, resulting in games loading to a blank screen or failing outright.

I’m too lazy to address (1) for now. But (2) turned out to be a cinch.

Now, Let’s Be Clear:

You are not going to suddenly have dual-GPU support for Deep Rock Galactic or whatever. However, you will be able to do things like:

  • Get your games to load in the first place
  • Have those games use a specific GPU while your AI whatnot uses a different one, doubling your productivity!

Also, this is just for NVIDIA. Probably.

I only own NVIDIA GPUs, so I can’t speak to issues with other manufacturers.

And we begin.

Step 1: List those GPUs

vulkaninfo --summary

You should get a listing that includes two separate GPUs. For example:

Devices:
========
GPU0:
	apiVersion         = 1.3.289
	driverVersion      = 565.57.1.0
	vendorID           = 0x10de
	deviceID           = 0x2504
	deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	deviceName         = NVIDIA GeForce RTX 3060
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 565.57.01
	conformanceVersion = 1.3.8.2
	deviceUUID         = c8256c45-47ef-1756-dd9e-d1ca20a766f4
	driverUUID         = a40eb34f-a796-5990-89ac-95d78eb83699
GPU1:
	apiVersion         = 1.3.289
	driverVersion      = 565.57.1.0
	vendorID           = 0x10de
	deviceID           = 0x2487
	deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	deviceName         = NVIDIA GeForce RTX 3060
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 565.57.01
	conformanceVersion = 1.3.8.2
	deviceUUID         = 869890f0-98ef-208e-aa1f-60003a8665e1
	driverUUID         = a40eb34f-a796-5990-89ac-95d78eb83699

Suppose you didn’t.

Did you get a command not found error? Go here and install appropriately.

Step 2: List them again, with feeling

Your system can find both GPUs. Good! But can MESA find them?

MESA_VK_DEVICE_SELECT=list vulkaninfo

You should get a much simpler listing that still includes both GPUs.

selectable devices:
GPU 0: 10de:2487 "NVIDIA GeForce RTX 3060" discrete GPU 0000:04:00.0
GPU 1: 10de:2504 "NVIDIA GeForce RTX 3060" discrete GPU 0000:07:00.0

The first GPU listed is the one that Steam is trying to use.

Suppose you didn’t.

You probably need some MESA goodies. Pick your favorite:

sudo apt install libvulkan1 mesa-vulkan-drivers vulkan-utils
sudo pacman -S vulkan-mesa-layers lib32-vulkan-mesa-layers

Step 3: Try playing some stuff in Steam

Odds are, either Step 1, Step 2, or both ended up making you install something. Now that you’ve installed that something, you’re probably set. Give things a try.

(Optional) Step 4: Set Steam to use a different GPU

In my experience, you’re best off letting Steam use GPU 0, and reserving GPU 1 for all your other faffery. But if you have a darn good reason to try and change the GPU, try this:

  1. Go to the game’s properties.
  2. Under Launch Options add the following:
    MESA_VK_DEVICE_SELECT=10de:2504 where the eight hex digits are the ID of the appropriate GPU (you’ll notice I swapped in the ID of GPU 1)
  3. Prayer never hurt?

I hope this helps! If it doesn’t, my troubleshooting capacities are limited by technical know-how and laziness in equal measure, but I’ll do my best.

Posted by Adam Labay, 0 comments