Title: Multi-GPU Rendering Post by: Patryk Kizny on March 20, 2016, 03:25:34 PM Dear all,
Some time ago I wasn't able to run Fragmentarium under Win7x64 on 2x R9280x. No matter what I did, the second GPU never contributed. I thought it's because of shitty AMD Drivers and finally gave up. Today I'm getting against the same issue again and wanted to raise it and see what can be done here. I currently have 3 NVidia GPUs in my machine, 2 of them running in SLI. Unfortunately, only one machine is ever used. Can you have a look into the code and see what would need to be done to: 1) Be able to choose what GPUs Fragmentarium is running (at least to allow for multi instance rendering) 2) Be able to use all (if possible) Help greatly appreciated. Title: Re: Multi-GPU Rendering Post by: hobold on March 20, 2016, 04:55:12 PM As far as I know neither CUDA nor OpenCL can automatically distribute work among several distinct coprocessors. That is left to the programmer. This is not a driver issue. It is a feature/limitation of the programming model that all data transfers between coprocessors are explicit and actively triggered. This is a consequence of the coprocessors being only loosely coupled.
There is some effort towards better integration of GPUs (both with the CPUs and with other GPUs), but we're not there yet. Progress is rather slow, unfortunately, because Intel, AMD, and Nvidia have somewhat conflicting interests. It may be possible to run several instances of a given GPU accelerated program, with each instance using a different GPU. That would probably require trickery specific to each OS and each GPU driver - my knowledge doesn't reach that far. Title: Re: Multi-GPU Rendering Post by: quaz0r on March 20, 2016, 07:06:58 PM yeah, it is possible for a programmer to make this happen, but i dont think ive even seen a single program that tries to support this. i am doing this in my own mandelbrot program on linux, being able to run on multiple opencl devices concurrently. one thing i have learned on linux at least to help make this happen is to use something like this http://forge.imag.fr/projects/ocl-icd/ which helps to properly expose multiple opencl devices at once. do you guys know if there is a similar thing for windows? at some point i was going to look into making my program run on windows but i dont know how these things work (if at all) on windows.
Title: Re: Multi-GPU Rendering Post by: lycium on March 20, 2016, 08:18:48 PM Maybe you should have taken up my offer for a custom multi-GPU capable OpenCL rendering engine, while I was curious to visit you at Martin's ;) For all the money spent on those GPUs, you could... fine, I'll stop :tongue1:
Good news is, doing multi GPU rendering with OpenCL is trivial; I'm sure someone here will do it eventually. Title: Re: Multi-GPU Rendering Post by: 3dickulus on March 20, 2016, 09:17:06 PM some info regarding this...
http://us.download.nvidia.com/XFree86/Linux-x86/173.14.12/README/chapter-25.html I am looking at this, I think it will be possible for the off-screen rendering when creating "tiled" images... but hobolds idea, "run several instances... with each instance using a different GPU" might be easier using the script engine or manually specifying a range of frames. much of the stuff I've seen has been for main display rendering, so with 2 displays setup properly with 2 GPUs it might be as easy as running 2 instances and dragging one over to the other display :hmh: Title: Re: Multi-GPU Rendering Post by: Patryk Kizny on March 21, 2016, 10:30:49 AM @3dickulus - that would be certainly awesome to have this implemented for tile based rendering. For previews I understand it would be more difficult. And in the meantime I'll check the path with separate instances on separate monitors on separate GPUs. |