Multi-GPU support?

bonsaiscott wrote on Wednesday, June 25, 2014:

I have a current application which I would like to add OpenGL rendering to. It has a main thread, which spawns N threads for computation. I will install N GPUs (2+) in the system where one GPU will have 2 displays (one for the ‘console’, the other for full-screen computation display), the others will have 1. Each compute thread would connect to its own GPU, create a context with a full-screen display on its attached monitor, and use OpenGL to render the results of its computation on its display.

Initially this is under Windows 7, but I need to migrate to Linux eventually. The GPUs are all GM107-based (GTX 750 ti) for now, but I do not wish to preclude the use of AMD devices if possible.

After reading the glfw documentation, I cannot see how to determine the connectivity of a monitor to a GPU, or a definitive statement that the above is possible. Is there a way? If not, is there another method outside the context of glfw to accomplish what I need to?

Thanks

gvnott wrote on Monday, July 14, 2014:

I don’t know if it is possible to do this with GLFW, though I do know both AMD and NVIDIA provide OpenGL Extensions to do this:
http://www.opengl.org/registry/specs/AMD/wgl_gpu_association.txt
http://www.opengl.org/registry/specs/AMD/glx_gpu_association.txt
http://www.opengl.org/registry/specs/NV/gpu_affinity.txt

I believe you need a NVIDIA Qudro card to use the NVIDIA extensions. Also after a quick reed of both extensions it looks like you need to bind you OpenGL context to a GPU at runtime, you might need to modify GLFWs CreateWindow() function to get this behaviour.

Hope that helps :slight_smile:

gvnott wrote on Monday, July 14, 2014:

Or, now that I think of it, you could try using SLI to utilise all the GPUs in your system and something like this to connect all the monitors you require.