PVA validation
NVIDIA Jetson AGX Thor integrates a Programmable Vision Accelerator (PVA), a dedicated hardware engine for supported computer vision and image-processing operations.
This OE4T Yocto workspace provides recipes for the PVA kernel driver, firmware, user-space libraries, and NVIDIA Vision Programming Interface (VPI) runtime. The meta-tegra-community layer supplies the VPI sample applications.
This page describes how to verify PVA support and execute PVA-accelerated applications on Jetson AGX Thor using VPI 4 and Jetson Linux R39.2.1.
Overview
Running the VPI PVA examples requires:
- PVA kernel driver and firmware.
- NVIDIA PVA user-space libraries.
- NVIDIA VPI runtime with PVA backend support.
- Sample applications implementing supported algorithms.
The relevant components are distributed across these layers:
| Component | Recipe or package | Layer |
|---|---|---|
| VPI runtime | libnvvpi4
|
meta-tegra
|
| PVA user-space libraries | tegra-libraries-pva
|
meta-tegra
|
| cuPVA runtime libraries | pva-sdk
|
meta-tegra
|
| VPI sample applications | vpi4-samples
|
meta-tegra-community
|
| VPI test scripts | vpi-tests, also provides vpi4-tests
|
meta-tegra-community
|
| Full demo image | demo-image-full
|
meta-tegrademo
|
The demo-image-full recipe includes vpi4-tests, which depends on vpi4-samples. No additional IMAGE_INSTALL setting is required for this image.
The current pva-sdk recipe installs cuPVA runtime libraries. It does not install a complete SDK development environment or SDK examples, and it is not required by the VPI sample recipes described here.
Checking PVA Support on the Target
Run the commands in this section on the Jetson.
Identify the flashed image:
cat /etc/issue
For the full demo image, the output includes:
Image 'demo-image-full' ready on ...
Check whether the PVA device node exists:
ls -l /dev/nvhost-ctrl-pva*
On the tested Thor system, this lists the character device:
/dev/nvhost-ctrl-pva0
The presence of the device node confirms that the driver exposes a PVA device. A successful application workload is needed to validate PVA execution.
Preparing the VPI Samples
Check that the sample applications are installed:
ls /opt/nvidia/vpi4/bin/
Create a writable directory for generated output:
mkdir -p ~/pva-test cd ~/pva-test
Run the following examples from this directory. Video examples can generate large output files; use a filesystem with several GB of available space.
After each sample, check its exit status immediately. A status of 0 indicates successful completion.
Gaussian Filter PVA Benchmark
Run:
/opt/nvidia/vpi4/bin/vpi_sample_05_benchmark pva echo "Exit status: $?"
The benchmark exercises a Gaussian filter using the selected backend. Example output may resemble:
Input size: 1920 x 1080 Image format: VPI_IMAGE_FORMAT_U16 Algorithm: 5x5 Gaussian Filter on pva Approximated elapsed time per call on pva: 0.402835 ms
The dimensions, format, and timing shown here are illustrative. Execution time depends on the sample version, platform configuration, clocks, and operating conditions.
Basic PVA Convolution Test
Run the convolution sample with the PVA backend:
/opt/nvidia/vpi4/bin/vpi_sample_01_convolve_2d \
pva /opt/nvidia/vpi4/assets/kodim08.png
echo "Exit status: $?"
This command was validated on the Jetson AGX Thor running demo-image-full. It completed without console output and returned:
Exit status: 0
The explicit pva argument selects the PVA backend.

Harris Corner Detection
Run:
/opt/nvidia/vpi4/bin/vpi_sample_03_harris_corners \
pva /opt/nvidia/vpi4/assets/kodim08.png
echo "Exit status: $?"
The application detects corner features in the input image. Output may include a keypoint count, for example:
184 keypoints found
The exact count is illustrative, not a pass criterion. Check that the application completes without execution errors and returns 0.

Algorithms Supported by the PVA Backend
The NVIDIA VPI 4.1 platform support table lists the following 28 algorithms with PVA backend support on Jetson Orin and Jetson Thor. Each link provides the algorithm documentation and backend limitations.
Troubleshooting
VPI Samples Are Not Available
If /opt/nvidia/vpi4/bin/ does not exist, identify the image running on the target:
cat /etc/issue
The project's demo-image-full includes the VPI samples automatically. Other images, including demo-image-base, may require an explicit package addition.
For those images, add this to build/conf/local.conf on the build host:
IMAGE_INSTALL:append = " vpi4-samples"
Rebuild the selected image:
bitbake demo-image-base
From the build directory, verify that its manifest contains the samples:
grep '^vpi4-samples ' \
tmp/deploy/images/jetson-agx-thor-devkit/demo-image-base-jetson-agx-thor-devkit.rootfs.manifest
If using demo-image-full, substitute that image name in the build and manifest commands.
Extract the newly generated flash bundle into a fresh directory, put the board into Force Recovery Mode, and flash it using sudo ./initrd-flash.
Flash the same image recipe that was rebuilt. Rebuilding demo-image-base does not update an existing demo-image-full bundle.
PVA Device Is Not Available
Inspect the kernel log:
dmesg | grep -i -E 'pva|vpu'
Check whether the kernel module is installed:
find "/lib/modules/$(uname -r)" -name 'nvhost-pva.ko*'
Check loaded modules:
lsmod | grep -i pva
Also verify that the kernel, firmware, and user-space libraries belong to the BSP used to build the image.