Decoding on GPU🔗

Decoding on GPU allows to reduce the load on CPU caused by processing camera streams, especially when using video analytics modules. It also allows decoding more cameras on a single server. In addition, the cost of the server can be reduced by purchasing a less powerful CPU.

Note

By default, this option is enabled even if GPU is not available at the server. In this case the decoding will be done on CPU.

At high GPU load a corresponding warning will be displayed in the Eocortex Client and Eocortex Status Info applications.

Below is an example of such warning in Eocortex Status Info with recommendations on how to solve the case of overloading.

../_images/configurator-status-info.png

Note

The warning appears when the total load on GPU exceeds 85%. If the load becomes less than the threshold value, the warning will disappear.

The load on GPU can be reduced in one or more of the following ways:

  • Change server settings: disable decoding on GPU;

  • Change video analytics settings: disable some or all video analytics modules;

  • Re-assign a part of the cameras to another server.

Option settings

Decoding on GPU can be configured in the advanced server settings window.

To open the additional server settings window, select the server on the /config/svg/ico-tab-servers.png Servers page of Eocortex Configurator application and then either select Configure in the context menu or click Configure on the Information tab of the server settings tab.

../_images/servers.png

On the Other tab, enable the Use decoding on GPU option.

../_images/server-config-other.png
Requirements and recommendations
  • Only NVIDIA graphics cards are supported.

  • Only the following codecs are supported: H.264, H.265, MJPEG.

  • A list of video cards and the codecs they support can be found in the manufacturer's official table.

Note

It is not recommended to use GPU decoding for MJPEG codec due to low efficiency.

Note

It is not recommended to use GPU decoding for enhanced versions of codecs like H.264+ or Wisestream. High GOV value may cause issues with initializing the decoder.

Load balancing

Depending on the GPU load, this option performs a transfer of the processing of part of the cameras to the CPU and vice versa.

  • Balancing performs automatically every 10 seconds.

  • When the server starts, all cameras are decoded on CPU. Decoding on GPU will start only after 30-40 seconds of server activity.

  • If the camera has multiple streams, all streams will be transferred to the selected processing unit during load balancing.

  • The load balancing does not count cameras that are disabled or deleted in the Eocortex Configurator application.

  • If the load on the decoding unit of GPU does not exceed 75%, the cameras will be transferred in parts to GPU until the optimal load is reached.

  • If the load on the decoding unit of GPU exceeds 85%, the cameras will be transferred in parts back to CPU.

  • Load balancing is supposed to ensure optimal average load on the decoding unit of GPU in the range of 75% to 85% and video memory utilization up to 80-90%.