GPU Support

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.

Linux GPU Requirements and Prerequisites

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.

Install Prerequisities

  1. Install dependencies.
    • For Ubuntu: Run DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get install -y gcc make
    • For Centos: Run yum install -y gcc make kernel-devel
    • For Amazon: Run yum install -y gcc make "kernel-devel-uname-r == $(uname -r)"
  2. Download the most recent NVIDIA Linux drivers from https://www.nvidia.com/object/unix.html.
    • Example: curl -LO http://us.download.nvidia.com/tesla/418.67/NVIDIA-Linux-x86_64-418.67.run
  3. Stop x-windows, if running:
    • For Ubuntu: Run service lightdm stop
  4. Run driver installer:
    • Run sudo bash NVIDIA-Linux-x86_64-418.67.run --silent
  5. Verify that your installation was successful:
    • Run nvidia-smi

  6. If your installation was unsuccessful, view the log:
    • Run less /var/log/nvidia-installer.log

Windows GPU Requirements

NVIDIA drivers version 418.67 or greater are required. The CUDA toolkit is not required.

Enable a Feed to Run on a GPU

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.

Manual Feed Assignment

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.

See Also