What’s a backend?¶
In the nGraph Compiler stack, what we call a backend is responsible for function execution and value allocation. A backend can be used to carry out a programmed computation from a framework on a CPU or GPU; or it can be used with an Interpreter mode, which is primarily intended for testing, to analyze a program, or to help a framework developer customize targeted solutions. Experimental APIs to support current and future nGraph Backends are also available; see, for example, the section on PlaidML from nGraph.
|Backend||Current nGraph support||Future nGraph support|
|Intel® Architecture Processors (CPUs)||Yes||Yes|
|Intel® Nervana™ Neural Network Processor™ (NNPs)||Yes||Yes|
|NVIDIA* CUDA (GPUs)||Yes||Some|
How to use?¶
- Create a
Backend; think of it as a compiler.
Backendcan then produce an
- A single iteration of the executable is executed by calling the
callmethod on the
The nGraph execution API for
Executable objects is a simple, five-method
interface; each backend implements the following five functions:
create_tensor()method allows the bridge to create tensor objects in host memory or an accelerator’s memory.
read()methods are used to transfer raw data into and out of tensors that reside in off-host memory.
compile()method instructs the backend to prepare an nGraph function for later execution.
- And, finally, the
call()method is used to invoke an nGraph function against a particular set of tensors.