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()andCupvaStreamSynchronize()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=ONto 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=EMUto CMake.
Compatibility and Deprecations in PVA SDK 2.10#
The following changes were made with PVA SDK 2.10.
cupva::mem::GetHostPointer()andCupvaMemGetHostPointer()no longer support CUDA device pointers. Use the appropriate CUDA APIs to access host-mapped pointers for these allocations.cupva::CmdStatusandcupvaCmdStatus_tare now deprecated. Usecupva::GetStatus()orCupvaGetStatus()instead.Previously, if a command in a submission generated an error while executing on the PVA, the remaining commands in that submission were discarded. Now, any device error invalidates the cuPVA Context, which then rejects future submissions.
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 |
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 |
Explicitly copy 64B of secondary tilebuffers using |
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 |
Submit |
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 |