Skip to content

Holoscan SDK v0.6.0

Compare
Choose a tag to compare
@agirault agirault released this 31 Jul 20:40
· 10 commits to main since this release

Release Artifacts

Release Notes

New Features and Improvements

Core
  • Multi-fragments application support for distributed workloads (doc)
  • Async run (doc)
  • Multithread scheduler (doc1, doc2)
  • Async and Periodic conditions (doc1, doc2)
  • Realtime and Manual Clock classes (doc)
  • Optional GXF Parameter support
  • Topologically sorted Graph initialization (doc)
  • Data Flow Tracking (doc)
  • Lazy import of individual operator modules in python
Operators
  • A V4L2 operator supporting input video streams USB and HDMI IN was added (example)
  • Improvements to the Inference (previously MultiAIInference) operator (doc), including:
    • Torch support
    • Multi backend support
    • Multi I/O support
  • Improvements to the Holoviz (visualization) operator (doc), including:
    • Dynamic text support
    • Multi-views support
    • Multi-GPU data transfer support
Utils
  • Application packager and runner (doc)
  • A new HOLOSCAN_LOG_FORMAT environment variable has been added to allow user to modify logger message format at runtime
  • Auto loading of log verbosity environment variable (HOLOSCAN_LOG_LEVEL) and YAML config path (HOLOSCAN_CONFIG_PATH)
  • Script to decode GXF entities files (doc)
HoloHub
Documentation

Breaking API Changes

Core
  • The function holoscan::InputContext::receive has been modified to return holoscan::expected<DataT, holoscan::RuntimeError> instead of std::shared_ptr<DataT> where it returns either a valid value or an error (with the type and explanation of the error). Note that IO objects are not all assumed to be wrapped in a std::shared_ptr anymore.
  • Messages of type gxf::Entity between GXF based Operators and Holoscan Native Operators have been modified to type holoscan::TensorMap in C++ and dict type of objects in Python .
Operators
  • The deprecated TensorRT inference operator was removed in favor of the Multi AI Inference operator, which was renamed to Inference operator (doc):
    • Include headers:
      • holoscan/operators/tensor_rt/tensor_rt_inference.hpp removed
      • holoscan/operators/multiai_inference/multiai_inference.hpp renamed to holoscan/operators/inference/inference.hpp
      • holoscan/operators/multiai_postprocessor/multiai_postprocessor.hpp renamed to holoscan/operators/inference_processor/inference_processor.hpp
    • C++ classes:
      • holoscan::ops::TensorRtInferenceOp removed
      • holoscan::ops::MultiAIInferenceOp renamed to holoscan::ops::InferenceOp
      • holoscan::ops::MultiAIPostprocessorOp renamed to holoscan::ops::InferenceProcessorOp
    • CMake targets:
      • holoscan::ops::tensor_rt removed
      • holoscan::ops::multiai_inference renamed to holoscan::ops::inference
      • holoscan::ops::multiai_postprocessor renamed to holoscan::ops::inference_processor
Utils
  • The function holoscan::load_env_log_level has been removed. The HOLOSCAN_LOG_LEVEL environment is now loaded automatically.
HoloHub
  • The class ops::VideoDecoderOp has been replaced with the classes ops::VideoDecoderRequestOp, ops::VideoDecoderResponseOp and ops::VideoDecoderContext
  • The class ops::VideoEncoderOp has been replaced with the classes ops::VideoEncoderRequestOp, ops::VideoEncoderResponseOp and ops::VideoEncoderContext

Bug fixes

Issue Description
3762996 nvidia-peermem.ko fails to load using insmod on Holoscan devkits in dGPU mode.
4048062 Warning or error when deleting TensorRT runtime ahead of deserialized engines for some versions of TensorRT
4036186 H264 encoder/decoder are not supported on iGPU

Supported Platforms

Note: This release is intended for use with the listed platforms only. NVIDIA does not provide support for this release on products other than those listed below.

Platform OS
NVIDIA IGX Orin Developer Kit NVIDIA HoloPack 2.0 (L4T r35.3.1) or
Meta Tegra Holoscan 0.6.0 (L4T r35.3.1)
NVIDIA Jetson AGX Orin Developer Kit NVIDIA JetPack r35.1.1
NVIDIA Clara AGX Developer Kit NVIDIA HoloPack 1.2 (L4T r34.1.2) or
Meta Tegra Holoscan 0.6.0 (L4T r35.3.1)
x86_64 platforms with Ampere GPU or above
(tested with RTX6000 and A6000)
Ubuntu 20.04

Known Issues

This section supplies details about issues discovered during development and QA but not resolved in this release.

Issue Description
3878494 Inference fails after tensorrt engine file is first created using BlockMemoryPool. Fix available in TensorRT 8.4.1. Use UnboundedAllocator as a workaround.
3599303 Linux kernel is not built with security hardening flags. Future releases will include a Linux kernel built with security hardening flags.
3881725 VK_ERROR_INITIALIZATION_FAILED with segmentation fault while running High-Speed Endoscopy gxf/cpp app on Clara AGX developer kits. Fix available in CUDA drivers 520. Workaround implemented since v0.4 to retry automatically.
4047688 H264 applications are missing dependencies (nvidia-l4t-multimedia-utils) to run in the arm64 dGPU container
4062979 When Operators connected in a Directed Acyclic Graph (DAG) are executed in a multithreaded scheduler, it is not ensured that their execution order in the graph is adhered.
4068454 Crash on systems with NVIDIA and non-NVIDIA GPUs. Workaround documented in Troubleshooting section of the GitHub README.
4101714 Vulkan applications fail (vk::UnknownError) in containers on iGPU due to missing iGPU device node being mounted in the container. Workaround documented in run instructions.
4171337 AJA with RDMA is not working on integrated GPU (IGX or AGX Orin) due to conflicts between the nvidia-p2p and nvidia driver symbols (nvidia_p2p_dma_map_pages). Fixed in JetPack 5.1.2, expected in HoloPack 2.1
4185260 H264 application process hangs after X11 video exit.
4185976 Cycle in a graph is not supported. As a consequence, the endoscopy tool tracking example using input from an AJA video card in enabled overlay configuration is unfunctional. This is planned to be addressed in the next version of the SDK.
4187826 Torch backend in the Inference operator is not supported on Tegra's integrated GPU.
4187787 TensorRT backend in the Inference operator prints Unknown embedded device detected. Using 52000MiB as the allocation cap for memory on embedded devices on IGX Orin (iGPU). Addressed in TensorRT 8.6+.
4190019 Holoviz segfaults on multi-gpu setup when specifying device using the --gpus flag with docker run. Current workaround is to use CUDA_VISIBLE_DEVICES in the container instead.
4196152 Getting "Unable to find component from the name ''" error message when using InferenceOp with Data Flow Tracking enabled.
4199282 H264 applications may fail on x86_64 due to ldd picking up system v4l2 libraries ahead of the the embedded nvv4l2 libraries.
4206197 Distributed apps hang if multiple input/output ports are connected between two operators in different fragments.
4210082 v4l_camera example seg faults at exit.
4212743 Holoscan CLI packager copies into the App Package the unrelated files and folders in the same folder than the model file.
4211815 Cannot build AJA drivers on x86_64 with NVIDIA drivers 535. This works with previous NVIDIA driver versions.
4211747 Communication of GPU tensors between fragments in a distributed application can only use device (GPU) 0.
4214189 High CPU usage with video_replayer_distributed app.
4232453 A segfault occurs if a native Python operator __init__ assigns a new attribute that overrides an existing base class attribute or method. A segfault will also occur if any exception is raised during Operator.__init__ or Application.__init__ before the parent class __init__ was called.
4260969 App add_flow causes issue if called more than once between a pair of operators.
4272363 A segfault may occur if an operator's output port containing GXF Tensor data is linked to multiple operators within the MultiThreadScheduler.
4293729 Python application using MultiThreadScheduler (including distributed application) may fail with GIL related error if SDK was compiled in debug mode.