Skip to content

What's New in Holoscan 4.5: Faster TensorRT Inference, Clearer Config Names, and Event-Based Scheduling

Written August 3, 2026

Holoscan SDK 4.5 follows the focused, developer-facing cadence of Holoscan 4.4 with a release that accelerates common TensorRT inference paths automatically, clarifies inference configuration naming, and sharpens multi-threaded runtime guidance — plus documentation and build polish that make the SDK easier to navigate and maintain.

You can grab it today as a Docker container (v4.5.0-cuda13, v4.5.0-cuda12-dgpu, v4.5.0-cuda12-igpu), a Python wheel for CUDA 12 (holoscan, pip install holoscan==4.5.0) or CUDA 13 (holoscan-cu13, pip install holoscan-cu13==4.5.0), Conda packages (conda install holoscan libholoscan-dev rmm ucxx cuda-version=13 -c rapidsai -c conda-forge), Debian packages (4.5.0.0-1), or via the OpenEmbedded/Yocto deployment stack for production BSPs on NVIDIA developer kits.

InferenceOp Picks Optimized TensorRT Paths Automatically

InferenceOp now automatically selects optimized TensorRT dispatch paths for eligible single- and multi-model pipelines, including static- and dynamic-shape execution in sequential or parallel configurations. Existing configurations require no new options: if your pipeline uses TensorRT backends and does not rely on advanced features such as activation_map, temporal_map, or multi-GPU device_map, the operator routes to one of six fast paths at start-up. Unsupported backends and advanced configurations continue to use the standard dispatch path.

The Inference guide documents eligibility and which path is selected for each pipeline shape. No additional YAML keys are needed — fast paths activate from your existing config:

inference:
  backend: "trt"
  model_path_map:
    "detector": "models/detector.onnx"
  input_map:
    "detector": ["input_tensor"]
  output_map:
    "detector": ["output_tensor"]

Alongside the performance work, inference configuration naming is clearer: input_map and output_map are now the preferred names for model-to-tensor mappings. The legacy keys pre_processor_map and inference_map remain supported for backward compatibility — existing configs continue to work unchanged — but new applications should prefer the updated names for readability.

Docs and Source-Build Polish

The Holoscan SDK User Guide now includes an Archives entry in the documentation version selector, linking to previous Holoscan SDK releases for teams maintaining long-lived deployments against older versions. The Inference and Schedulers guides were also updated for this release — covering TensorRT fast-path dispatch, the preferred input_map / output_map names, and the EventBasedScheduler recommendation described below.

Source-project workflows should invoke the Holoscan CLI through the repository-provided wrapper so project-specific defaults are applied correctly — the user guide now calls this out explicitly.

For source builds, CUDA architecture selection now accepts semicolon-delimited lists in addition to comma- and space-delimited lists. Under the hood, the Graph Execution Framework (GXF) dependency is updated to version 5.7.1 with minor security fixes.

Reliability Fixes

Distributed applications could stochastically fail at startup on UCX 1.20 with UCX ERROR UCX_KEEPALIVE_INTERVAL value must be greater than 0 when child processes inherited a zero-initialized keepalive interval after fork(). Release containers now set UCX_KEEPALIVE_INTERVAL=20s in the environment to address this.

HolovizOp no longer segfaults when both use_exclusive_display=true and vsync=true are enabled. The present mode is now set before swapchain creation to avoid an immediate recreation on the exclusive display-plane surface.

MultiThreadScheduler is now identified as a legacy scheduler retained for backward compatibility. For new multi-threaded applications, EventBasedScheduler is the recommended choice: it avoids the polling-thread CPU overhead of the older scheduler and supports CPU thread pinning and Linux real-time scheduling policies (SCHED_FIFO, SCHED_RR, SCHED_DEADLINE) via user-defined thread pools.

Multi-threaded examples now use EventBasedScheduler by default while retaining an option to select the legacy MultiThreadScheduler for comparison (C++: the scheduler entry in the example YAML; Python: the --multi_thread flag). If you're starting a new parallel pipeline, you should not need to change anything — but if you still depend on the polling-based scheduler, the Schedulers guide documents both paths and the migration rationale.

scheduler = holoscan.schedulers.EventBasedScheduler(
    fragment,
    worker_thread_number=4,
)

Getting Started

The fastest way to try 4.5 is pip install holoscan==4.5.0 (CUDA 12) or pip install holoscan-cu13==4.5.0 (CUDA 13), or pull the container from NGC. Full details, including platform compatibility and the complete release notes, are in the Holoscan SDK User Guide and the v4.5.0 release notes. Join the conversation on the NVIDIA Developer Forum or Discord, and explore the source on GitHub. As always, contributions to HoloHub are welcome — if you've built something on Holoscan, we'd love to see it land in the reference catalog.