My system only reports partial GPU usage, what gives?

As of version 1.7, StarTools offloads suitable, heavy arithmetic to your system's GPU.

Depending on your GPU monitoring application, it may appear your GPU is only used partially. This is not the case; rest assured your GPU solution is used and loaded up 100% where possible.

As opposed to video rendering or gaming, GPU usage in image processing tends to happens in short, intense bursts; during most routines the CPU is still being used for a lot of things that GPUs are really bad at.

Only tasks that;

  • can be parallelised
  • are rather "dumb" in terms of logic (with few if-then-else branches)
  • perform a lot of complex calculations
  • AND process large amounts of data
  • complete in milliseconds (up to a couple of seconds or so)

...are suitable for momentary GPU acceleration. As a result, during processing, you should see processing switch back and forth between CPU and GPU.

Depending on how your monitoring application measures GPU usage, these bursts may be too short to register. Spikes are usually averaged out over time (usually 1000ms) by your monitoring application (with CPU intermittently doing its thing, leaving GPU momentarily unused). With the GPU loaded only for short times (e.g. less than 1000ms), the monitoring application makes it appear only partial usage is happening. That is, as you now hopefully understand, not the case! During any GPU usage the GPU is fully loaded up.

If your monitoring application can show maximum values (on Windows you can try GPU-Z or Afterburner, on Linux the Psensor application), you will almost immediately see the GPU being maxed out. For examples of heavy sustained GPU activity, try the Deconvolution module with a high number of iterations.