NvSci#

NvSci is a suite of low-level NVIDIA libraries that provide a unified, OS-agnostic foundation for memory allocation, synchronization, inter-process communication, and data streaming across the NVIDIA DriveOS software stack.

The NVIDIA SDK provides several different libraries (NvMedia, CUDA, Vulkan SC) for generating and processing various types of images and higher dimensional data. The interfaces used by these libraries were written independently to serve different needs, and each has its own means of representing memory and synchronization resources. There is no direct way to exchange data between them. Furthermore, most of the details of how and when resources used by these libraries are allocated is hidden from the applications.

The NvSci libraries serve two primary purposes:

  • They allow resources to be allocated up front, with access defined by the applications, and with details of their overall requirements well understood. This is vital for safety-critical systems that must ensure the availability of resources and proper encapsulation of information.

  • They allow resources to be exchanged between libraries that otherwise do not have knowledge of each other.

This section describes six libraries. NvSciBuf allows applications to allocate and exchange buffers in memory. NvSciSync allows applications to manage synchronization objects that coordinate when sequence of operations begin and end. NvSciStream layers on NvSciBuf and NvSciSync to provide utilities for streaming sequences of data packets between multiple application modules to support a wide variety of use cases. NvSciIpc provides inter-process/partition/system communication capabilities used by the other NvSci libraries. NvSciEvent (NvSciEventService) provides an event-driven framework with OS-agnostic APIs for sending and waiting for events. NvSciC2CPCIe enables chip-to-chip communication over direct PCIe connections between NVIDIA DRIVE SoCs.

Note

NvSci was referred to as NvStreams and NvIpc in past versions of DriveOS.

Guidance for NvSci APIs#

Following is guidance on the use of NvSci APIs:

NvSci APIs must not be used in interrupt and signal handler contexts.

For additional information, refer to the NvSci API content in the NVIDIA DriveOS API Reference.