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
- Options affecting binary size
- Building with custom OpenCV
- Building with custom TBB
- Test capabilities
- Other options
Disable / enable plugins build and other components
- Inference plugins:
ENABLE_INTEL_CPUenables CPU plugin compilation:ONis default for x86 platforms;OFF, otherwise.
ENABLE_INTEL_GPUenables Intel GPU plugin compilation:ONis default for x86 platforms; not available, otherwise.
ENABLE_INTEL_GNAenables GNA plugin compilation:ONis default for x86 platforms; not available, otherwise.
ENABLE_HETEROenables HETERO plugin build:ONis default.
ENABLE_MULTIenables MULTI plugin build:ONis default.
ENABLE_AUTOenables AUTO plugin build:ONis default.
ENABLE_TEMPLATEenables TEMPLATE plugin build:ONis default.
ENABLE_AUTO_BATCHenables Auto Batch plugin build:ONis default.
- Frontends to work with models from frameworks:
ENABLE_OV_ONNX_FRONTENDenables ONNX frontend plugin for OpenVINO Runtime:ONis default.
ENABLE_OV_PADDLE_FRONTENDenables PDPD frontend plugin for OpenVINO Runtime:ONis default.
ENABLE_OV_TF_FRONTENDenables TensorFlow frontend plugin for OpenVINO Runtime:ONis default.
ENABLE_OV_TF_LITE_FRONTENDenables TensorFlow Lite frontend plugin for OpenVINO Runtime:ONis default.
ENABLE_OV_PYTORCH_FRONTENDenables PyTorch frontend plugin for OpenVINO Runtime:ONis default.
ENABLE_OV_IR_FRONTENDenables OpenVINO Intermediate Representation frontend plugin for OpenVINO Runtime:ONis default.
ENABLE_GAPI_PREPROCESSINGenables G-API preprocessing:ONis default.
OPENVINO_EXTRA_MODULESspecifies path to add extra OpenVINO modules to the build.- See OpenVINO Contrib to add extra modules from.
ENABLE_SAMPLESenables OpenVINO Runtime samples build:ONis default.
ENABLE_PYTHONenables Python API build:ONif python requirements are satisfied (auto-discovered by CMake).
ENABLE_WHEELenables Python OpenVINO Runtime and Development wheels build:ONif requirements are satisfied (auto-discovered by CMake).
ENABLE_TESTSenables tests compilation:OFFis default.
ENABLE_IR_V7_READERenables IR v7 reader:ONis default. Note: must be turnedOFFwhen building OpenVINO runtime as static
ENABLE_DOCSenables building the OpenVINO documentation:OFFis on Debian (Ubuntu) OSesOFFis in other cases.
ENABLE_SYSTEM_PUGIXMLbuilds with system version of pugixml if it is available on the system.ONis default.- OpenVINO thirdparty pugixml is used by default.
ENABLE_SYSTEM_PROTOBUFuse protobuf installed on the system (used by ONNX, PaddlePaddle and TensorFlow frontends):OFFis default.
ENABLE_SYSTEM_FLATBUFFERSuse FlatBuffers installed on the system (used by Tensorflow Lite frontend):ONis default.
ENABLE_SYSTEM_TBBuse TBB installed on the system:ONis on Debian (Ubuntu) OSes.OFFis in other cases.
ENABLE_SYSTEM_OPENCLuse OpenCL installed on the system:ONis default.
Options affecting binary size
ENABLE_LTOboolean option to enable Link Time Optimizations:OFFis default, because it takes longer time to link binaries.ONis 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.
THREADINGpoints to the OpenVINO threading interface:TBBis the default option, which enables build with Intel TBB andtbb::static_partitioner.TBB_AUTOenables building with Intel TBB.OMPenables building with Intel OpenMP.SEQdisables 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_5enables prebuilt static TBBBind 2.5 usage:ONis 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_5toOFF
- 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_SSE42enables SSE4.2 optimizations:ONis 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_AVX2enables AVX2 optimizations:ONis 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_AVX512Fenables AVX512 optimizations:ONis 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_ITTenables profiling with Intel ITT and VTune.OFFis default, because it increases binary size.
SELECTIVE_BUILDenables Conditional compilation feature.OFFis 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_SANITIZERbuilds with clang address sanitizer support:OFFis default.
ENABLE_THREAD_SANITIZERbuilds with clang thread-sanitizer support:OFFis default.
ENABLE_COVERAGEadds option to enable coverage. See dedicated guide how to measure test coverage:OFFis default.
ENABLE_FUZZINGenables instrumentation of code for fuzzing:OFFis default.
Other options
ENABLE_CPPLINTenables code style check using cpplint static code checker:ONis default.
ENABLE_CLANG_FORMATenables Clang format code style check:ONis default.- Used only for ngraph component.
TREAT_WARNING_AS_ERRORtreats all warnings as an error:OFFis default.
ENABLE_FASTER_BUILDenables precompiled headers and unity build using CMake:OFFis default.
ENABLE_INTEGRITYCHECKbuilds DLLs with /INTEGRITYCHECK flag:OFFis default.- Available on MSVC compiler only.
ENABLE_QSPECTREbuilds with /Qspectre flag:OFFis default.- Available on MSVC compiler only.