Hello there,
I wanted to address a more general issue and not a specific bug. We could talk more about optimization here than a technical problem.
We have been working with Vray for 10 years now and until last year we were exclusively on VRAY CPU for the studio productions. For a little less than a year I've been starting to get entire projects on VRAY GPU.
Apart from the known bugs, the various but known limitations and the unknown future ones, I have a particular point that attracts my attention without being able to answer it with my technical knowledge.
It happens very often for many projects to render in multi-layers, a single jewel then a background, a character lighted in one way then lighted in another way etc. for hundreds or thousands of frames, daily.
This method is quite classical but it implies a lot of renderings with empty space, nothing, 100% black alpha and where only a small part of the image contains pixel information with real calculation inside.
The main concern we have is that the computation time of these "empty" buckets is quite long and not negligible compared to the speed of Vray GPU computations on buckets where there are actually computations to do.
On the one hand, we save a considerable amount of time on the complex calculations of things that need to be rendered thanks to GPU technology and on the other hand we lose precious time calculating nothing.
This concern does not exist in Vray CPU. The computational speed of an empty bucket in CPU is unquestionably insignificant, incomparably fast.
As mentioned earlier, multiple render layers, multiple options for those render layers and multiple versions of each of those renders before arriving at the validated renders, that's millions of empty buckets that are computed at our end.
So on some specific projects, the use of VRAY GPU is questioned for this "simple" reason.
To illustrate what I'm saying, I'll do some practical tests with a sample scene simulating the problem. A 3840x2160p rendering, 10 frames in a row to avoid limiting the error margins, a 6 faces cube, a Vray light and 98% of empty space in the image, no HDRI, no backplate, no FX, native VRAY rendering parameters.
VRAY 5 update 2.2
VRAY CPU : AMD Threadripper 3975WX
VRAY GPU : 3090x2 + Nvlink (CUDA versions are only rendered with graphics cards, without adding the processor)
1/ VRAY GPU RTX BUCKETS : 10 frames = 2m55s // average 1 frame = 17,5s
2/ VRAY GPU CUDA BUCKETS : 10 frames = 2m43s // average 1 frame = 16,3s
3/ VRAY GPU RTX PROGRESSIVE : 10 frames = 1m13s // average 1 frame = 7,3s
4/ VRAY GPU CUDA PROGRESSIVE : 10 frames = 57s // average 1 frame = 5,7s
5/ VRAY CPU BUCKETS : 10 frames = 21s // average 1 frame = 2,1s
6/ VRAY CPU PROGRESSIVE : 10 frames = 1m34s // average 1 frame = 9,4s
During these tests, we can clearly see a difference between the GPU BUCKETS rendering and the GPU PROGRESSIVE rendering beyond the difference with the CPU rendering.
I do not note the difference in CUDA and RTX which for me is negligible in these results.
But when we compare our classic pipeline (CPU BUCKETS) to the new pipeline we are trying to implement (GPU RTX BUCKETS) we end up with a difference of about 8 times more computing time, for " emptiness ".
I know it's a bit tricky to compare render time with differents devices, differents technologie, but I consider that this GPU hardware should be supperior as this CPU hardware (even if it's nearly impossible to compare)
We have not succeeded in integrating the GPU PROGRESSIVE version in our rendering pipeline, the calculation times being much more versatile in this mode compared to the BUCKET mode, even if I had already read on this forum that the PROGRESSIVE mode was faster than the BUCKETS mode.
We may have pipeline issues and may be thinking about the wrong way to work with VRAY GPU. If this is the case, any advice is welcome and I thank you in advance for your time and advice.
I don't question at all the benefits of GPU rendering over CPU rendering. During classic calculations, the comparison is not to be made. The idea is to mention this particular case of "empty" buckets.
Is this a problem that we are the only ones to encounter, or even to have noticed (which would surprise me)?
If it is a problem, or a known remark, are there any existing solutions that could help us?
And finally, there may be solutions that are already in development.
Thank you for your answers and your time,
Nicolas
I wanted to address a more general issue and not a specific bug. We could talk more about optimization here than a technical problem.
We have been working with Vray for 10 years now and until last year we were exclusively on VRAY CPU for the studio productions. For a little less than a year I've been starting to get entire projects on VRAY GPU.
Apart from the known bugs, the various but known limitations and the unknown future ones, I have a particular point that attracts my attention without being able to answer it with my technical knowledge.
It happens very often for many projects to render in multi-layers, a single jewel then a background, a character lighted in one way then lighted in another way etc. for hundreds or thousands of frames, daily.
This method is quite classical but it implies a lot of renderings with empty space, nothing, 100% black alpha and where only a small part of the image contains pixel information with real calculation inside.
The main concern we have is that the computation time of these "empty" buckets is quite long and not negligible compared to the speed of Vray GPU computations on buckets where there are actually computations to do.
On the one hand, we save a considerable amount of time on the complex calculations of things that need to be rendered thanks to GPU technology and on the other hand we lose precious time calculating nothing.
This concern does not exist in Vray CPU. The computational speed of an empty bucket in CPU is unquestionably insignificant, incomparably fast.
As mentioned earlier, multiple render layers, multiple options for those render layers and multiple versions of each of those renders before arriving at the validated renders, that's millions of empty buckets that are computed at our end.
So on some specific projects, the use of VRAY GPU is questioned for this "simple" reason.
To illustrate what I'm saying, I'll do some practical tests with a sample scene simulating the problem. A 3840x2160p rendering, 10 frames in a row to avoid limiting the error margins, a 6 faces cube, a Vray light and 98% of empty space in the image, no HDRI, no backplate, no FX, native VRAY rendering parameters.
VRAY 5 update 2.2
VRAY CPU : AMD Threadripper 3975WX
VRAY GPU : 3090x2 + Nvlink (CUDA versions are only rendered with graphics cards, without adding the processor)
1/ VRAY GPU RTX BUCKETS : 10 frames = 2m55s // average 1 frame = 17,5s
2/ VRAY GPU CUDA BUCKETS : 10 frames = 2m43s // average 1 frame = 16,3s
3/ VRAY GPU RTX PROGRESSIVE : 10 frames = 1m13s // average 1 frame = 7,3s
4/ VRAY GPU CUDA PROGRESSIVE : 10 frames = 57s // average 1 frame = 5,7s
5/ VRAY CPU BUCKETS : 10 frames = 21s // average 1 frame = 2,1s
6/ VRAY CPU PROGRESSIVE : 10 frames = 1m34s // average 1 frame = 9,4s
During these tests, we can clearly see a difference between the GPU BUCKETS rendering and the GPU PROGRESSIVE rendering beyond the difference with the CPU rendering.
I do not note the difference in CUDA and RTX which for me is negligible in these results.
But when we compare our classic pipeline (CPU BUCKETS) to the new pipeline we are trying to implement (GPU RTX BUCKETS) we end up with a difference of about 8 times more computing time, for " emptiness ".
I know it's a bit tricky to compare render time with differents devices, differents technologie, but I consider that this GPU hardware should be supperior as this CPU hardware (even if it's nearly impossible to compare)
We have not succeeded in integrating the GPU PROGRESSIVE version in our rendering pipeline, the calculation times being much more versatile in this mode compared to the BUCKET mode, even if I had already read on this forum that the PROGRESSIVE mode was faster than the BUCKETS mode.
We may have pipeline issues and may be thinking about the wrong way to work with VRAY GPU. If this is the case, any advice is welcome and I thank you in advance for your time and advice.
I don't question at all the benefits of GPU rendering over CPU rendering. During classic calculations, the comparison is not to be made. The idea is to mention this particular case of "empty" buckets.
Is this a problem that we are the only ones to encounter, or even to have noticed (which would surprise me)?
If it is a problem, or a known remark, are there any existing solutions that could help us?
And finally, there may be solutions that are already in development.
Thank you for your answers and your time,
Nicolas
Comment