A single inference invocation on a CixP1.Graph.
Lifecycle: create/1 → load_input/3 (once per input) → infer/2 →
get_output/2 (once per output). A job holds its graph's IO buffers; create a
fresh job per concurrent inference, or reuse one job for repeated sequential
inferences on the same graph.
For one-shot inference prefer CixP1.run/2, which wires these steps together.
Summary
Functions
Creates a job bound to graph.
Reads output tensor index as a raw binary (sized per its descriptor).
Runs the job on the NPU and blocks until it finishes or timeout_ms elapses
(a value <= 0 means wait indefinitely). Runs on a dirty scheduler.
Loads data (a raw binary matching the input descriptor's :size) into input
tensor index.
Types
@type t() :: %CixP1.Job{graph: CixP1.Graph.t(), resource: reference()}
Functions
@spec create(CixP1.Graph.t()) :: {:ok, t()} | {:error, String.t()}
Creates a job bound to graph.
@spec get_output(t(), non_neg_integer()) :: {:ok, binary()} | {:error, String.t()}
Reads output tensor index as a raw binary (sized per its descriptor).
Runs the job on the NPU and blocks until it finishes or timeout_ms elapses
(a value <= 0 means wait indefinitely). Runs on a dirty scheduler.
@spec load_input(t(), non_neg_integer(), binary()) :: :ok | {:error, String.t()}
Loads data (a raw binary matching the input descriptor's :size) into input
tensor index.