Whoever wants to contribute to this blog , posting his experiences on the same place, please send me a message !

Friday, May 25, 2012

Design Dilemma : Hybrid Rendering ?

The  workload until now lies on the Optix code which runs totally on the GPU , using the host code on the CPU for coordination and organization purposes only. As it meant to be by Optix.

Last days I read some papers(and still reading...) on hybrid rendering , either with cuda/opencl or other languages.

One of the papers [Combinatorial Bidirectional Path-Tracing for Efficient Hybrid CPU/GPU Rendering] of Anthony Pajot, Loïc Barthe, Mathias Paulin, and Pierre Poulin describes a way to exploit both processors efficiently. It proposes that the path creation can be made on the CPU and the combination of path on the GPU(Pure cuda code). It proved to be 12 times faster than CPU alone.

I was thinking of doing the opposite.

That is :

Create the paths on the GPU using optix and save all that i need on a common CPU/GPU buffer , which i already do . 
Then execute the all-path combinations on the CPU. To offload some work from the GPU. 

Unscientific as it , commenting out of the Optix code the combinatorial step , it speeds up the path creation 3-3.5 times.

My thought was : IF the CPU is better at executing code in "for" loops, would the acceleration from using a second processor would be greater than the overhead of a busy memory bus?? 

AND is this system not-extensible enough??(if one processor would be ok for one card , what about 2-3-4 cards for processing ???)

What do you think ? should i try it or is it a lost cause?


  1. Honnestly, first, it depend of your CPU but there is chance that the CPU become the bottelneck !

    Don't forget this, peoples now are able to add several GPUs and the new videos cards contains more and more GPUs (GTX 590...).

    I still think, that the best approach is the one proposed by Dietger Van Antwerpen :


  2. Ok thanks for the help! i will study this paper better.

  3. Hi,

    Why don't you publish the code somewhere ?

    In fact I'm working on another GPU based bidir-pathtracer and I would like to test different combinations strategies on the GPU.

    There are the one from Dietger, combinatorial, and I even have my own idea....

    Your is a full BDPT and it is great... for sure your code will be a wonderful platform for my tests !

    I can even share my work with you if you are interested.

    feel free to contact me at krys at polarlights dot net

  4. I will post my code soon enough here, i just want to debug it and be sure it is working properly.

  5. I’ve been a lurker around your blog for a few months. I love this article and your entire site! Looking forward to reading more! banner design

  6. Hi,

    Is there some progress with your BDPT ?

    Thx ;-)

  7. i have been called to join my country's army and unfortunately i have problems continuing the work . I am sorry ...

  8. i have been called to join my country's army and unfortunately i have problems continuing the work . I am sorry ...