Release Notes#

This page contains the release notes for PVA SDK 2.10.1.

Supported Platforms and Devices#

Development environment#

The PVA SDK is designed for cross-compilation from an x86-64 development environment. Supported development operating systems for this release are:

  • Ubuntu 22.04

  • Ubuntu 24.04

The PVA SDK may be used on a supported OS installation or via Docker. Refer to Installation and PVA SDK samples for more details on host setup and dependencies.

Targets#

Supported targets are:

  • DRIVE OS 7.0 or greater

  • JetPack 6.0 or greater

  • EMU on x86

PVA Architectures#

This release of PVA SDK supports Orin and Thor PVA architectures.

New Features in PVA SDK 2.10#

The following features were added with PVA SDK 2.10.

Runtime API Features#

  • Added cupva::Stream::synchronize() and CupvaStreamSynchronize() to wait for previously submitted work on a Stream to complete.

  • Added cupva::SequenceDataFlowTransfer::bpp() to set the bytes per pixel for SequenceDataFlow transfers. The value defaults to 1 for backward compatibility.

  • Added a small performance improvement when using Sampler APIs, such as cupvaSamplerSetup(), in 1D mode.

  • Added cupva::GetStatus(), which returns an object that indicates the health of the current Context and identifies any command that caused the Context to enter an error state. Refer to Asynchronous Context errors for more details. VMEM Scalars and CheckCmdStatus tutorial is updated to demonstrate new API usage.

  • Improved the performance of most PVA APL APIs on Thor.

  • Added clearer error reporting on DMA resource exhaustion.

  • Added cupvaLinearCounts() device API to generate a linear counts sequence in a vector register.

Development Tools#

  • Added GDB symbol files for the cuPVA host runtime to improve the debugging experience. Refer to GDB Symbols for Host Code Debugging for more details.

  • Added the NVVPU toolchain for compiling, linking, and debugging VPU code. Enable it by passing -DPVA_USE_NVVPU=ON to CMake. For details, refer to NVVPU Toolchain and VPU Debugging. NVVPU is currently only supported in non-safety builds.

  • Added a new development platform, EMU, which supports running cuPVA applications on an x86 host. Enable EMU by passing -DPVA_BUILD_MODE=EMU to CMake.

Compatibility and Deprecations in PVA SDK 2.10#

The following changes were made with PVA SDK 2.10.

Bug Fixes#

The following bugs have been fixed in this version.

Reference

Description

Fix information

Affected platforms

PVAAS-23390

GSDF 1D APIs could report an incorrect height.

Fixed

Thor

PVAAS-23540

GSDF multiplanar offsets were sometimes incorrect.

Fixed

Orin

PVAAS-23551

Failure to finalize a Context could cause the process to exit improperly.

Fixed

Orin and Thor

PVAAS-23163

Allocating CUDA memory could unnecessarily increase a process’s file descriptor usage.

Fixed

Orin and Thor

PVAAS-23139

In rare cases, the PPE/VPU handshake could lose synchronization.

Fixed

Thor

PVAAS-23550

Command buffers submitted in parallel may produce inconsistent results.

Fix implemented in DMA native model.

Native

Known Issues#

This release contains the following known issues:

Reference

Description

Suggested workaround

Projected closure

PVAAS-16827

When linking StaticDataFlows with constant padding, the constant value must be the same even if px/py are both zero for one of the dataflows. Failure to do so leads to Dataflow compilation failing.

Use the same constant value in these cases.

Not planned

PVAAS-12732

A StaticDataFlow specifying VMEM->VMEM transfer cannot be linked to a StaticDataFlow specifying DRAM->VMEM transfer.

Use unlinked DataFlows for these cases.

Not planned

PVAAS-6633

NvSci APIs and CUDA interoperability are not supported for native.

Decouple interop from execution to allow testing kernels in isolation in native.

Not planned

PVAAS-16828

Multiple cupva::RasterDataFlow sharing the same handler and configured with different PadModeType can lead to incorrect values in tile padding.

Use separate handlers for such cases.

Not planned

PVAAS-17465

When using a single UnifiedRDFHandler for multiple tile buffers in circular buffer mode, only the tilebuffer specified to cupvaRasterDataFlowOpen() will have its tail properly copied.

Explicitly copy 64B of secondary tilebuffers using cupvaCircularBufferMemcpy().

Future feature release

PVAAS-21339

CUDA interoperability tutorial build fails with cmake lesser than 3.22 while using CUDA sbsa package

Use cmake version 3.28 or higher.

Future feature release

PVAAS-21180

When using RasterDataFlow with tiles larger than 64k pixels (including halo), RDF_DOUBLE or larger VMEM buffer size, and non-zero halo or ROI and/or an odd number of tiles in the first dimension of traversal, the tile pattern may fall back to SINGLE buffering, reducing performance.

Either reduce tile size below 64k pixels, or use SequenceDataFlow to manually implement double buffering.

Not planned

PVAAS-6633

NvSci APIs and CUDA interoperability are not supported for EMU.

Add explicit copies when interoperating with CUDA or NvSci.

Future feature release

PVAAS-23339

Freeing an L2SRAM mapping created with cupva::mem::MapL2() does not invalidate that mapping on the device. A cache line left dirty by the mapping may later be evicted into the backing DRAM buffer, overwriting it. This can corrupt data written after the mapping was freed, including data in a different buffer that has since been allocated at the same address.

Submit cupva::CmdL2Ops::Create() with cupva::mem::L2OperationType::INVALIDATE for the mapping and wait for it to complete, before calling cupva::mem::Free() on the mapping and on its backing DRAM buffer.

Future feature release

PVAAS-23697

NVVPU-compiled code may execute slower than equivalent code compiled with ASIP Programmer.

None.

Future feature release

PVAAS-23698

NVVPU always fills branch delay slots with NOPs.

None.

Future feature release

PVAAS-23699

NVVPU does not diagnose static stack allocations that exceed available stack memory.

Verify stack usage manually.

Future feature release