Top to Chop Execution takes over 10 ms

Hello everyone! I’m trying to optimize my project and am having trouble understanding the performance monitor and why a Top to Chop would take so long. Here is a screenshot of my performance monitor

I’m using a compute shader and then taking that output into a chop with a “Top to Chop”. The chop then goes into a “Chop to Sop”. As you can see it is taking 10 ms to cook the “topto” node and it seems like the dependencies it relies on are not taking too long. The Top texture is a simple 16x16 32 bit float texture.

Any advice on debugging this or if there is a known solution would be much appreciated. Thank you!

Do you have it set to use the result on the current frame or the next frame. The stall is caused by waiting for the GPU to finish it’s work. If you ask for the results from the GPU right away there is often a long stall because the GPU is many milliseconds delayed from when you ask it to do work. So the size of the texture doesn’t really matter, most of that time is a stall.

If you have it set to ‘delayed (next frame)’, then the stall is caused by the GPU being overworked, or running too fast. If your project is running at 60fps already, then ‘something’ in your project will end up filling in any extra time to add up to the 16.6ms per frame time, and this is often the point where that happens.

1 Like

Hi Malcolm, thanks for the help. I have it set to “next frame”.

image

I’m currently running closer 50 fps with the occasionally very noticeable dip. You can see in this trail that my cook time can vary wildly

I can confirm it is independent of the texture size. I set the crop to just one pixel and that is still the same cook time so waiting on the GPU does make sense

So this is likely just the GPU being overloaded then. If you put down a Hog CHOP you should see that time in node be reduced. This means the node is cooking ‘too soon’, and the GPU doesn’t have the data ready yet (even a frame late).

1 Like

Thanks for the help. Is this relatively common when working with a “Top to Chop”? It seems like it might be better for me to just use a “Script Sop” and skip the GPU calculation entirely.

What happened when you added a Hog CHOP? If the cook time of that node turned down and your FPS stayed the same, then the issue isn’t that node.

1 Like

yes, the Hog chop dropped the “Top to Chop” cook time down to about .1 ms and my project framerate dropped in the range of 5-10 FPS

Ok so if you turn down the ‘hog’ value a bit, maybe do 5ms or so, I’d expect the node to be at 5ms cook time and your FPS to be back up. Is that the case? If so then the solution is to reduce the GPU work occurring in the file in general.

Unfortunately it doesn’t seem to be the case. Here is a trail showing my “Top to Chop” cook time, the milliseconds cook for the hog chop, and the project FPS. When I’m in perform mode it is still only getting to about 50 FPS.

From the task manager you can see my GPU performance is not high in utilization but my memory usage is high

image

Right, that’s what I mean though. You are now totally wasting 5ms of CPU frame time with the Hog CHOP, but still getting 50ms. So the bottleneck is the GPU. Likely with being so close to the limits of your dedicated CPU memory, you are trashing memory which is slowing down the performance.
If you are able to reduce that, does it help at all?

That makes sense. I’ll try and move some of my work on to the CPU. Thank you for your help!