Starting with version 1.1.16, Video Recognition Gateway (VIRGO) supports acceleration of video decoding, graphics processing, and face detection functions via one or more GPUs. VIRGO automatically detects the presence of a compatible graphics card and will use it. On systems without a GPU, VIRGO falls back to doing everything on the CPU.
Only Nvidia Compute Unified Device Architecture (CUDA) GPUs are currently supported.
NVIDIA drivers version 418.67 or greater are required. The CUDA toolkit is not required. In addition, you need to install some prerequisites as described below.
DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get install -y gcc make
yum install -y gcc make kernel-devel
yum install -y gcc make "kernel-devel-uname-r == $(uname -r)"
curl -LO http://us.download.nvidia.com/tesla/418.67/NVIDIA-Linux-x86_64-418.67.run
service lightdm stop
sudo bash NVIDIA-Linux-x86_64-418.67.run --silent
Run nvidia-smi
less /var/log/nvidia-installer.log
NVIDIA drivers version 418.67 or greater are required. The CUDA toolkit is not required.
There's nothing you need to do to make this happen; VIRGO automatically detects the presence of a suitable GPU and assigns a feed to it. A feed will automatically fall back to the CPU if there's a problem with the GPU or all GPU resources have been exhausted.
VIRGO also takes advantage of multiple GPUs installed in the system. It automatically distributes feeds across all available GPUs. This enables you to easily scale up a system which allows you to run more feeds on a single VIRGO host.
VIRGO returns comprehensive statistical information about a feed. This includes information about which GPU a feed is running on as well as how much of its processing power it's using per second.
Sometimes more control over which feed is assigned to the CPU vs a GPU is desired. VIRGO allows you to individually specify for each feed whether it should exclusively run on a GPU or the CPU. This allows you to maximize the use of all available GPUs and the CPU by assigning some feeds exclusively to the GPU and some exclusively to the CPU. The following table shows the available feed accelerator configurations:
VIRGO Feed Property | Property Value | Description |
---|---|---|
accelerator | auto | VIRGO will automatically pick the best available acceleration type. For example, VIRGO will assign the feed to one of the available GPUs if there is still processing capacity available. Otherwise VIRGO will assign the feed to the CPU. |
accelerator | cpu | The feed will exclusively run on the CPU and not use any GPU even if a GPU is available. |
accelerator | gpu | The feed will exclusively run on a GPU and not use the CPU for video decoding, graphics processing, or detection. The feed will fail if no GPU is available. |