GstCUDA - Features and Limitations

From RidgeRun Developer Connection
Revision as of 19:26, 9 January 2018 by Dgarbanzo (talk | contribs)
Jump to: navigation, search

Home


Home

Supported Platforms



This page describes the GstCUDA features and limitations.

GstCUDA project general characteristics

The GstCUDA project exposes the following general characteristics:

  • CUDA algorithm easy integration into GStreamer pipelines.
  • Complexity abstraction of both CUDA and GStreamer.
  • Optimal performance assurance for GStreamer/CUDA applications on Tegra platforms.


Key Features

The GstCUDA project exposes the following general key features:

  • Offers a framework allowing users to develop custom GStreamer elements that could execute any CUDA algorithm. The framework consists in a series of base classes that abstracts the complexity of GStreamer and CUDA integration. Also, GstCUDA provides a set of quick prototyping elements.
  • Guarantees zero memory copy interface between CUDA and GStreamer on Tegra X1/X2 platforms.
  • GstCUDA supports two modes of memory handling:
    • NVMM direct mapping mode: use the GstCUDA API's to directly handle NVMM memory buffers type. This method guarantee the best possible performance on the Tegra platforms.
    • Unified memory allocator mode: avoids the use of NVMM memory buffers by providing a memory allocator that directly pass the buffer to the GPU, guaranteeing zero memory copies and maintaining an excellent performance. This mode has a lower performance in comparison with the "Unified memory allocator mode".
    • Both modes are supported for Jetpack 3.0, however NVMM direct mapping mode is not supported for Jetpack 3.1.
    • This two memory handling modes allows GstCUDA to support NVMM buffers, V4L2 buffers and user-space buffers.
  • Provides the necessary APIs to directly handle NVMM buffers type to achieve the best possible performance on the Tegra platforms.
  • Supports heavy CUDA algorithms and large amounts of data to be processed on the GPU without performance being affected due to copies or memory conversions. Could handle 2x 4K 60fps streams simultaneously with "NVMM direct mapping mode" and 2x 4K 40fps streams simultaneously with "Unified memory allocator mode".
  • Provides a set of video filter GStreamer elements, with different input/output pads combinations, that allows video frames to be processed by the GPU using a custom CUDA library algorithm. Those elements executes the CUDA algorithm from a custom CUDA library (XXX.so file) loaded dynamically during run-time, passed trough an element's property. The user can choose between the different provided elements, to find the one that best adjust to its project requirements. It is ideal for quick prototyping, because the CUDA algorithm is separated from the GStreamer element, so the user could make modifications to the CUDA algorithm, recompile the custom CUDA library and run the GStreamer pipeline again to test it.
  • Provides ad-ons, that consists in full complete and terminated elements that executes a specific CUDA algorithm that is integrated into the element code. Those ad-ons elements are based on the GstCUDA framework, and clearly shows the potential of this framework being used to generate a final product.


Limitations

The current release exposes the following limitations and known bugs:

  • It only supports Tegra X1/X2 platforms. There are plans in the future to extend support for PC systems that has Nvidia's GPUs.
  • There are plans in the future to extend support for EGL memory type buffers being directly accepted as inputs.
  • Both NVMM direct mapping mode and Unified memory allocator mode modes are supported for Jetpack 3.0, however NVMM direct mapping mode is not supported for Jetpack 3.1.




Home


Home

Supported Platforms