AnsweredAssumed Answered

RPR 2094 Noise Threshold Bug - Multi GPU Performance is masked

Question asked by gelert on Jul 23, 2019
Latest reply on Sep 2, 2019 by bsavery

It turns out that RPRs multi GPU performance on macOS 10.14.6 (now that VEGA drivers are fixed) is being affected negatively by a Noise Threshold Bug in the Blender plug-in when Noise Threshold is set to anything else except 0.00.


Question: Why is it quicker (Test 2: 9.74s) to render an image on 1 GPU than it is on 3 GPUs (Test 1: 10.63s)?

Answer: Noise Threshold is set to 0.05


Test 1: Vega 20 + RX 580 + WX 9100

Noise Threshold 0.05 (Max Samples 250)

Resulting image = almost no noise, pretty quick time.




Test 2: Solo WX 9100

Noise Threshold 0.05 (Max Samples 250)

Resulting image = correct amount of noise, but faster time than above but image is noisy.







Question 2: Why is is quicker to render on 3 GPUs (Test 4: 10.53s) than it is on 1 GPU (Test 3: 15.17s)?

Answer: It's meant to be. Noise Threshold was set to 0.00.


Test 3:  - Solo WX 9100

Noise Threshold 0.00 (Max Samples 250) 

Resulting image = no noise, a lot more time.




Test 4: Vega 20 + RX 580 + WX 9100

Noise Threshold 0.00 (Max Samples 250)

Resulting image = almost no noise. Suspicious time result - it's almost identical to Test 1. Suspiciously similar image output and time? Is the Noise Threshold setting being respected in Test 1? It seems to be a bug.




Conclusion: Noise Threshold is not being respected when multiple GPUs are used.


All tests conducted with latest Blender 2.80 Nightly (23 July 2019) using a 2019 MacBook Pro i9 8-core 2.4GHz 32GB RAM on macOS 10.14.6. 


Sample file attached.




I'd like to also add that this bug also affects the Tiled Rendering feature.


Tiled rendering / Noise Threshold 0.1 / 3xGPUs = 1m44 - noiseless image:


Tiled rendering / Noise Threshold 0.0 / 3xGPUs = 1m45 - noiseless image:


Tiled rendering is not respecting Noise Threshold on multiple GPUs.


But it does respect Noise Threshold with Tiled Rendering when set to use 1 GPU (1m16). The resulting image is correctly noisy and the rendering time lower for 1 GPU than 3 GPUs: