Skip to content

Holoscan SDK v2.2.0 Release

Compare
Choose a tag to compare
@wendell-hom wendell-hom released this 02 Jul 00:30
· 5 commits to main since this release

Release Artifacts

See supported platforms for compatibility.

Release Notes

New Features and Improvements

Core
  • Explicitly delete the copy constructor and assignment operator of Config/Executor/Graph classes private to prevent copying of these objects. This change ensures that the Config/Executor/Graph classes are not copied, as they are not intended to be copied, which is inefficient. This change is backward compatible, as the classes are still movable.
    • [Internal] Application::fragment_graph_ is now a std::shared_ptr to FragmentGraph to prevent copying of FragmentGraph objects in Python bindings.
    • [Internal] Fragment::graph_ is now a std::shared_ptr to OperatorGraph to prevent copying of OperatorGraph objects in Python bindings.
    • [Internal] Added Fragment::config_shared()/Fragment::executor_shared()/Fragment::graph_shared() to return a shared pointer to the Config/Executor/OperatorGraph objects respectively.
Operators/Resources
  • A new decorator, holoscan.decorator.create_op is provided that can wrap an existing function or generator as a native Python Operator. This new API is still considered experimental and may be updated in a subsequent release based on initial feedback. An example of using this decorator is provided under examples/python_decorator/video_replayer.py as well as in the test applications within python/tests/system/test_decorator_apps.py.
Utils
HoloHub
Documentation

Breaking Changes

Bug fixes

Issue Description
4687735 Fixed a bug where the CountCondition in Python doesn't accept a negative value for the count parameter, even though it is allowed in C++. Note that using a negative value for count is not recommended as it would lead to an infinite loop until it reaches the minimum value of the data type (int64_t) and then starts counting down from the maximum value up to zero.
4689604 Fixed a bug where GXF extensions listed in the config file (YAML) are not loaded when GXFCodeletOp or GXFComponentResource is used. Test cases have been added to verify the fix, and the documentation has been updated to reflect the changes. The HOLOSCAN_WRAP_GXF_COMPONENT_AS_RESOURCE macro has also been updated to support the constructor with no arguments.
4706559 Fixed a bug where nullptr was returned even when no message was available in calls to holoscan::IOContext::receive<T*>() or holoscan::IOContext::receive<std::shared_ptr<T>> in the C++ API. Now, the receive method correctly returns a holoscan::unexpected<holoscan::RuntimeError> value when no message is available.

Known Issues

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

Issue Description
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.
4267272 AJA drivers cannot be built with RDMA on IGX SW 1.0 DP iGPU due to missing nv-p2p.h. Expected to be addressed in IGX SW 1.0 GA.
4384768 No RDMA support on JetPack 6.0 DP and IGX SW 1.0 DP iGPU due to missing nv-p2p kernel module. Expected to be addressed in JP 6.0 GA and IGX SW 1.0 GA respectively.
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.
4210082 v4l_camera example seg faults at exit.
4339399 High CPU usage observed with video_replayer_distributed application. While the high CPU usage associated with the GXF UCX extension has been fixed since v1.0, distributed applications using the MultiThreadScheduler (with the check_recession_period_ms parameter set to 0 by default) may still experience high CPU usage. Setting the HOLOSCAN_CHECK_RECESSION_PERIOD_MS environment variable to a value greater than 0 (e.g. 1.5) can help reduce CPU usage. However, this may result in increased latency for the application until the MultiThreadScheduler switches to an event-based multithreaded scheduler.
4318442 UCX cuda_ipc protocol doesn't work in Docker containers on x86_64. As a workaround, we are currently disabling the UCX cuda_ipc protocol on all platforms via the UCX_TLS environment variable.
4325468 The V4L2VideoCapture operator only supports YUYV and AB24 source pixel formats, and only outputs the RGBA GXF video format. Other source pixel formats compatible with V4L2 can be manually defined by the user, but they're assumed to be equivalent to RGBA8888.
4325585 Applications using MultiThreadScheduler may exit early due to timeouts. This occurs when the stop_on_deadlock_timeout parameter is improperly set to a value equal to or less than check_recession_period_ms, particularly if check_recession_period_ms is greater than zero.
4301203 HDMI IN fails in v4l2_camera on IGX Orin Devkit for some resolution or formats. Try the latest firmware as a partial fix. Driver-level fixes expected in IGX SW 1.0 GA.
4384348 UCX termination (either ctrl+c , press 'Esc' or clicking close button) is not smooth and can show multiple error messages.
4481171 Running the driver for a distributed applications on IGX Orin devkits fails when connected to other systems through eth1. A workaround is to use eth0 port to connect to other systems for distributed workloads.
4458192 In scenarios where distributed applications have both the driver and workers running on the same host, either within a Docker container or directly on the host, there's a possibility of encountering "Address already in use" errors. A potential solution is to assign a different port number to the HOLOSCAN_HEALTH_CHECK_PORT environment variable (default: 8777), for example, by using export HOLOSCAN_HEALTH_CHECK_PORT=8780.
Wayland: holoscan::viz::Init() with existing GLFW window fails.