GPU load never tops 4%

Hi,
I have a dedicated GPU (4GB Cuda) on my Windows system and Rhino is forced to use it but when I’m live checking the load it never tops 4% when I move my objects in rendered mode, while being laggy, or active raytracing (CPU is deactivated for cycles and runs at 30%). So I wonder what the GPU actually is supposed to do and how would a “normal” load look like?

System
I7-8750H - Intel UHD / Geforce GTX 1050TI - 16GB RAM

Cheers, Moritz

1 Like

Hey, thanks for the info.
GPU-Z/Cuda shows me full throttle for raytracing, but it never tops 15% for moving through a scene in rendered mode while being significantly laggy. What hardware is used to calculate the rendered mode view at all? Could it be the main RAM? It’s the same if the RAM is on 30% as well as on 70%.

Thanks

For Rendered mode I think these GPU loads are pretty normal.

Rendered mode is combination of CPU and GPU, depending a bit on what you’re doing. @jeff, @stevebaer and @DavidEranen can tell you more about how and what of the Rendered mode.

I think it’s a matter of misunderstanding what “Load” means here and how it’s actually calculated. Rhino’s display is not an “active” display, it’s “passive”. It only updates and draws if/when it needs to. Trying to calculate any kind of “load” in that situation is impossible… Take FPS for example… Suppose Rhino only updates it’s viewport 10 times over the period of 5 seconds…does that mean Rhino is only getting 2 frames per second (FPS)? Of course not…it means that Rhino was only requested to update its viewport 10 times over the course of 5 seconds…that is all… In order to actually get an accurate measure of FPS, many frames need to be generated as fast as possible over a much longer period of time…and the longer that period is, the more accurate the measurement will be/get. Dragging an object across the screen probably only generates a dozen or so frame updates…and not only that, it does it one frame per activated context at a time…which means any monitoring software will have little to no chance instrumenting anything for that context. Even continually tumbling the viewport will not provide “accurate” results, although you should see some sort of spike in the monitoring app.

That being said, there are two ways you can get better results (but still not 100% accurate)…

  1. TestMaxSpeed command (and if you use “-_TestMaxSpeed FrameCount=5000 enter”, then the results will be even more accurate…both in FPS and GPU usage monitoring. This command will generate “FrameCount” number of frames as fast as it possibly can, giving monitoring software a chance to build some sort of usage stat.
  2. TurnTable command - This command just keeps drawing the active viewport over and over again until you exit the command…it’s similar to TestMaxSpeed, but it does not directly update the frame buffer like TestMaxSpeed, it posts “update messages”…which can cause delays in when the context actually becomes active and drawing occurs…which might show up as tiny dips and bumps in the monitoring software.

Either of those two commands should give you better “GPU usage” results than just dragging an object, or tumbling the view with the mouse…but again, even those results will not be a true gauge of how much Rhino is using the GPU at any given time.

Here are the results I get using TaskManager…

image
image
image
image

You also need to make sure you’re looking at the right instrumentation … CUDA is not used by the standard display pipeline…it is only used by Cycles when using “Raytraced” mode or the standalone renderer…so staring at a CUDA gauge while updating a viewport would be pointless, as nothing is going to happen. The “3D” instrument in TaskManager is the only one that is going to show any kind of activity in Rhino’s viewports… GPU-Z’s memory and usage gauges should all pretty much get pegged if/when using TestMaxSpeed and/or Turntable… If they’re not, then something is wrong…and I would make sure that Rhino is even using the GPU you think it is.

Thanks,
-Jeff

Something else that needs to be taken into account is what is actually being drawn… If all you’re drawing are shaded polygons, then there’s not really much for the GPU to do…and Rhino will be in and out pretty fast…again making it hard to gauge.

See what happens if you switch to something like “Arctic” mode or “Rendered” mode with an environment and shadows ON…that will push the GPU a lot more.

-J

1 Like

Hey Jeff,
thanks a lot for the detailed answer! I think I get your point about “load” so far. I’ve tested your method and with /testmaxspeed I get a constant load of about 15-20% GPU load and 3 fps with the same model (a few hundred surfaces and poly surfaces). If I only use half of the model and start testing I get 40% GPU and like 6 fps … and so on. It seems to me that something else is the bottleneck here. I’m working on an SSD and no other part of the system is close to its max or shows any sign of a peak. I double-checked that Rhino is forced to use the GTX by Windows/Nvidia and it is doing so but never to its limit. I’m running shades and environment permanently and Arctic mode is a lot faster but it also never seems to top 55% no matter how simple it is. Any suggestion on what else to check?

Really appreciate your time and efforts here :pray:

Can I see your model? It’s possible there is something getting stuck in the pipeline…but I won’t know until I see what you’re doing.

-J

Hey Jeff, thanks for the answer. I was busy doing other stuff… I hope you don’t mind. I actually can’t share the exact model since it’s a current development but I run it with something similar and experienced the same issue. Here is a different model that shows more or less the same issue.

GPU-Z shows this when I ask for testmaxspeed:


GPU peaking out at around 40%

The file I tested is here:
21-02-12_SpeedTest.3dm (7.1 MB)

Thanks for checking!

All the best,
Moritz

Hi Moritz,

Given your file, those results are exactly what I would expect. Is Rhino really struggling for you with this model? Or are you just trying to see how much GPU is getting used? There is just simply not enough in your scene to really work the GPU…

If Rhino is struggling for you with this model, then something is definitely wrong… What are the TestMaxSpeed results? Run TestMaxSpeed with the viewport maximized, and then run it again with the viewport at normal size… and post the results.

Thanks,
-Jeff

Hey Jeff,
that file was only to showcase my potential issue. max viewport is 55.5 fps and normal is 56.0 fps. Both have short freeze every second or so. Is it possible to send you a file via pm?

Thanks a lot,
Moritz