OptiX 5.0.1 Programming Guide missing device compatibility rules

The Programming Guide for OptiX 5.0.1 appears to be missing some content. Near the end of section 3.1 it states “The following set of rules is used to determine device compatibility.”. However no rules follow.
I thought I’d read the heterogeneous multi-GPU rules somewhere, but can’t seem to find them now. Could you point me to them?

That’s a leftover from OptiX major versions <= 3 which did not support heterogeneous multi-GPU setups.
Since OptiX 4.0.0 heterogeneous multi-GPU setups are working on all supported GPU architectures. (That’s one reason why Fermi is not supported anymore in them because that wouldn’t have worked together, e.g. no bindless textures.)

Means in the current OptiX 5.0.1 version Kepler, Maxwell, Pascal, and Volta GPUs can be chosen as devices in a single OptiX context.

It’s generally recommended to use homogeneous multi-GPU setups though, because in heterogeneous setups the kernel will be compiled per GPU architecture and the board with the smallest VRAM will limit the possible working set. Also watch the electrical PCI-E lanes you have available and prefer the 16x ones.

Please search to the forum for RT_BUFFER_GPU_LOCAL which can speed up progressive rendering accumulations on multi-GPU setups due to the static nature of the load balancer in OptiX.

If you’re interested, the old compatibility rules for OptiX 3.9.1 and earlier were this, which are obsolete in OptiX 4 and newer now:
[i]While multiple contexts can be active at one time in limited cases, this is usually unnecessary as a single context object can leverage multiple hardware devices. The devices to be used can be specified with rtContextSetDevices. By default, the highest compute capable set of compatible OptiX-capable devices is used. The following set of rules is used to determine device compatibility. These rules could change in the future. If incompatible devices are selected an error is returned from rtContextSetDevices.

  • All SM 3.5 devices can be run in multi-GPU configurations with other SM 3.5 devices.
  • All SM 3.0 devices can be run in multi-GPU configurations with other SM 3.0 devices.
  • All SM 2.X devices can be run in multi-GPU configurations with other SM 2.X devices.
  • All SM 1.2 and 1.3 devices can be run in multi-GPU configuration with other SM 1.2 and 1.3 devices.
  • All SM 1.1 and 1.0 devices can only be run in single-GPU configurations.[/i]

Thanks for the information. So is the new default behavior to use all OptiX-compatible GPUs together?

Yes, OptiX will pick all supported GPUs it finds if you do not explicitly use rtContextSetDevices(begin, end) to pick a sub-set.

I never let OptiX pick the devices but always have a functionality to define which devices to use in my apps. This comes esp. handy when running the same application multiple times on different devices in the system to test things or simply to render multiple images at the same time.