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.
Performance tab of Windows Task Manager.
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
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.
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.
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.
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.
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.
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.
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.
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.