Difference between revisions of "GstCUDA - Features and Limitations"

From RidgeRun Developer Connection
Jump to: navigation, search
m
m
Line 36: Line 36:
 
* There are plans in the future to extend support for EGL memory type buffers being directly accepted as inputs.
 
* There are plans in the future to extend support for EGL memory type buffers being directly accepted as inputs.
  
}}
+
|GstCuda Features,GstCuda Key Features,GstCUDA project}}

Revision as of 03:19, 1 December 2018


Home


Home

Supported Platforms



GstCUDA project general characteristics

GstCUDA characteristics:

  • Easy CUDA algorithm integration into GStreamer pipelines.
  • Complexity abstraction of both CUDA and GStreamer - allowing the developer to focus on the CUDA algorithm.
  • Optimal performance assurance for GStreamer/CUDA applications on Jetson platforms.

Key Features

GstCUDA key features:

  • Offers a framework allowing users to develop custom GStreamer elements that can execute any CUDA algorithm. The framework consists of a series of base classes that abstract the complexity of GStreamer and CUDA integration.
  • Zero memory copy interface between CUDA and GStreamer on Jetson TX1/TX2 platforms.
  • GstCUDA supports two modes of memory handling:
    • NVMM direct mapping mode: use the GstCUDA API's to directly handle NVMM memory buffers. This method provides 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 passes the buffer to the GPU, providing zero memory copies and maintaining an excellent performance. This mode has a lower performance in comparison with the "Unified memory allocator mode". The Unified memory allocator is used in conjuction with V4L2 and user-space buffers.
    • Both modes are supported in Jetpack 3.0, however NVMM direct mapping mode is not supported for Jetpack 3.1.
    • The two memory handling modes allow GstCUDA to support NVMM buffers, V4L2 buffers and user-space buffers.
  • 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. Handles up to 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 quick prototyping GStreamer elements, with different input/output 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 loaded dynamically during run-time, passed to the GstCUDA element by setting an element property value. The user can choose between the different provided elements, to find the one that best matches the 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. Using run-time linking allows the CUDA algorithm to be swapped out or updated without having to rebuild any of the GStreamer source.
  • Provides integrated ad-on elements; that consist of a complete shared library which execute a specific CUDA algorithm. 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.
  • 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.
  • There are plans in the future to extend support for EGL memory type buffers being directly accepted as inputs.




Home


Home

Supported Platforms