Multi-GPU OpenGL Interoperability

I have a problem which needs more memory than 1 card can store and so I’d like to split it amongst several cards.
I’d also like to visualise the computation results using OpenGL.

My question is, is it possible to somehow render 1 image which is split amongst N cards?

I can only think of 2 solutions:

  1. Move all the rendered data to 1 host and use host-side OpenGL to render it
  2. Connect 1 monitor to each GPU and move all the monitors together so as to form one big monitor :P

But, seriously, is there a better way?

You may want to look into a program called Chromium, and/or XDMX. I think those programs are designed for Tiled-Display monitors (groups of monitors put together as one) but I believe they should be able to handle any combination of multiple machines/gpus/monitors. Or you could try a library called cudaMPI which is a library developed by a researcher at UAF. I’m actually planning on implementing cudaMPI on our own Tiled-Display for research purposes. Let me know if you get any of those working.

At one point I used Xinerama. It would treat all the monitors on all the cards as one DISPLAY. So OpenGL commands would use that one display, and any cuda interop functions would be for that gl rendering context. I assume the nvidia drivers did some memory mapping and DMA.

Thank you both for your input and ideas. They look promising.

I was actually hoping for a single monitor but shared memory approach (in which all cards could somehow communicate and then render to one monitor) but perhaps that’s not possible [at least not without major lag].