# OpenVX

Intel's [OpenVX ](https://software.intel.com/en-us/openvino-ovx-guide?_ga=2.263946123.667743777.1563295237-982898001.1562781263)API is delivered as part of the Open Visual Inference & Neural network Optimization (OpenVINO™) toolkit, which is a software development package for development and optimization of computer vision and image processing pipelines for Intel System-on-Chips (SoCs).

### Intel's OpenVX\* Implementation: Key Features

Performance:

* Intel's OpenVX\* implementation offers CPU kernels which are multi-threaded (with Intel® Threading Building Blocks) and vectorized (with Intel® Integrated Performance Primitives). Also, GPU support is backed by optimized OpenCL™ implementation.
* To perform most read/write operations on local values, the implementation supports automatic data tiling for input, intermediate, and output data.

Extensibility:

* The SDK also extends the original OpenVX standard with specific APIs and numerous Kernel extensions. Refer to the [Intel's Extensions to the OpenVX\* Primitives](https://software.intel.com/node/2ac632de-bdd2-40b8-9f28-b1a7b5a793ff) chapter for details.
* The implementation also allows you to add performance efficient (for example, tiled) versions of your own algorithms to the processing pipelines, refer to the [Intel's Extensions to the OpenVX\* API: Advanced Tiling](https://software.intel.com/node/f1e3be86-0f4d-483b-a300-34e4b1015cb9) chapter on the CPU-efficient way and the [Intel's Extensions to the OpenVX\* API: OpenCL™ Custom Kernels](https://software.intel.com/node/f2fb1e06-08f7-4aae-8594-89551a3e3727) chapter for GPU (OpenCL) specific info.

Heterogeneity:

* Support for both task and data parallelism to maximize utilization of the compute resources such as CPU, GPU, and IPU.
* General system-level device affinities, as well as fine-grain API for orchestrating the individual nodes via notion of the targets. Refer to the [Heterogeneous Computing with the OpenVINO™ toolkit](https://software.intel.com/node/03a687f6-de98-436f-be61-b363462fc281) chapter for details.

**NOTE:** Notice that IPU support is in experimental stage. Refer to the [General Note on the IPU Support](https://software.intel.com/node/9b8b0412-bbf5-40a6-93e0-9cd6b5118217) section for details.

Intel's implementation of OpenVX uses a modular approach with a common runtime and individual device-specific plugins.

![OpenVINO™ toolkit OpenVX\* Architecture](https://software.intel.com/sites/default/files/did_feeds_images/b3e4f133-c055-4296-9604-035660ecc7c7/b3e4f133-c055-4296-9604-035660ecc7c7-imageId=6ef2ae7a-ee1e-40ed-b60e-0db60565a3c7.png)
