Linux ARM64 (Ubuntu 20.04, Python 3.11) #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linux ARM64 (Ubuntu 20.04, Python 3.11) | |
on: | |
schedule: | |
# run daily at 00:00 | |
- cron: '0 0 * * *' | |
workflow_dispatch: | |
# pull_request: | |
# paths-ignore: | |
# - '**/docs/**' | |
# - 'docs/**' | |
# - '**/**.md' | |
# - '**.md' | |
# - '**/layer_tests_summary/**' | |
# - '**/conformance/**' | |
# push: | |
# paths-ignore: | |
# - '**/docs/**' | |
# - 'docs/**' | |
# - '**/**.md' | |
# - '**.md' | |
# - '**/layer_tests_summary/**' | |
# - '**/conformance/**' | |
# branches: | |
# - master | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }}-linux-arm64 | |
cancel-in-progress: true | |
jobs: | |
Build: | |
# TODO: remove. Temporary measure to prevent the workflow from scheduling on forks. | |
if: ${{ github.repository_owner == 'openvinotoolkit' }} | |
defaults: | |
run: | |
shell: bash | |
runs-on: ubuntu-20.04-8-cores | |
env: | |
CMAKE_BUILD_TYPE: 'Release' | |
CMAKE_GENERATOR: 'Ninja' | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
NUM_PROC: 2 | |
BUILD_TYPE: Release | |
OPENVINO_REPO: ${{ github.workspace }}/openvino | |
BUILD_DIR: ${{ github.workspace }}/build | |
INSTALL_DIR: ${{ github.workspace }}/install | |
DATA_PATH: ${{ github.workspace }}/testdata | |
MODELS_PATH: ${{ github.workspace }}/testdata | |
OV_TEMP: ${{ github.workspace }}/openvino_temp | |
steps: | |
- name: Clone OpenVINO | |
uses: actions/checkout@v3 | |
with: | |
path: 'openvino' | |
- name: Init submodules for non Conan dependencies | |
run: | | |
pushd ${{ env.OPENVINO_REPO }} | |
git submodule update --init -- ${{ env.OPENVINO_REPO }}/src/plugins | |
git submodule update --init -- ${{ env.OPENVINO_REPO }}/thirdparty/gtest | |
git submodule update --init -- ${{ env.OPENVINO_REPO }}/thirdparty/open_model_zoo | |
popd | |
- name: Create Directories | |
run: | | |
mkdir -p ${{ env.BUILD_DIR }} | |
mkdir -p ${{ env.INSTALL_DIR }} | |
- name: Setup Python 3.11 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
# | |
# Dependencies | |
# | |
- name: Install build dependencies | |
run: | | |
sudo -E apt update | |
# 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 | |
- name: Install python dependencies | |
run: | | |
python3 -m pip install --upgrade pip | |
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/requirements.txt | |
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/wheel/requirements-dev.txt | |
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/src/compatibility/openvino/requirements-dev.txt | |
- name: Install arm64 libraries | |
run: | | |
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 | |
- name: Setup ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
max-size: "2000M" | |
# Should save cache only if run in the master branch of the base repo | |
# github.ref_name is 'ref/PR_#' in case of the PR, and 'branch_name' when executed on push | |
save: ${{ github.ref_name == 'master' && 'true' || 'false' }} | |
verbose: 2 | |
key: ${{ github.job }}-linux-arm64 | |
restore-keys: | | |
${{ github.job }}-linux-arm64 | |
- name: Get tools versions | |
run: | | |
ninja --version | |
ccache --version | |
python3 --version | |
cmake --version | |
- name: Install conan and dependencies | |
run: | | |
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)" > ${{ env.BUILD_DIR }}/linux_arm64 | |
echo "[buildenv]" >> ${{ env.BUILD_DIR }}/linux_arm64 | |
echo "CC=aarch64-linux-gnu-gcc-10" >> ${{ env.BUILD_DIR }}/linux_arm64 | |
echo "CXX=aarch64-linux-gnu-g++-10" >> ${{ env.BUILD_DIR }}/linux_arm64 | |
# install OpenVINO dependencies | |
conan install ${{ env.OPENVINO_REPO }}/conanfile.txt \ | |
-pr:h ${{ env.BUILD_DIR }}/linux_arm64 \ | |
-s:h arch=armv8 \ | |
-of ${{ env.BUILD_DIR }}/dependencies \ | |
-b missing | |
# | |
# Build | |
# | |
- name: Get number of CPU cores | |
uses: SimenB/github-actions-cpu-cores@v1 | |
id: cpu-cores | |
- name: CMake configure | |
run: | | |
source ${{ env.BUILD_DIR }}/dependencies/conanbuild.sh | |
# TODO: return tests building once GPU plugin migrates to Plugin API 2.0 | |
cmake \ | |
-G Ninja \ | |
-DCMAKE_VERBOSE_MAKEFILE=ON \ | |
-DBUILD_SHARED_LIBS=OFF \ | |
-DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \ | |
-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=$(python3 -c "import sysconfig; print(sysconfig.get_path('include'))") \ | |
-DENABLE_DATA=OFF \ | |
-DENABLE_SYSTEM_TBB=ON \ | |
-DENABLE_SYSTEM_PROTOBUF=ON \ | |
-DENABLE_SYSTEM_SNAPPY=ON \ | |
-DENABLE_SYSTEM_PUGIXML=ON \ | |
-DCMAKE_TOOLCHAIN_FILE=${{ env.BUILD_DIR }}/dependencies/conan_toolchain.cmake \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
-DARM_COMPUTE_SCONS_JOBS=${{ env.NUM_PROC }} \ | |
-DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-DENABLE_PYTHON_PACKAGING=ON \ | |
-S ${{ env.OPENVINO_REPO }} \ | |
-B ${{ env.BUILD_DIR }} | |
source ${{ env.BUILD_DIR }}/dependencies/deactivate_conanbuild.sh | |
- name: Clean ccache stats | |
run: ccache --zero-stats --show-config | |
- name: Build OpenVINO Runtime | |
run: cmake --build ${{ env.BUILD_DIR }} --parallel ${{ steps.cpu-cores.outputs.count }} --config ${{ env.BUILD_TYPE }} | |
- name: Show ccache stats | |
run: ccache --show-stats | |
- name: Install OpenVINO Runtime | |
run: cmake --build ${{ env.BUILD_DIR }} --parallel ${{ steps.cpu-cores.outputs.count }} --config ${{ env.BUILD_TYPE }} --target install | |
- name: Build OpenVINO C++ samples | |
run: | | |
source ${{ env.BUILD_DIR }}/dependencies/conanbuild.sh | |
${{ env.INSTALL_DIR }}/samples/cpp/build_samples.sh | |
source ${{ env.BUILD_DIR }}/dependencies/deactivate_conanbuild.sh | |
env: | |
CMAKE_TOOLCHAIN_FILE: ${{ env.BUILD_DIR }}/dependencies/conan_toolchain.cmake |