Hardware acceleration (GPUs)

This forum has articles regarding decisions and implementations surrounding BI that need to work.
What hardware is needed to run the BI server?
How should the network be set up?
Post Reply
varghesesa
Posts: 90
Joined: Thu Jul 11, 2019 9:52 pm

Hardware acceleration (GPUs)

Post by varghesesa »

Introduction

Hardware acceleration is one lever that can be used to optimize your BI server. This article provides clarity on leveraging GPUs when available in BI.

If you are interested in determining hardware specifications for a new server, see server recommendations.

If you need to know how to activate GPUs on your BI server, see the video tab.


iGPU vs GPU

Performance tab of Windows Task Manager.

HA_task manager.png
HA_task manager.png (14.06 KiB) Viewed 43046 times

Integrated GPU
An iGPU stands for Integrated GPU. In image above, GPU 0 is the iGPU. Integrated means the display circuitry in the chipset resides on the motherboard or on the same chip as the CPU. An integrated GPU shares memory with the CPU and provides a more economical alternative to a stand-alone card.

When a computer states QuickSync support, the hardware implementation resides on the iGPU.

Dedicated GPU
A dedicated GPU is generally much more powerful than an iGPU and often used with video editing or gaming software. Dedicated GPUs are also valuable when running AI solutions such as DeepStack. In the image above, GPU 1 is the dedicated GPU. In this case, it is an nVidia GTX 1070 Ti.


GPU utilization

Users often ask how do I know whether the GPU is being used. The below example illustrates how to do so. My system only has (4) 2 MP cameras, not a huge decoding load for today's chips.

hardware recommendations_GPU stats.png
hardware recommendations_GPU stats.png (78.97 KiB) Viewed 43043 times

No streaming
The no streaming section shows zero activity. I had BI set to the Inactive profile and the inactive profile is set to NOT stream any cameras. This test is just to level set. It is clear that the hardware decoder is not utilized at all when cameras are not streaming.

hardware recommendations_no streaming.png
hardware recommendations_no streaming.png (18.11 KiB) Viewed 43043 times

Group view
I then show the load when streaming in mosaic view (I have dual streams set for all my cameras). Thus each stream from the camera is the sub stream (856 x 480). You notice a bump in the decode usage. With more cameras and higher resolutions the bump will be more pronounced but you get the idea.

hardware-recommendations_streaming_optimized.png
hardware-recommendations_streaming_optimized.png (97.42 KiB) Viewed 43043 times

Single camera view
Finally, I go to single camera view, i.e. stream one camera in high resolution (2 MP). Notice another slight bump in usage.

hardware-recommendations_single-camera_optimized.png
hardware-recommendations_single-camera_optimized.png (116.77 KiB) Viewed 43043 times

Gotchas
This section provides learnings from past tickets.

Gotcha 1: GPU overloaded
Customer ticket

Symptoms: With 25 cameras displayed on the screen in a 5x5 grid of thumbnails, we find your app becomes lethargic and the CPU is almost always running 99 to 100% and the GPU is lightly loaded at maybe 5-10 %. We see delays on the cameras approaching 2 mins on the display.

Server:
Win 10 Pro
Intel i5-7500 3.4 ghz
8 gb ram
NVidia GeForce GT 1030 PCI Express X4 Gen 3 (driver version 451.48)

From engineering
With 25 cameras, your server may be spending more time switching between feeds than actually decoding.
Engineering stated one telltale sign the GPU is overloaded is FPS drops on the camera.
An easy test is to disable some of the other cameras and see if FPS bumps back up for the problem camera.

Gotcha 2: iGPU & dGPU
If your computer has multiple GPUs like above, make sure the bios is set appropriately. I would recommend enabling the iGPU. In below ticket, the user decided to choose the dGPU.

Customer ticket
The moment Ive sent this mail, I have realized the Igpu and Dgpu were both enabled. Deactivating the Igpu in the bios freed up the CPU.
Post Reply