Inference Engine Extensibility API enables you to add support of custom operations to the Inference Engine. Extension should contain operation sets with custom operations and execution kernels for custom operations. Physically, an extension library can be represented as a dynamic library exporting the single CreateExtension
function that creates a new extension instance.
To load the Extensibility library to the InferenceEngine::Core
object, use the InferenceEngine::Core::AddExtension
method.
Inference Engine Extension dynamic library contains the following components:
InferenceEngine::Core::ReadNetwork
to read Intermediate Representation (IR) with unsupported operations.ngraph::Function
with unsupported operations.NOTE: This documentation is written based on the
Template extension
, which demonstrates extension
development details. Find the complete code of the Template extension
, which is fully compilable and up-to-date, at <dldt source tree>/docs/template_extension
.
The Inference Engine workflow involves the creation of custom kernels and either custom or existing operations.
An Operation is a network building block implemented in the training framework, for example, Convolution
in Caffe*. A Kernel is defined as the corresponding implementation in the Inference Engine.
Refer to the Model Optimizer Extensibility for details on how a mapping between framework operations and Inference Engine kernels is registered.
In short, you can plug your own kernel implementations into the Inference Engine and map them to the operations in the original framework.
The following pages describe how to integrate custom kernels into the Inference Engine: