Files
openvino/docs/dev/cmake_options_for_custom_compilation.md
Ilya Churaev b69190c2c1 Proxy plugin 2.0 (#17416)
* Initial commit for proxy plugin

* Include proxy to openvino library

* Fixed some tests

* Added plugin properties

* Added readme

* Support Compile model for the proxy plugin

* Fixed python

* Remove gmock

* Fixed some tests

* Fixed load plugin tests

* Removed internal PROXY_FALLBACK_PRIORITIES initialization property

* Fixed code style

* Added new tests

* Create architecture.md

* Fixed some proxy tests

* Implement not implemented functions

* Fixed ICore mock

* Remove redundant code

* Added import/export tests

* Fixed hetero import/export tests

* Fixed ICore mock

* Fixed import tests

* Fixed build

* Remove redundant parse config

* Fixed some comments

* Try to fix Windows build

* Fixed incorrect logic

* Small fix in tests

* Fixed python API

* Fixed typo

* Try to fix python

* Switch GPU under proxy

* Fixed GPU name

* Revert GPU plugin under proxy

* Small changes in CMake files

* Temp commit

* Build without proxy

* Revert "Temp commit"

This reverts commit 1ac9824bdf.

* Fixed test linking

* Removed tests from ncc check

* Add option to disable proxy plugin

* Fixed minor comments

* Disable some proxy tests if IR frontend is disabled

* Enable Intel GPU under the proxy

* Fixed typo

* Fixed segfault in tests

* Small fix for case if only GPU is registered

* Fixed code style

* Added remote context tests

* Added proxy tests to CI

* Fixed mock engine

* Test change

* Revert "Test change"

This reverts commit 2d1d67766f.

* Add new tests

* Removed some tests

* Revert "Removed some tests"

This reverts commit 090398652f.

* Revert incorrect logic

* Removed unused variables

* Use original name for the GPU plugin

* Fixed CMake

* Do not show hidden devices

* Try to fix GPU remote context

* Fixed GPU plugin build

* Added interface for proxy remote context

* Remove local properties

* Remove redundant API

* Fixed typo

* Added remote tensors

* Fixed code style

* Fixed some comments

* Unwrap remote tensors before conversion to Blob

* Added cast for legacy API

* Fixed some cldnn tests

* Do not add preprocessing for proxy plugin

* Enabled more tests and wrap tensors in infer request

* Use hardware request inside conversion wrapper

* Fixed hand on cache calculation

* Try to fix some tests

* Support set tensor for remote tensors in proxy plugin

* Revert "Support set tensor for remote tensors in proxy plugin"

This reverts commit 5a927de590.

* Remove redundant friend from compiled model and fix life time for infer
request

* Fixed code style

* Add additional so pointers to the tensor

* Rewrite approach for compile model and tensor

* Removed API from proxy

* Fixed is/as Blob for wrapped Blobs

* Wrap tensor when set tensor to plugin

* Fixed recursive call

* Don't unwrap tensors for AUTO plugin

* Fixed Some Multi tests with remote blob for proxy

* Align context name with tests

* Fixed code style

* Try to fix more tests

* Some minor changes

* Try to fix OVHoldersTests

* Try to save low level SO in high level wrappers

* Revert "Try to save low level SO in high level wrappers"

This reverts commit 430ff8a526.

* Revert "Try to fix OVHoldersTests"

This reverts commit 32604f0d3e.

* Disable some tests

* Fixed DynamicBatchShapeTests

* Fixed caching tests and skip OVHoldersTest

* Small refactoring

* Fixed import model

* Small fix

* Fix typo which causes fails of caching tests

* Disabled AUTO BATCH for proxy device

* Support Export in Auto batch

* Small changes

* Fixed initialization fallback to plugin with proxy name

* Added more values for tests

* Ask all devices and create context if no device id

* Support export in auto batch

* Fixed some comments

* Fixed some comments and removed auto batch

* Fixed some comments

* Fixed auto batch test and some comments

* Fixed build

* Removed proxy plugin class from dev api

* Fixed code style

* Fixed disabled tests
2023-07-07 13:45:20 +04:00

11 KiB

CMake Options for Custom Compilation

This document provides description and default values for CMake options that can be used to build a custom OpenVINO runtime using the open source version. For instructions on how to create a custom runtime from the prebuilt OpenVINO release package, refer to the deployment manager documentation. To understand all the dependencies when creating a custom runtime from the open source repository, refer to the OpenVINO Runtime Introduction.

Table of contents:

Disable / enable plugins build and other components

  • Inference plugins:
    • ENABLE_INTEL_CPU enables CPU plugin compilation:
      • ON is default for x86 platforms; OFF, otherwise.
    • ENABLE_INTEL_GPU enables Intel GPU plugin compilation:
      • ON is default for x86 platforms; not available, otherwise.
    • ENABLE_INTEL_GNA enables GNA plugin compilation:
      • ON is default for x86 platforms; not available, otherwise.
    • ENABLE_HETERO enables HETERO plugin build:
      • ON is default.
    • ENABLE_MULTI enables MULTI plugin build:
      • ON is default.
    • ENABLE_AUTO enables AUTO plugin build:
      • ON is default.
    • ENABLE_TEMPLATE enables TEMPLATE plugin build:
      • ON is default.
    • ENABLE_AUTO_BATCH enables Auto Batch plugin build:
      • ON is default.
    • ENABLE_PROXY enables Proxy plugin compilation:
      • ON is default.
  • Frontends to work with models from frameworks:
    • ENABLE_OV_ONNX_FRONTEND enables ONNX frontend plugin for OpenVINO Runtime:
      • ON is default.
    • ENABLE_OV_PADDLE_FRONTEND enables PDPD frontend plugin for OpenVINO Runtime:
      • ON is default.
    • ENABLE_OV_TF_FRONTEND enables TensorFlow frontend plugin for OpenVINO Runtime:
      • ON is default.
    • ENABLE_OV_TF_LITE_FRONTEND enables TensorFlow Lite frontend plugin for OpenVINO Runtime:
      • ON is default.
    • ENABLE_OV_PYTORCH_FRONTEND enables PyTorch frontend plugin for OpenVINO Runtime:
      • ON is default.
    • ENABLE_OV_IR_FRONTEND enables OpenVINO Intermediate Representation frontend plugin for OpenVINO Runtime:
      • ON is default.
  • ENABLE_GAPI_PREPROCESSING enables G-API preprocessing:
    • ON is default.
  • OPENVINO_EXTRA_MODULES specifies path to add extra OpenVINO modules to the build.
  • ENABLE_SAMPLES enables OpenVINO Runtime samples build:
    • ON is default.
  • ENABLE_PYTHON enables Python API build:
    • ON if python requirements are satisfied (auto-discovered by CMake).
  • ENABLE_WHEEL enables Python OpenVINO Runtime and Development wheels build:
    • ON if requirements are satisfied (auto-discovered by CMake).
  • ENABLE_TESTS enables tests compilation:
    • OFF is default.
  • ENABLE_IR_V7_READER enables IR v7 reader:
    • ON is default. Note: must be turned OFF when building OpenVINO runtime as static
  • ENABLE_DOCS enables building the OpenVINO documentation:
    • OFF is on Debian (Ubuntu) OSes
    • OFF is in other cases.
  • ENABLE_SYSTEM_PUGIXML builds with system version of pugixml if it is available on the system.
  • ENABLE_SYSTEM_PROTOBUF use protobuf installed on the system (used by ONNX, PaddlePaddle and TensorFlow frontends):
    • OFF is default.
  • ENABLE_SYSTEM_FLATBUFFERS use FlatBuffers installed on the system (used by Tensorflow Lite frontend):
    • ON is default.
  • ENABLE_SYSTEM_TBB use TBB installed on the system:
    • ON is on Debian (Ubuntu) OSes.
    • OFF is in other cases.
  • ENABLE_SYSTEM_OPENCL use OpenCL installed on the system:
    • ON is default.

Options affecting binary size

  • ENABLE_LTO boolean option to enable Link Time Optimizations:
    • OFF is default, because it takes longer time to link binaries.
    • ON is enabled for OpenVINO release binaries.
    • Available on Unix* compilers only like GCC or CLANG.
    • Gives 30% decrease in binary size together with other optimization options used to build OpenVINO.
  • THREADING points to the OpenVINO threading interface:
    • TBB is the default option, which enables build with Intel TBB and tbb::static_partitioner.
    • TBB_AUTO enables building with Intel TBB.
    • OMP enables building with Intel OpenMP.
    • SEQ disables threading optimizations. Can be used in cases when TBB binaries are absent.
    • Note: because TBB is a template library, it increases binary size because of multiple instantiations of tbb::parallel_for
  • ENABLE_TBBBIND_2_5 enables prebuilt static TBBBind 2.5 usage:
    • ON is default, because OpenVINO Runtime should be generic out of box.

Note: TBBBind 2.5 is needed when OpenVINO inference targets CPUs with:

  • NUMA support (Non-Unified Memory Architecture), e.g. to detect a number of NUMA nodes
  • Hybrid architecture to separate Performance / Efficiency cores and schedule tasks in the optimal way.

Note: if you build OpenVINO runtime with oneTBB support where TBBBind 2.5 is automatically loaded by TBB in runtime, then set ENABLE_TBBBIND_2_5 to OFF

  • make sure libtbbbind.so is in the same folder as libtbb.so. For example, oneTBB package on Ubuntu 22.04 has libtbbbind missed. https://bugs.launchpad.net/ubuntu/+source/onetbb/+bug/2006898
  • oneTBB relies on higher version hwloc to recognize hybrid CPU core types correctly, on some machines, they require higher hwloc version to work correctly. Check if hwloc-info --version returns hwloc version >= 2.7.0, Ubuntu 20.04 with hwloc 2.1.0
  • ENABLE_SSE42 enables SSE4.2 optimizations:
    • ON is default for x86 platforms; not available for other platforms.
    • Affects only OpenVINO Runtime common part and preprocessing plugin, does not affect the oneDNN library
  • ENABLE_AVX2 enables AVX2 optimizations:
    • ON is default for x86 platforms, not available for other platforms.
    • Affects only OpenVINO Runtime common part and preprocessing plugin, does not affect the oneDNN library
  • ENABLE_AVX512F enables AVX512 optimizations:
    • ON is default for x86 platforms, not available for other platforms.
    • Affects only OpenVINO Runtime common part and preprocessing plugin, does not affect the oneDNN library
  • ENABLE_PROFILING_ITT enables profiling with Intel ITT and VTune.
    • OFF is default, because it increases binary size.
  • SELECTIVE_BUILD enables Conditional compilation feature.
    • OFF is default.

Building with custom OpenCV

When OpenVINO CMake scripts are run with enabled OpenCV (-DENABLE_OPENCV=ON which is default), CMake OpenVINO scripts automatically download prebuilt OpenCV from shared drive, such OpenCV is ABI-compatible with the default compiler of your system. If you have a non-default compiler or want to use custom version of OpenCV, you can pass it via CMake option:

cmake -DOpenCV_DIR=<path to OpenCVConfig.cmake> ...

In this case, default OpenCV will not downloaded and provided one will be used.

Building with custom TBB

When OpenVINO CMake scripts are run with TBB enabled (-DTHREADING=TBB which is default, or -DTHREADING=TBB_AUTO), CMake OpenVINO scripts automatically download prebuilt version of TBB which is ABI-compatible with the default compiler of your system. If you have a non-default compiler or want to use custom TBB, you can use:

export TBBROOT=<path to TBB install root>
cmake ...

In this case OpenVINO CMake scripts take TBBROOT environment variable into account and provided TBB will be used.

Note: if you are building TBB from source files, please install TBB after and use TBBROOT to point to installation root. Note: reference to oneTBB Note in Options affecting binary size

Test capabilities

  • ENABLE_SANITIZER builds with clang address sanitizer support:
    • OFF is default.
  • ENABLE_THREAD_SANITIZER builds with clang thread-sanitizer support:
    • OFF is default.
  • ENABLE_COVERAGE adds option to enable coverage. See dedicated guide how to measure test coverage:
    • OFF is default.
  • ENABLE_FUZZING enables instrumentation of code for fuzzing:
    • OFF is default.

Other options

  • ENABLE_CPPLINT enables code style check using cpplint static code checker:
    • ON is default.
  • ENABLE_CLANG_FORMAT enables Clang format code style check:
    • ON is default.
    • Used only for ngraph component.
  • TREAT_WARNING_AS_ERROR treats all warnings as an error:
    • OFF is default.
  • ENABLE_FASTER_BUILD enables precompiled headers and unity build using CMake:
    • OFF is default.
  • ENABLE_INTEGRITYCHECK builds DLLs with /INTEGRITYCHECK flag:
    • OFF is default.
    • Available on MSVC compiler only.
  • ENABLE_QSPECTRE builds with /Qspectre flag:
    • OFF is default.
    • Available on MSVC compiler only.

Additional Resources