[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