<div dir="ltr">Hi,<div><br></div><div>The registers were set based on benchmarks with a GTX 1080 on Linux, when we first optimized the code for Pascal. But that was more than a year ago. Going from 63 to 64 registers should be fine if it's faster.</div><div><br></div><div>Here's a benchmarks with a Titan Xp, Linux, driver 384.90. Results are not so good there:</div><div>CUDA 8.0.61: <a href="https://developer.blender.org/F1137606">https://developer.blender.org/F1137606</a></div><div>CUDA 9.0.102: <a href="https://developer.blender.org/F1137502">https://developer.blender.org/F1137502</a></div><div><br></div><div>Which driver and CUDA version are you using?</div><div><br></div><div>One difference between Windows and Linux is the compute preemption support. It might be useful to test if that min_blocks *= 8 helps on Windows, if your GTX 1080Ti is used for display.</div><div><a href="https://developer.blender.org/rBe360d003e">https://developer.blender.org/rBe360d003e</a></div><div><br></div><div>Regards,</div><div>Brecht.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 14, 2017 at 11:48 PM, Stefan Werner <span dir="ltr"><<a href="mailto:stewreo@gmail.com" target="_blank">stewreo@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>currently the Cuda kernel uses the same launch bounds for Pascal (SM 6.x) as for Maxwell (SM 5.x) hardware, that is 63 registers for branched path tracing and 48 registers for path tracing. Are all of those derived from benchmarks or is the value for Pascal just being carried over from Maxwell?</div><div><br></div><div>The reason I'm asking is that I'm observing a performance increase on Pascal when I increase the number of registers to 64 for path tracing. Here are before/after benchmarks from a GTX 1080Ti/Win10:</div><div><br></div><div><div>48 registers (as is):</div><div>BMW: 1m52</div><div>Classroom: 3m31s</div><div>Fishy Cat: 4m33s</div><div>Koro: 8m30s</div><div>Pavillion: 7m39s</div></div><div><br></div><div><div>64 registers:</div><div>BMW: 1m36s</div><div>Classroom: 3m34s</div><div>Fishy Cat: 3m57s</div><div>Koro: 6m45s</div><div>Pavillion: 6m39s</div></div><div><br></div><div>With the exception of the classroom scene, all benchmarks show significantly better performance. If there are no objections, I'd like to commit that register increase for SM 6.x to master.</div><div><br></div><div>Running the same test on a Quadro M4000 (Maxwell) shows much smaller differences, so I'd leave SM 5.x as is:</div><div><br></div><div>48 registers (as is):</div><div><div>BMW: 4m38s</div><div>Classroom: 12m32s</div><div>Fishy Cat: 11m18s</div><div>Koro: 20m38s</div><div>Pavillion: 21m12s</div></div><div><br></div><div><div>64 registers:<br></div><div>BMW: 4m38s</div><div>Classroom: 13m07s</div><div>Fishy Cat: 10m52s</div><div>Koro: 18m51s</div><div>Pavillion: 21m32s</div></div><div><br></div><div>Another note: 63 registers was a hard limit for SM 2.x hardware. Is 63 instead of 64 as register limit for kernels SM 3.x and higher just carried over or is there a reason to not go to 64 registers?</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-Stefan</div></font></span><div>PS: I'd love it if someone would sacrifice the time to run 48/64 register comparison benchmarks on other Pascal hardware and/or on Linux.</div></div>
<br>______________________________<wbr>_________________<br>
Bf-cycles mailing list<br>
<a href="mailto:Bf-cycles@blender.org">Bf-cycles@blender.org</a><br>
<a href="https://lists.blender.org/mailman/listinfo/bf-cycles" rel="noreferrer" target="_blank">https://lists.blender.org/<wbr>mailman/listinfo/bf-cycles</a><br>
<br></blockquote></div><br></div>