diff --git a/docs/how-to/build.md b/docs/how-to/build.md index 8324804df8..bd59e1dd59 100644 --- a/docs/how-to/build.md +++ b/docs/how-to/build.md @@ -108,6 +108,7 @@ GCC 4.x and below are not supported. |**Use OpenMP**|--use_openmp|OpenMP will parallelize some of the code for potential performance improvements. This is not recommended for running on single threads.| |**Build using parallel processing**|--parallel|This is strongly recommended to speed up the build.| |**Build Shared Library**|--build_shared_lib|| +|**Enable Training support**|--enable_training|| #### APIs and Language Bindings @@ -341,21 +342,21 @@ See more information on the OpenVINO Execution Provider [here](../reference/exec ##### Prerequisites -1. Install the Intel® Distribution of OpenVINOTM Toolkit **Release 2021.1** for the appropriate OS and target hardware : +1. Install the Intel® Distribution of OpenVINOTM Toolkit **Release 2021.2** for the appropriate OS and target hardware: * [Linux - CPU, GPU, VPU, VAD-M](https://software.intel.com/en-us/openvino-toolkit/choose-download/free-download-linux) * [Linux - FPGA](https://software.intel.com/en-us/openvino-toolkit/choose-download/free-download-linux-fpga) * [Windows - CPU, GPU, VPU, VAD-M](https://software.intel.com/en-us/openvino-toolkit/choose-download/free-download-windows). - Follow [documentation](https://docs.openvinotoolkit.org/2021.1/index.html) for detailed instructions. + Follow [documentation](https://docs.openvinotoolkit.org/2021.2/index.html) for detailed instructions. - *2021.1 is the recommended OpenVINO version. [OpenVINO 2020.2](https://docs.openvinotoolkit.org/2020.2/index.html) is minimal OpenVINO version requirement.* - *The minimum ubuntu version to support 2021.1 is 18.04.* + *2021.2 is the recommended OpenVINO version. [OpenVINO 2020.3](https://docs.openvinotoolkit.org/2020.2/index.html) is minimal OpenVINO version requirement.* + *The minimum ubuntu version to support 2021.2 is 18.04.* 2. Configure the target hardware with specific follow on instructions: - * To configure Intel® Processor Graphics(GPU) please follow these instructions: [Windows](https://docs.openvinotoolkit.org/2021.1/openvino_docs_install_guides_installing_openvino_windows.html#Install-GPU), [Linux](https://docs.openvinotoolkit.org/2021.1/openvino_docs_install_guides_installing_openvino_linux.html#additional-GPU-steps) - * To configure Intel® MovidiusTM USB, please follow this getting started guide: [Linux](https://docs.openvinotoolkit.org/2021.1/openvino_docs_install_guides_installing_openvino_linux.html#additional-NCS-steps) - * To configure Intel® Vision Accelerator Design based on 8 MovidiusTM MyriadX VPUs, please follow this configuration guide: [Windows](https://docs.openvinotoolkit.org/2021.1/openvino_docs_install_guides_installing_openvino_windows.html#hddl-myriad), [Linux](https://docs.openvinotoolkit.org/2021.1/openvino_docs_install_guides_installing_openvino_linux.html#install-VPU). Follow steps 3 and 4 to complete the configuration. - * To configure Intel® Vision Accelerator Design with an Intel® Arria® 10 FPGA, please follow this configuration guide: [Linux](https://docs.openvinotoolkit.org/2021.1/openvino_docs_install_guides_installing_openvino_linux_fpga.html) + * To configure Intel® Processor Graphics(GPU) please follow these instructions: [Windows](https://docs.openvinotoolkit.org/2021.2/openvino_docs_install_guides_installing_openvino_windows.html#Install-GPU), [Linux](https://docs.openvinotoolkit.org/2021.2/openvino_docs_install_guides_installing_openvino_linux.html#additional-GPU-steps) + * To configure Intel® MovidiusTM USB, please follow this getting started guide: [Linux](https://docs.openvinotoolkit.org/2021.2/openvino_docs_install_guides_installing_openvino_linux.html#additional-NCS-steps) + * To configure Intel® Vision Accelerator Design based on 8 MovidiusTM MyriadX VPUs, please follow this configuration guide: [Windows](https://docs.openvinotoolkit.org/2021.2/openvino_docs_install_guides_installing_openvino_windows.html#hddl-myriad), [Linux](https://docs.openvinotoolkit.org/2021.2/openvino_docs_install_guides_installing_openvino_linux.html#install-VPU). Follow steps 3 and 4 to complete the configuration. + * To configure Intel® Vision Accelerator Design with an Intel® Arria® 10 FPGA, please follow this configuration guide: [Linux](https://docs.openvinotoolkit.org/2021.2/openvino_docs_install_guides_installing_openvino_linux_fpga.html) 3. Initialize the OpenVINO environment by running the setupvars script as shown below: * For Linux run: @@ -376,18 +377,20 @@ See more information on the OpenVINO Execution Provider [here](../reference/exec ##### Build Instructions ###### Windows + ``` -.\build.bat --config RelWithDebInfo --use_openvino +.\build.bat --config RelWithDebInfo --use_openvino --build_shared_lib ``` + *Note: The default Windows CMake Generator is Visual Studio 2017, but you can also use the newer Visual Studio 2019 by passing `--cmake_generator "Visual Studio 16 2019"` to `.\build.bat`* ###### Linux -``` -./build.sh --config RelWithDebInfo --use_openvino + +```bash +./build.sh --config RelWithDebInfo --use_openvino --build_shared_lib ``` - --use_openvino: Builds the OpenVINO Execution Provider in ONNX Runtime. - +* `--use_openvino` builds the OpenVINO Execution Provider in ONNX Runtime. * ``: Specifies the default hardware target for building OpenVINO Execution Provider. This can be overriden dynamically at runtime with another option (refer to [OpenVINO-ExecutionProvider.md](../reference/execution-providers/OpenVINO-ExecutionProvider.md) for more details on dynamic device selection). Below are the options for different Intel target devices. | Hardware Option | Target Device | @@ -598,10 +601,11 @@ The Batch Normalization operator is set by default to use the CPU execution prov ./build.sh --use_armnn --armnn_bn ``` -To use a library outside the normal environment you can set a custom path by using --armnn_home and --armnn_libs tags that defines the path to the ArmNN home directory and the build directory respectively. +To use a library outside the normal environment you can set a custom path by providing the --armnn_home and --armnn_libs parameters to define the path to the ArmNN home directory and build directory respectively. +The ARM Compute Library home directory and build directory must also be available, and can be specified if needed using --acl_home and --acl_libs respectively. ```bash -./build.sh --use_armnn --armnn_home /path/to/ComputeLibrary --armnn_libs /path/to/build +./build.sh --use_armnn --armnn_home /path/to/armnn --armnn_libs /path/to/armnn/build --acl_home /path/to/ComputeLibrary --acl_libs /path/to/acl/build ``` --- @@ -736,14 +740,17 @@ ORT_DEBUG_NODE_IO_DUMP_DATA_TO_FILES=1 --- ### Architectures -#### x86 +#### 64-bit x86 + +Also known as [x86_64](https://en.wikipedia.org/wiki/X86-64) or AMD64. This is the default. + +#### 32-bit x86 ##### Build Instructions ###### Windows * add `--x86` argument when launching `.\build.bat` ###### Linux -* Must be built on a x86 OS -* add --x86 argument to build.sh +(Not officially supported) --- @@ -1231,8 +1238,31 @@ Dockerfile instructions are available [here](https://github.com/microsoft/onnxru --- ## Training +### CPU -### CUDA +#### Build Instructions + +To build ORT with training support add `--enable_training` build instruction. + +All other build options are the same for inferencing as they are for training. + +##### Windows + +``` +.\build.bat --config RelWithDebInfo --build_shared_lib --parallel --enable_training +``` + +The default Windows CMake Generator is Visual Studio 2017, but you can also use the newer Visual Studio 2019 by passing +`--cmake_generator "Visual Studio 16 2019"` to `.\build.bat` + + +##### Linux/macOS + +``` +./build.sh --config RelWithDebInfo --build_shared_lib --parallel --enable_training +``` + +### GPU / CUDA #### Prerequisites The default NVIDIA GPU build requires CUDA runtime libraries installed on the system: @@ -1267,7 +1297,7 @@ These dependency versions should reflect what is in [Dockerfile.training](https: This produces the .whl file in `./build/Linux/RelWithDebInfo/dist` for ONNX Runtime Training. -### ROCM +### GPU / ROCM #### Prerequisites The default AMD GPU build requires ROCM software toolkit installed on the system: @@ -1287,4 +1317,19 @@ These dependency versions should reflect what is in [Dockerfile.training](./dock * Change to the ONNX Runtime repo base folder: `cd onnxruntime` * Run `./build.sh --config RelWithDebInfo --enable_training --build_wheel --use_rocm --rocm_home /opt/rocm --nccl_home /opt/rocm --mpi_home ` - This produces the .whl file in `./build/Linux/RelWithDebInfo/dist` for ONNX Runtime Training. \ No newline at end of file + This produces the .whl file in `./build/Linux/RelWithDebInfo/dist` for ONNX Runtime Training. + +### DNNL and MKLML + +#### Build Instructions +##### Linux + +`./build.sh --enable_training --use_dnnl` + +##### Windows + +`.\build.bat --enable_training --use_dnnl` + +Add `--build_wheel` to build the ONNX Runtime wheel + +This will produce a .whl file in `build/Linux/RelWithDebInfo/dist` for ONNX Runtime Training \ No newline at end of file