Holoscan SDK v0.6.0
Release Artifacts
- π Docker container: tag
v0.6.0-dgpu
andv0.6.0-igpu
- π Python wheel:
holoscan==0.6.0
- π¦οΈ Debian package: tags
v0.6.0-amd64
andv0.6.0-arm64
- π Documentation
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
- Volume rendering support with ClaraViz (operator, application)
- Development container support (doc)
Documentation
- New Getting Started section
- Improved and consolidated SDK Installation section
- Various additions and improvements
Breaking API Changes
Core
- The function
holoscan::InputContext::receive
has been modified to returnholoscan::expected<DataT, holoscan::RuntimeError>
instead ofstd::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 astd::shared_ptr
anymore. - Messages of type
gxf::Entity
between GXF based Operators and Holoscan Native Operators have been modified to typeholoscan::TensorMap
in C++ anddict
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
removedholoscan/operators/multiai_inference/multiai_inference.hpp
renamed toholoscan/operators/inference/inference.hpp
holoscan/operators/multiai_postprocessor/multiai_postprocessor.hpp
renamed toholoscan/operators/inference_processor/inference_processor.hpp
- C++ classes:
holoscan::ops::TensorRtInferenceOp
removedholoscan::ops::MultiAIInferenceOp
renamed toholoscan::ops::InferenceOp
holoscan::ops::MultiAIPostprocessorOp
renamed toholoscan::ops::InferenceProcessorOp
- CMake targets:
holoscan::ops::tensor_rt
removedholoscan::ops::multiai_inference
renamed toholoscan::ops::inference
holoscan::ops::multiai_postprocessor
renamed toholoscan::ops::inference_processor
- Include headers:
Utils
- The function
holoscan::load_env_log_level
has been removed. TheHOLOSCAN_LOG_LEVEL
environment is now loaded automatically.
HoloHub
- The class
ops::VideoDecoderOp
has been replaced with the classesops::VideoDecoderRequestOp
,ops::VideoDecoderResponseOp
andops::VideoDecoderContext
- The class
ops::VideoEncoderOp
has been replaced with the classesops::VideoEncoderRequestOp
,ops::VideoEncoderResponseOp
andops::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. |