Skip to navigation

Glossary

View as Markdown

This glossary defines the core vocabulary of Holoscan SDK 5.x. Each entry gives a short working definition and links to the page that owns the concept in depth. Terms are alphabetical; C++ spellings match the public headers under include/holoscan/.

If you are new to the SDK, start with Core concepts — this page is a lookup reference, not a tutorial.

A

activation One invocation of an operator’s compute() callback, produced when the operator’s temporal contract is satisfied. The runtime records why it fired and which inputs participated (ActivationReason, InputSelection). See Temporal contracts.

admission The compile-time gate that decides whether a composed graph becomes a runnable execution plan. Admission never throws: compile() returns a plan whose disposition may be rejected, with evidence attached. See Compile and check.

B

backpressure A refusal to accept more publications when bounded downstream capacity is full. The blocking queue policy preserves accepted samples; an emit can still return kBackpressured and propagating it from compute() normally fails the run. See Understanding failures.

C

catalog A plan-derived, read-only index of addressable entities. The parameter catalog (ParameterCatalogView) lists every parameter field an external client may update; the channel endpoint catalog lists the endpoints a standalone process may attach to. See Runtime parameter updates and Standalone channel clients.

channel The bounded, typed transport the runtime materializes for each connection in a compiled plan. Inside a graph you never create channels directly — you wire ports; the ChannelRuntime client API exists only for standalone processes. See Interprocess channels.

clock domain The identity of a time base carried by a TimePoint. Compare physical time coordinates only in the same domain or through an admitted conversion. See Time and clocks.

compute stream The CUDA stream the runtime assigns to an activation, available as ctx.cuda_stream() inside compute(). By default, CUDA-active operators share one stream within each process group, execution partition, and device; a compile option can instead share one ordinary stream across a process group and device. Received tensors are already ordered on the assigned stream, so hot-path work needs no manual synchronization. See Tensors 101.

contract Shorthand for the temporal contract an operator declares in contract(): the trigger, input selection, and missing-data policy the runtime must satisfy before invoking compute(). See temporal contract below and Temporal contracts.

D

deadline A scheduling property attached to an execution lane (DeadlineScheduling) that asks the OS for deadline-class scheduling; if the host cannot honor it, the plan can be configured to fail admission rather than run degraded. See Performance considerations.

diagnostics token The stable, machine-matchable string carried by a Diagnostic record (its token field). Tokens come from a registry spelling, not free-form log prose, so tests and tooling can match failures exactly. See Understanding failures.

dispatcher The runtime component that evaluates temporal contracts against arriving samples and clock ticks, and schedules activations onto execution lanes. You never call it directly, but several APIs forbid use from Dispatcher callbacks. See Performance model.

E

emit burst The maximum publications one output may make per compute call, max_emits_per_compute (default one).

end of stream (EOS) A source-output closure witness. Finite-source completion closes outputs and lets downstream drain before natural whole-graph completion. Immediate requested completion does not imply EOS.

execution lane A runtime serial execution owner for an execution partition. See Graph composition.

execution plan The immutable artifact returned by holoscan::compile(graph) (ExecutionPlan). It freezes topology, contracts, pools, and policies, and is the only thing run() accepts. Plans carry their own admission disposition and evidence. See Compile and check.

F

fail closed Refuse admission or stop execution when declared requirements cannot be met, rather than silently substituting weaker behavior.

G

generation (parameters) A monotonically numbered, atomically published snapshot of an operator’s parameter values (ParamGeneration). Each activation pins exactly one generation; updates create a new generation rather than mutating in place. See Runtime parameter updates.

graph The composable description of operators and their port-to-port connections (Graph), built with add_flow() during the compose phase. A graph is inert data until it is compiled into an execution plan. See Composing a graph.

L

lifecycle restart A bounded, permissioned transaction that rewinds an operator — together with its compiler-frozen lifecycle-dependency closure — to a forward stage and drives it back to kStart. Operators outside the closure are not restarted and receive no lifecycle callbacks; they may continue computing, but scheduler, partition, and safe-point effects do not guarantee uninterrupted progress. The requested stage may widen toward kConfigure, and the transaction is fenced to a control safe point so it never lands mid-compute(). See Restart control.

lifecycle stage One of the ordered stages (LifecycleStage) an operator moves through between construction and teardown — for example the arm stage binds current-generation external and readiness capabilities. Operators observe transitions through lifecycle callbacks, authored either as simple start()/stop() overrides or as sparse advanced stage callbacks. Every operator has one logical checkpoint per stage; at most one application callback occupies it, and an empty checkpoint is recorded as successfully skipped. See Lifecycle callbacks.

loan A temporary, exclusive borrow of a pool slot for writing output data. allocate_tensor() returns a loan (TensorOutputLoan in-graph, TensorPublishLoan for channel clients); committing it publishes the slot and records readiness on the compute stream. See Tensors in depth.

M

maximum start delay The positive duration from a trigger’s frozen source instant to its latest permitted compute start, authored with max_start_delay() (formerly deadline()). Transport and queueing consume the budget. The final check runs immediately before compute entry; equality is on time and callback duration is excluded. The source instant depends on the trigger. See Maximum start delay and the migration map.

missing-data policy The part of a temporal contract that says what happens when a required input is absent or stale at trigger time: Skip the activation, substitute a SafeDefault, or ReuseLast within a freshness bound. See Temporal contracts.

module A separately selectable library that extends holoscan::core with a domain-specific capability — operators, their backend, examples, and tests. Core modules (Inference, Vision, Visualization) are developed in the SDK repository and released on the SDK cadence as separate, optional Debian packages and Python wheels; ecosystem modules are published as separate project repositories. See Holoscan Modules.

O

operator The unit of computation in a graph, defined by three declarations: setup() (structure — ports and parameters), contract() (time), and compute() (work). compute() is intentionally oblivious to temporal concerns. See Operator anatomy.

P

plan digest A compact fingerprint (PlanDigest) of a compiled plan’s canonical content. Tools use it to detect whether a saved artifact — a parameter snapshot, a replay trace — still matches the plan it was captured against. See Plan tooling.

pool A preallocated, fixed-capacity set of resources sized at compile time — tensor slots (BlockMemoryPool), CUDA streams (CudaStreamPool), events. Pools are how the runtime stays bounded by construction; exhaustion surfaces as kResourceExhausted, never as an unbounded allocation. See Tensors in depth.

port A typed endpoint declared on an operator in setup(): Input<T> receives samples, Output<T> emits them. Ports are the only way operators inside a graph exchange data; add_flow() connects them. See Your first operator.

partition An exact, non-overlapping set of operators sharing one serial execution owner (ExecutionPartitionRecord). The compiler can partition an unauthored graph; manual partitions and auto_partition_remaining() express additional intent. Regions remain separate analysis and admission metadata. See Graph composition.

Q

queue depth and policy Depth is the finite number of retained entries for an edge. It is explicitly pinned or derived from admitted evidence, with a bounded fallback. Policy chooses blocking preservation of accepted samples or intentional oldest-sample replacement (kDropOldest). Neither is a general callback-retry mechanism. See Composing a graph.

R

readiness stream The CUDA-stream ordering chain that makes a published tensor safe to consume: committing a loan records a readiness event on the producer’s stream, and the receiving activation’s compute stream waits on it automatically. See Tensors in depth.

region A named analysis and admission scope (RegionRecord) that groups operators sharing profile, placement, resource, or optimization constraints. Regions may overlap and do not define execution ownership; use a partition for that. See Plan tooling.

run session The handle for one execution of a plan (RunSession). It owns startup and shutdown, exposes stop and restart control, and reports how the run terminated (RunTermination). The blocking convenience holoscan::run(plan) wraps one session and, on Linux, manages SIGINT/SIGTERM by default. Its transient path requires exactly one live process task at both admission census reads; multithreaded hosts use an early managed domain or caller-managed policy. See Running and stopping.

S

sample One unit of data traveling through a graph: a payload plus its metadata (Sample, SampleMetadata — tag, timestamps, flags). Contracts select and align samples; compute() reads and emits them. See Core concepts.

selector The input-selection part of a temporal contract: which pending samples on a port participate in an activation — Exact, LatestWithin, DrainAll, or BracketedWindow. Selectors bound queue depth at compile time. See Temporal contracts.

T

tag An activation-candidate identity (Tag), containing a sequence and execution generation. TagTime is a separate local logical ordering coordinate (logical_ns, microstep), not a capture timestamp or a Tag/time pair. See Determinism and replay.

temporal contract The full declaration an operator makes in contract() about when it runs: the trigger, per-input selectors, and missing-data policies. Contracts are checked and frozen at compile time, so compute() never reasons about time. See Temporal contracts.

tensor The SDK’s n-dimensional, device-aware data payload. Output tensors are borrowed from preallocated pools via allocate_tensor(); received tensors arrive already ordered on your compute stream, and host access is explicit. See Tensors 101.

topic A named boundary port on a graph that exposes an internal connection to the outside world: ExportedTopic publishes out of the graph, ImportedTopic accepts data in, with attach policies (TopicOptions) governing peers. See External topics.

trigger The part of a temporal contract that says what causes an activation: OnEach (a sample on one input), OnAnyInput, OnClock (a periodic schedule), OnAligned, OnWindow, or OnInputUpdate. See Temporal contracts.