trigger: branches: include: - 'master' - 'releases/*' paths: exclude: - '*/docs/*' - 'docs/*' - '*/*.md' - '*.md' - '*/layer_tests_summary/*' - '*/conformance/*' - 'tools/*' - 'tests/layer_tests/*' pr: drafts: 'false' branches: include: - 'master' - 'releases/*' paths: exclude: - '*/docs/*' - 'docs/*' - '*/*.md' - '*.md' - '*/layer_tests_summary/*' - '*/conformance/*' - 'tools/*' - 'tests/layer_tests/*' variables: - group: github jobs: - job: linux_arm64 # About 150% of total time timeoutInMinutes: '120' pool: name: LIN_VMSS_VENV_F16S_U20_WU2 variables: system.debug: true VSTS_HTTP_RETRY: 5 VSTS_HTTP_TIMEOUT: 200 NUM_PROC: 2 BUILD_TYPE: Release OPENVINO_REPO_DIR: $(Build.Repository.LocalPath) BUILD_OPENVINO: $(WORK_DIR)/build INSTALL_OPENVINO: $(WORK_DIR)/install_openvino WORK_DIR: $(Pipeline.Workspace)/_w SHARE_DIR: /mount/cinfsshare/onnxtestdata TMP_DIR: /mnt/tmp OPENVINO_CCACHE_DIR: $(SHARE_DIR)/ccache/master/linux_arm64 LD_LIBRARY_PATH: $(Agent.ToolsDirectory)/Python/$(OV_PYTHON_VERSION)/x64/lib OV_PYTHON_VERSION_MAJOR_MINOR: 3.11 OV_PYTHON_VERSION: $(OV_PYTHON_VERSION_MAJOR_MINOR).2 # Full version of Python its required for LD_LIBRARY_PATH. More details https://github.com/microsoft/azure-pipelines-tool-lib/blob/master/docs/overview.md#tool-cache steps: - task: UsePythonVersion@0 inputs: versionSpec: '$(OV_PYTHON_VERSION)' # Setting only major & minor version will download latest release from GH repo example 3.10 will be 3.10.10. addToPath: true disableDownloadFromRegistry: false architecture: 'x64' githubToken: $(auth_token) displayName: Setup Python 3.11 name: setupPython - bash: | #!/bin/bash python -V - script: | curl -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2019-06-01" whoami uname -a echo Python3 info ; which python3 ; python3 --version echo Python info ; which python ; python --version echo Java info ; which java ; java -version echo gcc info ; which gcc ; gcc --version echo cmake info ; which cmake ; cmake --version lsb_release env cat /proc/cpuinfo cat /proc/meminfo cat /etc/fstab vmstat -s df lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd" free -h echo "##vso[task.setvariable variable=NUM_PROC]$(nproc --all)" echo "NUM_PROC=$(NUM_PROC)" displayName: 'System information' - script: | set -e rm -rf $(WORK_DIR) ; mkdir $(WORK_DIR) mkdir -p $(BUILD_OPENVINO) mkdir -p $(INSTALL_OPENVINO) sudo rm -rf $(TMP_DIR) ; sudo mkdir $(TMP_DIR) ; sudo chmod 777 -R $(TMP_DIR) sudo mkdir -p $(SHARE_DIR) sudo apt --assume-yes update && sudo apt --assume-yes install nfs-common sudo mount -vvv -t nfs cinfsshare.file.core.windows.net:/cinfsshare/onnxtestdata $(SHARE_DIR) -o vers=4,minorversion=1,sec=sys mkdir -p $(OPENVINO_CCACHE_DIR) displayName: 'Make directories' - checkout: self clean: 'true' path: openvino - script: | set -e python3 -m pip install --upgrade pip python3 -m pip install cmake python3 -m pip install -r $(OPENVINO_REPO_DIR)/src/bindings/python/requirements.txt python3 -m pip install -r $(OPENVINO_REPO_DIR)/src/bindings/python/wheel/requirements-dev.txt python3 -m pip install -r $(OPENVINO_REPO_DIR)/src/bindings/python/src/compatibility/openvino/requirements-dev.txt # install dependencies needed to build CPU plugin for ARM sudo -E apt --assume-yes install scons gcc-10-aarch64-linux-gnu g++-10-aarch64-linux-gnu # generic dependencies sudo -E apt --assume-yes install cmake ccache ninja-build unzip fdupes displayName: 'Install build dependencies' - script: | set -e echo deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal main restricted > arm64-sources.list echo deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal-updates main restricted >> arm64-sources.list echo deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal universe >> arm64-sources.list echo deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal-updates universe >> arm64-sources.list echo deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal multiverse >> arm64-sources.list echo deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal-updates multiverse >> arm64-sources.list echo deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse >> arm64-sources.list echo deb [arch=amd64] http://security.ubuntu.com/ubuntu/ focal-security main restricted >> arm64-sources.list echo deb [arch=amd64] http://security.ubuntu.com/ubuntu/ focal-security universe >> arm64-sources.list echo deb [arch=amd64] http://security.ubuntu.com/ubuntu/ focal-security multiverse >> arm64-sources.list echo deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal main >> arm64-sources.list echo deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal universe >> arm64-sources.list echo deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal-updates main >> arm64-sources.list echo deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal-security main >> arm64-sources.list sudo mv arm64-sources.list /etc/apt/sources.list.d/ sudo -E dpkg --add-architecture arm64 sudo -E apt-get update -o Dir::Etc::sourcelist=/etc/apt/sources.list.d/arm64-sources.list sudo -E apt-get install -y --no-install-recommends libpython3-dev:arm64 displayName: 'Install arm64 libraries' - script: | set -e git submodule update --init -- $(OPENVINO_REPO_DIR)/src/plugins git submodule update --init -- $(OPENVINO_REPO_DIR)/thirdparty/gtest git submodule update --init -- $(OPENVINO_REPO_DIR)/thirdparty/open_model_zoo displayName: 'Init submodules for non Conan dependencies' - script: | set -e python3 -m pip install conan # install build profile compilers sudo -E apt --assume-yes install gcc g++ # generate build profile conan profile detect # generate host profile for linux_arm64 echo "include(default)" > $(BUILD_OPENVINO)/linux_arm64 echo "[buildenv]" >> $(BUILD_OPENVINO)/linux_arm64 echo "CC=aarch64-linux-gnu-gcc-10" >> $(BUILD_OPENVINO)/linux_arm64 echo "CXX=aarch64-linux-gnu-g++-10" >> $(BUILD_OPENVINO)/linux_arm64 # install OpenVINO dependencies conan install $(OPENVINO_REPO_DIR)/conanfile.txt \ -pr:h $(BUILD_OPENVINO)/linux_arm64 \ -s:h arch=armv8 \ -of $(BUILD_OPENVINO)/dependencies \ -b missing env: CMAKE_CXX_COMPILER_LAUNCHER: ccache CMAKE_C_COMPILER_LAUNCHER: ccache CCACHE_DIR: $(OPENVINO_CCACHE_DIR) CCACHE_TEMPDIR: $(TMP_DIR)/ccache CCACHE_BASEDIR: $(Pipeline.Workspace) CCACHE_MAXSIZE: 50G displayName: 'Install conan and dependencies' - script: | set -e source $(BUILD_OPENVINO)/dependencies/conanbuild.sh # TODO: return tests building once GPU plugin migrates to Plugin API 2.0 cmake \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ -DENABLE_CPPLINT=ON \ -DENABLE_INTEL_GPU=ON \ -DENABLE_PYTHON=ON \ -DENABLE_WHEEL=ON \ -DPYBIND11_PYTHONLIBS_OVERWRITE=OFF \ -DPYTHON_MODULE_EXTENSION=$(aarch64-linux-gnu-python3-config --extension-suffix) \ -DPYTHON_LIBRARY=/usr/lib/aarch64-linux-gnu/libc-2.31.so \ -DPYTHON_INCLUDE_DIR=$(Agent.ToolsDirectory)/Python/$(OV_PYTHON_VERSION)/x64/include/python$(OV_PYTHON_VERSION_MAJOR_MINOR) \ -DENABLE_DATA=OFF \ -DENABLE_SYSTEM_TBB=ON \ -DENABLE_SYSTEM_PROTOBUF=ON \ -DENABLE_SYSTEM_SNAPPY=ON \ -DENABLE_SYSTEM_PUGIXML=ON \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DARM_COMPUTE_SCONS_JOBS=$(NUM_PROC) \ -DCMAKE_INSTALL_PREFIX=$(INSTALL_OPENVINO) \ -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) \ -DENABLE_PYTHON_PACKAGING=ON \ -S $(OPENVINO_REPO_DIR) \ -B $(BUILD_OPENVINO) source $(BUILD_OPENVINO)/dependencies/deactivate_conanbuild.sh env: CMAKE_GENERATOR: Ninja CMAKE_TOOLCHAIN_FILE: $(BUILD_OPENVINO)/dependencies/conan_toolchain.cmake displayName: 'CMake configure' - script: cmake --build $(BUILD_OPENVINO) --parallel --config $(BUILD_TYPE) env: CCACHE_DIR: $(OPENVINO_CCACHE_DIR) CCACHE_TEMPDIR: $(TMP_DIR)/ccache CCACHE_BASEDIR: $(Pipeline.Workspace) CCACHE_MAXSIZE: 50G displayName: 'Build OpenVINO Runtime' - script: cmake --build $(BUILD_OPENVINO) --parallel --config $(BUILD_TYPE) --target install displayName: 'Install OpenVINO Runtime' - script: | set -e source $(BUILD_OPENVINO)/dependencies/conanbuild.sh $(INSTALL_OPENVINO)/samples/cpp/build_samples.sh source $(BUILD_OPENVINO)/dependencies/deactivate_conanbuild.sh env: CMAKE_GENERATOR: Ninja CMAKE_TOOLCHAIN_FILE: $(BUILD_OPENVINO)/dependencies/conan_toolchain.cmake displayName: 'Build OpenVINO C++ samples'