[Bf-cycles] Non-Progressive integrator on GPU

Thomas Dinges blender at dingto.org
Sun May 19 01:50:48 CEST 2013


Hi Brecht,
I looked into enabling the Non-Progressive integrator on GPU and want to 
share my findings.

As far as I can tell there is 1 problem (maybe 2).

1) CUDA does not know memset(), called from within 
shader_merge_closures() in kernel_shaders.h.
I could not find a direct alternative, but it seems there are 
workarounds for it. 
https://devtalk.nvidia.com/default/topic/394123/moving-memory-cudamemmove-/

(2) With Non Progressive integrator enabled, the CUDA compiler takes a 
lot of memory. I had to disable __HAIR__ in order to keep my RAM alive, 
but even then it took 4.5 GB (just the compiler process, peak) to 
compile the sm_21 kernel.

Without the calls to shader_merge_closures(), which I understand is not 
a hard requirement but improves efficiency, and disabled __HAIR__ I 
could compile with Non-Progressive on the GPU and it works.
I could not find issues, setting different sample amounts works and the 
render has less noise as known from the CPU already.

Here is a patch if someone wants to try it out: 
http://www.pasteall.org/42359/diff
On a system with a lot of memory (maybe 10GB or more), __HAIR__ might 
even work, but I could not test this, as I only have 8GB.

Best regards,
Thomas


-- 
Thomas Dinges
Blender Developer, Artist and Musician

www.dingto.org



More information about the Bf-cycles mailing list