Arnold GPU - Rendering volumes (VDB)

Arnold GPU - Rendering volumes (VDB)

am_wilkins
Collaborator Collaborator
4,759 Views
8 Replies
Message 1 of 9

Arnold GPU - Rendering volumes (VDB)

am_wilkins
Collaborator
Collaborator

Good day,

 

I'm running a render test on a volume between Arnold CPU and GPU.

The render test is the VDB "Bunny" asset with a simple volume shader.


While the CPU rendered the frame in 24 mins, after 1 hour+ of waiting the GPU render was only on around 11%

CPU:
Sampling: Min AA 3, Max AA 12, Threshold 0.001
Depth: 3 Spec, 3 Diffuse, 3 Volume

Render time: 24mins

arnold_cpu_adaptive_volume_bunny.jpg



GPU:
Sampling: Min AA 10, Max AA 26, Threshold 0.001
Depth: 3 Spec, 3 Diffuse, 3 Volume

Render time: 1 hour+ render wasn't completed, only at around 11% (canceled the render test)

 

The reason for the increased Min AA is to prevent zero pixel values.

 

I lowered the sampling settings to try get a frame out.


GPU with lowered Settings:
Sampling: Min AA 3, Max AA 12, Threshold 0.001
Depth: 3 Spec, 3 Diffuse, 3 Volume
Render time:  64mins
arnold_gpu_volume_bunny.jpg

  1. I'm getting double the expected render time, even with lower sampling settings.
  2. We're also seeing what appears to be shadow artifacting under the volume.

 

Are volumes not very optimized for the Arnold GPU engine yet?

 


All the best,
Amwilkins

--

Houdini Core Version 19.5.534
Arnold Core: 7.2.1.0

HotA: 6.2.1.0

CPU: AMD Ryzen TR 3990x

RAM: 128GB
GPU: NVIDIA RTX A4000

 

Accepted solutions (1)
4,760 Views
8 Replies
Replies (8)
Message 2 of 9

am_wilkins
Collaborator
Collaborator

Hi there, I did some additional testing.

I've managed to bring down the render time of the CPU Adaptive, however the GPU engine is still taking very long and the shadow artifact remains. Even with a higher adaptive threshold (tried all sorts of combinations) and the result is significantly more noisy.

I also reduced the "Density" of the shader (was a little too dense in the previous post)

 

I'm looking to:
1) Reduce Arnold GPU render times while still achieving a clean result
2) Solve the shadow artifact

CPU:
Sampling: Min=3, Max=12, Threshold=0.01
Depth: 3 Diffuse, 3 Spec, 3 Volume
Volume Step Size 0.1
Volume samples on light - 2 (default)

arnold_cpu_adaptive_volume_bunny.jpg

 

GPU:
Sampling: Min=3, Max=14, Threshold=0.05
Depth: 3 Diffuse, 3 Spec, 3 Volume
Volume Step Size 0.1
Volume samples on light - 2 (default)

arnold_gpu_volume_bunny.jpg

 

If you download and compare the images, the GPU render would need higher AA samples by almost double (or some lower threshold) to match the CPU render and then we'd be looking at 1 hour+ render times again.

And then, sorry to do this (hurts me too) but here's a Redshift comparison which I'm trying to compete with.

It appears like I have no chance of getting close to this render time with Arnold volume rendering.

redshift_volume_bunny.jpg

 

 

All the best,
Amwilkins

--

Houdini Core Version 19.5.534
Arnold Core: 7.2.1.0

HotA: 6.2.1.0

CPU: AMD Ryzen TR 3990x

RAM: 128GB
GPU: NVIDIA RTX A4000

Message 3 of 9

thiago.ize
Autodesk
Autodesk
Accepted solution

Unfortunately, GPU volumes in Arnold are known to be slower than we'd like, so I'm not surprised, especially with your CPU, that CPU is faster than GPU. The artifact is likely one we are already aware of and is tracked in ARNOLD-13469. Both the artifact and performance we want to improve.

0 Likes
Message 4 of 9

66175545
Advocate
Advocate

I have a scene with elements that have VDB and other materials like diffuse, refraction, etc., but I found that when rendering with VDB, the GPU rendering output is very slow and not as fast as the CPU, so I'm eagerly hoping that the official can pay attention to this and optimise the speed of the GPU in the case of complex scenes with VDB. Because it is also urgently needed in production.ar_volume_test_16_cpu.png

0 Likes
Message 5 of 9

RaynerR
Contributor
Contributor

May I ask if this issue has been resolved now?

0 Likes
Message 6 of 9

Stephen.Blair
Community Manager
Community Manager

Sorry, the issue is still open.

 

(tip: Once fixed, an issue is listed in the Arnold release notes using the ARNOLD- ticket number)



// Stephen Blair
// Arnold Renderer Support
0 Likes
Message 7 of 9

thiago.ize
Autodesk
Autodesk

Hi, the just released Arnold core 7.4.3.0 and associated plugins have improved gpu volume performance. Our release notes show 2-3x speedups for volumes like those in this post.

How is 7.4.3.0 performing for your gpu volume scenes?

 

As for the artifact you reported, I don't believe that has yet been fixed.

Message 8 of 9

am_wilkins
Collaborator
Collaborator

Thanks Thiago, sounds great!

I'll try to get us updated to the latest release and see if I get a gap to retest the same scene as above or a new one using the same VDB.

0 Likes
Message 9 of 9

am_wilkins
Collaborator
Collaborator

Hi,

 

We updated version to Arnold 7.4.3.0, I opened the old test scene from this original post and ran a render test again.

The previous tests were done on the A4000 GPU.

R 41| 00:00:00   462MB         | there are 1 light and 5 objects: 
R 42| 00:00:00   462MB         |       1 persp_camera 
R 43| 00:00:00   462MB         |       1 quad_light 
R 44| 00:00:00   462MB         |       2 utility 
R 45| 00:00:00   462MB         |       3 standard_surface 
R 46| 00:00:00   462MB         |       1 standard_volume 
R 47| 00:00:00   462MB         |       1 driver_exr 
R 48| 00:00:00   462MB         |       2 box_filter 
R 49| 00:00:00   462MB         |       1 gaussian_filter 
R 50| 00:00:00   462MB         |       3 polymesh 
R 51| 00:00:00   462MB         |       2 list_aggregate 
R 52| 00:00:00   462MB         |       1 volume 
R 53| 00:00:00   462MB         |       2 color_manager_ocio 
R 54| 00:00:00   462MB         |   
R 55| 00:00:00   462MB         | rendering image at 1920 x 1080, 3 AA samples 
R 56| 00:00:00   462MB         |   AA samples max    14 
R 57| 00:00:00   462MB         |   AA adaptive threshold 0.05 
R 58| 00:00:00   462MB         |   AA sample clamp   <disabled> 
R 59| 00:00:00   462MB         |   diffuse           samples  2 / depth  3 
R 60| 00:00:00   462MB         |   specular          samples  2 / depth  3 
R 61| 00:00:00   462MB         |   transmission      samples  2 / depth  8 
R 62| 00:00:00   462MB         |   volume indirect   samples  2 / depth  3 
R 63| 00:00:00   462MB         |   total                          depth 10 
R 64| 00:00:00   462MB         |   bssrdf            samples  2 
R 65| 00:00:00   462MB         |   light             samples  2 
R 66| 00:00:00   462MB         |   transparency      depth 10 

 

x1 RTX A4000 (NVIDIA driver version 575.51)

am_wilkins_1-1753798088787.png

Appears to be about a 18min rendertime difference per frame compared to the previous. (+-180% speedup)

I'm not sure if the Nvidia drivers would impact this, but I'm working on getting this machine updated.

R143| 00:09:58  1093MB         | scene creation time          0:00.15    machine utilization (13.54%) 
R144| 00:09:58  1094MB         |  unaccounted                 0:00.15 
R145| 00:09:58  1094MB         | -----------------------------------------------------------------------------------
R146| 00:09:58  1094MB         | frame time                   9:58.66    machine utilization (1.89%) 
R147| 00:09:58  1094MB         |  license checkout time       0:00.11 
R148| 00:09:58  1094MB         |  node init                   0:00.83 
R149| 00:09:58  1094MB         |  gpu update                  0:08.68 
R150| 00:09:58  1094MB         |   gpu jit compile            0:07.14 
R151| 00:09:58  1094MB         |  rendering                   9:48.84 
R152| 00:09:58  1094MB         |   output driver              0:00.12 
R153| 00:09:58  1094MB         |   pixel rendering            9:48.72 (197 sample iterations @ min: 0:00.005, avg: 0:02.987, max: 0:09.175)
R154| 00:09:58  1094MB         |  unaccounted                 0:00.18 

 

x1 RTX 4090 (NVIDIA driver version 576.80)
Not previously tested with.

am_wilkins_0-1753794049046.png

1m 46s on Arnold 7.4.3.0 previously 3m 46s (136% speedup) on the version before.

R143| 00:01:50  1009MB         | scene creation time          0:00.22    machine utilization (14.61%)  
R144| 00:01:50  1009MB         |  unaccounted                 0:00.21  
R145| 00:01:50  1009MB         | ----------------------------------------------------------------------------------- 
R146| 00:01:50  1009MB         | frame time                   1:49.90    machine utilization (4.48%)  
R147| 00:01:50  1009MB         |  license checkout time       0:00.04  
R148| 00:01:50  1009MB         |  node init                   0:02.87  
R149| 00:01:50  1009MB         |  driver init/close           0:00.01  
R150| 00:01:50  1009MB         |  gpu update                  0:12.63  
R151| 00:01:50  1009MB         |   gpu jit compile            0:10.43  
R152| 00:01:50  1009MB         |  rendering                   1:34.04  
R153| 00:01:50  1009MB         |   output driver              0:00.12  
R154| 00:01:50  1009MB         |   pixel rendering            1:33.92 (197 sample iterations @ min: 0:00.006, avg: 0:00.476, max: 0:01.686) 
R155| 00:01:50  1009MB         |  unaccounted                 0:00.28 

As a bonus, 6min 26s on x2 A4000 GPU.

R 10| 00:00:00    98MB         |  1 x AMD Ryzen 9 5950X 16-Core Processor  (16 cores, 32 logical) with 130952MB 
R 11| 00:00:00   111MB         |  NVIDIA driver version 573.42 
R 12| 00:00:00   111MB         |  GPU 0: NVIDIA RTX A4000 @ 1560MHz (compute 8.6) with 16375MB (15721MB available) (NVLink:0) 
R 13| 00:00:00   111MB         |  GPU 1: NVIDIA RTX A4000 @ 1560MHz (compute 8.6) with 16375MB (14244MB available) (NVLink:0) 
R180| 00:06:27  1151MB         | scene creation time          0:00.83    machine utilization (3.28%)  
R181| 00:06:27  1151MB         |  unaccounted                 0:00.83  
R182| 00:06:27  1151MB         | ----------------------------------------------------------------------------------- 
R183| 00:06:27  1151MB         | frame time                   6:26.21    machine utilization (4.52%)  
R184| 00:06:27  1151MB         |  license checkout time       0:00.10  
R185| 00:06:27  1151MB         |  node init                   0:01.74  
R186| 00:06:27  1151MB         |  driver init/close           0:00.01  
R187| 00:06:27  1151MB         |  gpu update                  0:10.65  
R188| 00:06:27  1151MB         |   gpu jit compile            0:08.17  
R189| 00:06:27  1151MB         |  rendering                   6:13.28  
R190| 00:06:27  1151MB         |   output driver              0:00.11  
R191| 00:06:27  1151MB         |   pixel rendering            6:13.17 (197 sample iterations @ min: 0:00.040, avg: 0:01.893, max: 0:05.222) 
R192| 00:06:27  1151MB         |  unaccounted                 0:00.41 

 

 

Quite a big improvement, thank you!

I also see that the shadow glitch/issue is now fixed.

 

It's worth noting that the render quality is still quite noisy at these settings and would need some extra samples or perhaps denoising to work on production, I will try some higher samples next to see how easily it can clean up at the expensive of higher render times.

am_wilkins_0-1753801777805.png

 

 

all the best,

amwilkins