OpenVINO™ is an open-source toolkit for optimizing and deploying AI inference
Go to file
River Li cbbac125f8
[C API] Refine OV 2.0 C APIs for better expansibility and compatibility (#12187)
* [C API 2.0]Redifine partial shape and property wrapper

1. Use dimension object to initialize partial_shape rather than string
2. Use void* to unify property value rather than union
3. rename some C api name to strict align with C++ method.

Change-Id: I64b5c521461264dba2d23543808584632fbd6d4b

* [C API 2.0]Memory check and implement all reshape interface

1. Memory safe create and free
2. Implement all reshape interface align with C++ interface
3. rename some api to align with C++ interface

Change-Id: Ib5e4192bdbd8a11cdd7e30b1dc84881ba3f2d505

* Rename prepostprocess to strict align with C++ name

Change-Id: I7a4d0a6e835b2d6ed01cd218ac81b1b621f600bf

* [C API 2.0]redefine ov_node and ov_model interface

1. redefine ov_node and ov_model interface
2. rename some api to aligne with C++ interface
3. remove some redundant code
4. align CMakeLists.txt with OpenVINO 2.0 convention

Change-Id: I4d5e92157e7891319c9754da8e70b9c6150ae2e3

* Redefine ov_layout to support more than one char

Change-Id: I39e5389246cf3edcc2f4734d13157457773d89b8

* Add interface to get partial_shape from node

Change-Id: I8cef77db581b43d2f0a9ac48cfdc09a86e39b694

* Use unique_ptr prevent memory leaks in case of exception

Change-Id: I150b375108a3eded400bdde087ab5c858958c25f

* Put legacy C API and 2.0 C API into a library

Change-Id: I067a55a00e78b80cdede5ae7adad316ee98cabd1

* Only keep OV 2.0 C sample and move legacy C sample to legacy directory

1. Move legacy C samples to tools/legacy/c directory
2. Keep OV 2.0 C samples in samples/c directory

Change-Id: I05880d17ee7cb7eafc6853ebb5394f3969258592

* Fix format and log issues

Change-Id: I05d909b3d7046d41b807e35808a993bb09672e68

* Restore documents update

Change-Id: I82dd92081c0aa1a2d7dca7f114cf6a35131d6f92

* Change config map data be const

Change-Id: I9043859e8308c01d80794dc8280ae236947f3bbb

* Update api document

Change-Id: I35bc149bad0de17424d95f48c3027030b708e147

* Add clang enable

Change-Id: I335639c05fb5fb38e682dbb72bfaf78380c0adaf

* Fix clang issue after enable clang for ie_c_api.c

Change-Id: Idcb4dda9d66e47a169eb79a9c4fe7a7d4df838db

* split header file and c file into multiple files

Change-Id: I7c3398966809ef70d7fcb799f2d612a33b471e31

* Fix clang format issue

Change-Id: Ibd18b45537c8f3bcbb5b995c90ae28999161d54d

* Add single ov_dimension_create method

Change-Id: Icd06b50e4f4df8f7897c7c4327edb67178162544

* Remove all legacy c samples completely

Change-Id: I098360a0d9002340e8769074181f7997b43bce8f

* Update ov_property_value to replace only ptr

Change-Id: I9f5a11b4cf07e759c1998e78e2624f0a1266d9b0

* Split more header files, add static dimension api

Change-Id: I14e4fb8585fc629480c06b86bd8219e75a9682f7

* Change ov_dimensions_create to be ov_dimensions_create_dynamic

Change-Id: I50c02749cea96f12bcea702b53a89c65b289550e

* rename status and get_out_tensor

Change-Id: I762c1d0c5a069454506fe3c04283c63ddbfacf31

* Split ov_c_api_test.cpp

* Split OV2.0 CAPI tests

* move var into Setup

* Merge legacy and 2.0 C API test

* Merge InferenceEngineCAPITests into openvino_capi_test

1. put InferenceEngineCAPITests into openvino_capi_test
2. resolve some format issues

Change-Id: I47bbba6bd70a871ee063becbd80eb57919fa9fb0

* legacy api test skips clang format

Change-Id: Id54ecdba827cf98c99b92295c0a0772123098b63

* Fix clang format issue

Change-Id: I7ed510d8178971fe04a895e812c261db99d8b9f2

* Restore InferenceEngineCAPITests

Change-Id: I4d641ffb1de9ce4d20ebecf35fc036fa7bd73e55

* rename openvino_capi_test to ov_capi_test

Change-Id: I6b6fe0cdb89aab7210abb17f32dbfdcdce72ba25

* unify list size name and refine ov_core_version_t

Change-Id: I137fc6d990c7b07f597ee94fa3b98d07ae843cb6

* align header file path to be openvino/c/openvino.h

Change-Id: I1a4552e1d558098af704942fe45488b0d6d53a90

* Fix path issue

Change-Id: I84d425d25e3b08c1516cbcc842fb9cb75574bf17

* move ov_color_format and remove opencv depenency

Change-Id: I486145f9e92e8bbf2e937d3572334aa9f0e68841

* Resolve some memory allocation error handling issues and read model with empty weight issue

Change-Id: Icd8e3b6de9741147993fa215a0c7cfd7debd5500

* Add GPU test cases

Change-Id: I13324ef019b5b1af79259ca932a36a0cec792c27

* Fix clang issue

Change-Id: I9bb4c47de301d142b5e2a77a39f667689ad9fe38

* Resolve CI test failure

Change-Id: Ia327d5edab19d8dd44ac369670f190d5c57aca79

* Redefine ov_shape and add default ov_core_create

Change-Id: I3e47d607f8aad65cb99cdddacaecf7bf34b1361b

* Remove some unnecessary api of node

Remove the unnecessary node api:
     ov_node_get_any_name(ov_output_const_node_t* node, char** tensor_name)
     ov_node_get_element_type(ov_output_const_node_t* node, ov_element_type_e* tensor_type)

Change-Id: I80a3243676800263a9e56afa3cfffce7b4bd2ae7

* Rename reshape api

ov_model_reshape should be common case which allow to reshape any models with different number of input.

Change-Id: I26bafeeb8a3dda7cd5164cda15fdb338db8668cb

* Rename ov_node api

Change-Id: I03114ecb6de5c46b6d02c909b6f6fb6c8bfd5cba

* Remove subfolder out of source code

Change-Id: Ib033ae7712cc0460d6fc21a0f89818381ae503c0

* apply absolute path for all header files

Change-Id: I8024c897d424b407025e21460ed4b62829b853d2

* Fix CI issue ov_capi_test failed to find libgna

Change-Id: I166e79a818498c6721fe956f43873f36d9ae1e07

* Resolve build issue to align with PR12214

Change-Id: I9e6094db213b431ee1b46e0d64199131db33bb36

Co-authored-by: ruiqi <ruiqi.yang@intel.com>
2022-08-14 19:51:34 +04:00
.ci [C API] Refine OV 2.0 C APIs for better expansibility and compatibility (#12187) 2022-08-14 19:51:34 +04:00
.github [PYTHON] Change dependabot schedule (#11497) 2022-04-12 11:17:29 +02:00
cmake OpenCV build switched off by default [master] (#12173) 2022-08-13 13:17:55 +03:00
docs Remove ipython lib reference (#12168) 2022-08-14 02:11:49 +04:00
licensing Debian packages tests on Azure (#12469) 2022-08-12 00:07:21 +04:00
samples [C API] Refine OV 2.0 C APIs for better expansibility and compatibility (#12187) 2022-08-14 19:51:34 +04:00
scripts Fixed CVS-89248 (#12534) 2022-08-13 00:11:13 +04:00
src [C API] Refine OV 2.0 C APIs for better expansibility and compatibility (#12187) 2022-08-14 19:51:34 +04:00
tests [C API] Refine OV 2.0 C APIs for better expansibility and compatibility (#12187) 2022-08-14 19:51:34 +04:00
thirdparty Migrated to xbyak v6.00 (#9166) 2022-08-12 11:38:34 +04:00
tools Changed update date in MO message. (#12396) 2022-08-12 13:29:45 +00:00
.gitattributes [POT] Update tests with new data (#8209) 2021-10-27 12:40:19 +03:00
.gitignore Fixed newAPI for case if core was removed (#12207) 2022-07-22 16:46:08 +03:00
.gitmodules CPU Plugin refactoring: Transition from Intel MKL-DNN to oneDNN (#11023) 2022-04-05 01:10:53 +03:00
CMakeLists.txt Library versions & made tests relocatable (#12416) 2022-08-08 13:59:24 +04:00
CODEOWNERS Update CODEOWNERS 2022-05-20 12:22:43 +02:00
CONTRIBUTING.md Add changes to contribution guide (#10675) 2022-03-22 11:51:53 +03:00
install_build_dependencies.sh Fixed missed pugixml in case of system libs + wheel package (#12464) 2022-08-12 11:35:56 +04:00
Jenkinsfile Beautify Jenkinsfile a little bit 2021-05-31 15:24:56 +03:00
LICENSE Publishing R3 2018-10-16 13:45:03 +03:00
README.md Update README.md (#8048) 2022-04-06 06:51:09 +03:00
SECURITY.md Added SECURITY.md back (#3177) 2020-11-17 16:44:44 +03:00

Stable release Apache License Version 2.0 GitHub branch checks state Azure DevOps builds (branch) PyPI Status PyPI Downloads

Contents:

What is OpenVINO toolkit?

OpenVINO™ is an open-source toolkit for optimizing and deploying AI inference.

  • Boost deep learning performance in computer vision, automatic speech recognition, natural language processing and other common tasks
  • Use models trained with popular frameworks like TensorFlow, PyTorch and more
  • Reduce resource demands and efficiently deploy on a range of Intel® platforms from edge to cloud

This open-source version includes several components: namely Model Optimizer, OpenVINO™ Runtime, Post-Training Optimization Tool, as well as CPU, GPU, MYRIAD, multi device and heterogeneous plugins to accelerate deep learning inferencing on Intel® CPUs and Intel® Processor Graphics. It supports pre-trained models from the Open Model Zoo, along with 100+ open source and public models in popular formats such as TensorFlow, ONNX, PaddlePaddle, MXNet, Caffe, Kaldi.

Components

  • OpenVINO™ Runtime - is a set of C++ libraries with C and Python bindings providing a common API to deliver inference solutions on the platform of your choice.
    • core - provides the base API for model representation and modification.
    • inference - provides an API to infer models on device.
    • transformations - contains the set of common transformations which are used in OpenVINO plugins.
    • low precision transformations - contains the set of transformations which are used in low precision models
    • bindings - contains all awailable OpenVINO bindings which are maintained by OpenVINO team.
      • c - provides C API for OpenVINO™ Runtime
      • python - Python API for OpenVINO™ Runtime
  • Plugins - contains OpenVINO plugins which are maintained in open-source by OpenVINO team. For more information please taje a look to the list of supported devices.
  • Frontends - contains available OpenVINO frontends which allow to read model from native framework format.
  • Model Optimizer - is a cross-platform command-line tool that facilitates the transition between training and deployment environments, performs static model analysis, and adjusts deep learning models for optimal execution on end-point target devices.
  • Post-Training Optimization Tool - is designed to accelerate the inference of deep learning models by applying special methods without model retraining or fine-tuning, for example, post-training 8-bit quantization.
  • Samples - applications on C, C++ and Python languages which shows basic use cases of OpenVINO usages.

Supported Hardware matrix

The OpenVINO™ Runtime can infer models on different hardware devices. This section provides the list of supported devices.

Device Plugin Library ShortDescription
CPU Intel CPU openvino_intel_cpu_plugin Intel Xeon with Intel® Advanced Vector Extensions 2 (Intel® AVX2), Intel® Advanced Vector Extensions 512 (Intel® AVX-512), and AVX512_BF16, Intel Core Processors with Intel AVX2, Intel Atom Processors with Intel® Streaming SIMD Extensions (Intel® SSE)
ARM CPU openvino_arm_cpu_plugin Raspberry Pi™ 4 Model B, Apple® Mac mini with M1 chip, NVIDIA® Jetson Nano™, Android™ devices
GPU Intel GPU openvino_intel_gpu_plugin Intel Processor Graphics, including Intel HD Graphics and Intel Iris Graphics
GNA Intel GNA openvino_intel_gna_plugin Intel Speech Enabling Developer Kit, Amazon Alexa* Premium Far-Field Developer Kit, Intel Pentium Silver J5005 Processor, Intel Pentium Silver N5000 Processor, Intel Celeron J4005 Processor, Intel Celeron J4105 Processor, Intel Celeron Processor N4100, Intel Celeron Processor N4000, Intel Core i3-8121U Processor, Intel Core i7-1065G7 Processor, Intel Core i7-1060G7 Processor, Intel Core i5-1035G4 Processor, Intel Core i5-1035G7 Processor, Intel Core i5-1035G1 Processor, Intel Core i5-1030G7 Processor, Intel Core i5-1030G4 Processor, Intel Core i3-1005G1 Processor, Intel Core i3-1000G1 Processor, Intel Core i3-1000G4 Processor
VPU Myriad plugin openvino_intel_myriad_plugin Intel® Neural Compute Stick 2 powered by the Intel® Movidius™ Myriad™ X

Also OpenVINO™ Toolkit contains several plugins which should simplify to load model on several hardware devices:

Plugin Library ShortDescription
Auto openvino_auto_plugin Auto plugin enables selecting Intel device for inference automatically
Auto Batch openvino_auto_batch_plugin Auto batch plugin performs on-the-fly automatic batching (i.e. grouping inference requests together) to improve device utilization, with no programming effort from the user
Hetero openvino_hetero_plugin Heterogeneous execution enables automatic inference splitting between several devices
Multi openvino_auto_plugin Multi plugin enables simultaneous inference of the same model on several devices in parallel

License

OpenVINO™ Toolkit is licensed under Apache License Version 2.0. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.

Documentation

User documentation

The latest documentation for OpenVINO™ Toolkit is availabe here. This documentation contains detailed information about all OpenVINO components and provides all important information which could be needed if you create an application which is based on binary OpenVINO distribution or own OpenVINO version without source code modification.

Developer documentation

Developer documentation contains information about architectural decisions which are applied inside the OpenVINO components. This documentation has all necessary information which could be needed in order to contribute to OpenVINO.

Tutorials

The list of OpenVINO tutorials:

Products which use OpenVINO

System requirements

The full information about system requirements depends on platform and available in section System requirement on dedicated pages:

How to build

Please take a look to OpenVINO Wiki to get more information about OpenVINO build process.

How to contribute

See CONTRIBUTING for details. Thank you!

Get a support

Please report questions, issues and suggestions using:

See also


* Other names and brands may be claimed as the property of others.