In its early days, the Holoscan SDK was tightly linked to the GXF core concepts, which included defining tasks in GXF extensions and running a pipeline with GXE using a pure YAML definition. While the Holoscan SDK is still heavily dependent on GXF, the way it does has evolved across each release:
In version 0.3.0, we introduced a new framework with a C++ API to provide an easier and more flexible way to create applications by eliminating the need to compose workflows in YAML files while still using GXF’s features.
In version 0.4.0, we introduced a Python API implemented as bindings on top of the underlying C++ API, enabling the development and execution of applications using a mixture of GXF Operators as well as arbitrary Python objects that allow interfacing with a large ecosystem of powerful GPU-enabled Python libraries (e.g. RAPIDS libraries, CuPy, PyTorch).
In version 0.4.0, we also introduced Native Operators, a more flexible way to create operators directly from the Holoscan C++ or Python APIs without requiring to wrap GXF codelets for the former, or C++ operators for the latter.
While the Python API only consists of lightweight modules that wrap python bindings on top of a performant C++ API, it should be easy to first prototype an application in Python and then translate it to C++ given the similarity of those APIs.
The goal of this section is to provide a deep insight of the Holoscan SDK by covering the following topics: