GPU Geometry Setup killing animation rendering time - how to fix it?

Started by Kuba Grabarczyk, February 16, 2022, 11:29:51 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Kuba Grabarczyk

Hello everyone,

Can anyone from Keyshot team say a few words about background of GPU geometry setup time when rendering in GPU mode?

I work mainly with animation with alembic files and deformable meshes imported from Blender 3.0. To be precise I use Keyshot 10.2 Pro. Since I have RTX 2070 and 3080Ti the rendering times are wonderful but for more complex scenes I can see that for each frame there is "GPU geometry setup" time which is sometimes even longer that rendering time (!)

Can anyone help how to shorten or somehow optimize it? This issue is literally doubling my rendering time which is killing my projects pipeline, help! I also notices when having really complex scenes GPU mode works very slowly in the real time view, especially any changes to geometry make it slowing down. So in the Keyshot viewport I used to work with CPU mode but eventually want to render the animation in GPU mode which is around 20 times faster in my case (but the geometry setup time is slowing it down...)

Since Blender 2.93, Blender and Cycles have something called "persistent data" which means it only loads geometry to GPU memory once per animation and not per frame. It speeds up the rendering time hugely. Are there any chances to implement such feature in Keyshot?

Any kind of help here will be very appreciated,

Best regards,
Kuba Grabarczyk

sc4r4b

It's the ABC file with deformable meshes.  From what I understand the abc is baking the deformed geometry.  So it's comparable to the GPU tessellating a new 3D model per frame.

Kuba Grabarczyk


sc4r4b

All I can recommend at this time is lowering your animation frame rate.

Niko Planke

Hey Kuba,

Please contact Support at support@luxion.com, and provide them with a sample file and complete system specs?

I noticed that you have a dual GPU setup with two GPUs from different series.
Could you try to set the rendering to only happen on one of the GPUs and see if the "GPU geometry setup" still takes as long?
On an other note, we made improvements in KeyShot 11 for a similar issue,if you have the option please also check if the issue still exists in KS 11.

Best regards
Niko

Kuba Grabarczyk

Thank you very much for a reply, Niko! I have just carried out some test on a single still frame from my current project and the results are astonishing! I used very same rendering settings for the same frame changing only the usage of GPUs I have, look at that guys:

RTX 2070 Only: GPU Geometry Setup: 12 s, Rendering time: 77,41 s, Total time: 89,41 s
RTX 3080Ti Only: GPU Geometry Setup: 12 s, Rendering time: 25,96 s, Total time: 37,96 s
Both GPUs combined: GPU Geometry Setup: 24s, Rendering time: 20,97 s,Total time: 44,97 s

Honestely, this is the last thing I expected here. You can see clearly that Keyshot needs to perform GPU geometry setup separately for both cards. For complex scenes, this time is relevant. In my case the benefit of shortening rendering time by having both cards is smaller than cost of GPU Geometry Setup. This is really interesting and quite depressing for me as I have got worst performance by combining two cards, as I had expected to have a boost from that combination.

Unfortunately, I have no access to KS11 as I do not want to spend subscription cost monthly when paying 2k USD around year ago for full license... As far as I know I can't upgrade it right now. Nevertheless, would be great to know what exactly has been improved in KS11 on that field.

To sum up, for very complex scenes I'm gonna use my new RTX3080Ti only, which is quite sad, however, I still appreciate you suggestion very much Niko.

Kuba

Niko Planke

Hey Kuba,

Thank you for trying.
I have created an issue in our system to track this.
We have an other customer experiencing this, maybe his solution works for you as well: https://forum.keyshot.com/index.php?topic=28389.0


Kuba Grabarczyk

Thank you very much, Niko. If you find out any way to improve performance for two GPUs users with complex scenes, that will be very helpful. This is everyday issue I face in every single project I work with. It means for me waiting 10 hours instead of 5 for a 20s of 30fps 1080p animation, it really impacts my workflow significantly.

Thank you for linking the other topic. I tried option with rendering in background with no change, the rendering and GPU geometry setup times are same. I can agree the real-time view very likely would be faster but I am sorry, I will not be doing any coding to automate my mouse movements to workaround the issue, that is too much...

mattjgerard

This doesn't fix the problem, but for now have you considered using a render farm? I don't have the length of project to warrant it, but would seem to be a decent option for faster turnarounds, at least until they figure out what is going on.

Kuba Grabarczyk

I do not want too be sarcastic but possible workaround would be also changing the rendering software for one making real use of the users hardware.

As mentioned before, it is an issue i face in every single project I make and using the renderfarm is not a solution at all. Currently we produce 2-3 animations per month in the length of 1-5 minutes, 1080p, 30fps, around 1200 samples per frame. If luxion pays the invoice for rendering farm then yes, it sounds like a great idea, but I doubt the company is very eager to do that

mattjgerard

There is no reason for Luxoin to pay the render farm invoices. You are hitting the limits of what the software is capable of, that's just the plain facts of it. Without knowing the specifics of your situation, there is actually no reason why a render farm would NOT solve your problem, and they are very reasonable in pricing, as long as you are pricing your services properly, it should be totally acheivable. There are a couple of Keyshot specific render farms on these forums that would gladly work with you on a test render to see how the service would work for you.

Now, I only render still images, I don't render animations very often, but why 1200 samples? I find that for 99% of our renders I rarely need to go above 512, and most of the time 256 will do just fine with some post production noise reduction. But i understand that your issue is more about the GPU load time.

which brings me to CPU rendering, is that an option? It is MUCH more stable and scaleable than GPU rendering, as you are discovering. GPU scaling doesn't work well unless you have identical cards on identical drivers, and even then, there is 2 memory banks to reload every frame rather than one for CPU rendering.

At my job we have a 64 thread machine on our network and pay the network rendering license to be able to send renders to it. Is that an option? I undersstand trying to fix workflow issues while the technical bugs get worked out. Would you be able to download a trial of KS11 and test one of your scenes on it to see if KS11 has fixed it? You don't have to buy the whole license, would be just to troubleshoot.

Kuba Grabarczyk

That is true, I just feel I am the at limit of what Keyshot software offers. At the same time, I am aware I am not using Keyshot in the main field it was designed for. Still, would be great to get some improvements in the GPU Geometry Setup time.

Remember please, you can NOT use Keyshot inbuilt denoising or any similar stuff while working with animation - there is the risk each frame will be denoised differently and animation will not be smooth.

The number of samples depends on the scene, when you have some object partially fading out and want to show INTERIOR without the noise, 512 samples will not be sufficient for sure. 

I agree CPU rendering is much more stable and this is why we recently use it in the real-time view. Nevertheless, for the rendering is much slower, even though we have quite decent CPU. You can see the benchmark results below. I would rather not come back to making my rendering time 20x slower.

Speaking about rendering farms, that is true, it can be very useful. Saying what is cheap and what is expensive please keep in mind we may live in different countries. For example, in Poland the average salary is less than 1000 EUR and we are last but one in the ranking of business friendly countries in EU. That means, if I use render farm in every project, very likely my services would be to expensive for local companies.

mattjgerard

Kuba, you make some great points, and I appreciate the back and forth dialog.

This certainly is something that KeyShot should figure out. We do not use a render farm for nearly the same reason. Its just more cost efficient to host our own with the Network rendering plugin.

I wish keyshot could develop themselves as a plug in for various modeling packages, as Octane and VRay does for Cinema 4d and Blender, etc. That would be the perfect world in my view.

I hope support can get back to you on a solution, this is a problem that has existed from the first implementation of GPU rendering. Have you asked them for a KS11 trial license yet for testing? 

Kuba Grabarczyk

I finally found a little bit of time to make a quick comparison between KS10 and KS11 trial version hoping for some improvements.

I performed test on different but similar scene and different frame of animation. (this is frame no 1064 of the project I have just sent you, Niko) The results are astonishing again!!! Unfortunately for Keyshot 11 I received worse rendering time than for Keyshot 10 (!!)

Keyshot 10 (both GPUs) 47,95 s (GPU geometry setup around 24 s)
Keyshot 11 (both GPUs) 71,94 s  (GPU geometry setup around 48 s) (!!)

It looks like geometry setup time is two times slower per each card. Honestely this is exactly the opposite of what I hoped for... Neverthless just wanted to share, maybe some future generations will find my tests useful

Will Gibbons

Quote from: Kuba Grabarczyk on March 05, 2022, 02:04:49 PM
I finally found a little bit of time to make a quick comparison between KS10 and KS11 trial version hoping for some improvements.

I performed test on different but similar scene and different frame of animation. (this is frame no 1064 of the project I have just sent you, Niko) The results are astonishing again!!! Unfortunately for Keyshot 11 I received worse rendering time than for Keyshot 10 (!!)

Keyshot 10 (both GPUs) 47,95 s (GPU geometry setup around 24 s)
Keyshot 11 (both GPUs) 71,94 s  (GPU geometry setup around 48 s) (!!)

It looks like geometry setup time is two times slower per each card. Honestely this is exactly the opposite of what I hoped for... Neverthless just wanted to share, maybe some future generations will find my tests useful

Ouch. That's really disappointing to hear! I hope it's something that can be addressed quickly!