Scanner C++ API
|
Interface for a unit of computation in a pipeline. More...
#include <kernel.h>
Public Member Functions | |
BatchedKernel (const KernelConfig &config) | |
virtual void | execute_kernel (const StenciledBatchedElements &input_columns, BatchedElements &output_columns) |
For internal use. | |
Public Member Functions inherited from scanner::BaseKernel | |
BaseKernel (const KernelConfig &config) | |
virtual void | validate (proto::Result *result) |
Checks if kernel arguments are valid. More... | |
virtual void | fetch_resources (proto::Result *result) |
Downloads any resources necessary for the kernel to run. More... | |
virtual void | setup_with_resources (proto::Result *result) |
Runs any setup code that relies on fetched resources. More... | |
virtual void | new_stream (const std::vector< u8 > &args) |
Called when the Kernel is about to process a new stream. More... | |
virtual void | reset () |
Requests that kernel resets its logical state. More... | |
virtual void | set_profiler (Profiler *profiler) |
For internal use. | |
Protected Member Functions | |
virtual void | execute (const BatchedElements &input_columns, BatchedElements &output_columns)=0 |
Runs the op on input elements and produces equal number of output elements. More... | |
Additional Inherited Members | |
Public Attributes inherited from scanner::BaseKernel | |
Profiler * | profiler_ = nullptr |
Static Public Attributes inherited from scanner::BaseKernel | |
static const i32 | UnlimitedDevices = 0 |
Interface for a unit of computation in a pipeline.
Kernels form the core of Scanner's interface. They are essentially functions that take elements of inputs and produce an equal number elements of outputs. Kernels are stateful operators that get reset when provided non-contiguous batches of input. See KernelFactory for how an op defines what hardware it can use for its computation.
|
protectedpure virtual |
Runs the op on input elements and produces equal number of output elements.
input_columns | vector of columns, where each column is a vector of inputs and each input is a byte array |
output_columns | op output, each column must have same length as the number of input elements |
Evaluate gets run on batches of inputs. At the beginning of a pipeline this is raw RGB images from the input images/videos, and after that the input becomes whatever was returned by the previous op.
Number of output columns must be non-zero.
Implemented in scanner::ImageEncoderKernel, scanner::SampleKernel, scanner::SampleKernel, scanner::SliceKernel, scanner::SpaceKernel, and scanner::UnsliceKernel.