diff --git a/.github/workflows/linux_conditional_compilation.yml b/.github/workflows/linux_conditional_compilation.yml index 93ea9fb5ee2aa3..f0c8a4f7a17960 100644 --- a/.github/workflows/linux_conditional_compilation.yml +++ b/.github/workflows/linux_conditional_compilation.yml @@ -1,63 +1,71 @@ name: Linux Conditional Compilation (Ubuntu 22.04, Python 3.11) on: workflow_dispatch: - schedule: - # run daily at 00:00 - - cron: '0 0 * * *' -# 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 + 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-cc + # github.ref is not unique in post-commit + group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-linux-cc 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-latest-8-cores + runs-on: aks-linux-16-cores + container: + image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:22.04 + volumes: + - /mount/caches:/mount/caches env: + DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input CMAKE_BUILD_TYPE: 'Release' - CMAKE_GENERATOR: 'Ninja' + CMAKE_GENERATOR: 'Ninja Multi-Config' CMAKE_CXX_COMPILER_LAUNCHER: ccache CMAKE_C_COMPILER_LAUNCHER: ccache - OPENVINO_REPO: ${{ github.workspace }}/openvino - OPENVINO_CONTRIB_REPO: ${{ github.workspace }}/openvino_contrib - BUILD_DIR: ${{ github.workspace }}/build - MODELS_PATH: ${{ github.workspace }}/testdata - OV_TEMP: ${{ github.workspace }}/openvino_temp - PYTHON_STATIC_ARGS: -m "not dynamic_library and not template_plugin" + GITHUB_WORKSPACE: '/__w/openvino/openvino' + OPENVINO_REPO: /__w/openvino/openvino/openvino + BUILD_DIR: /__w/openvino/openvino/openvino_build + MODELS_PATH: /__w/openvino/openvino/testdata + CCACHE_DIR: /mount/caches/ccache/ubuntu22_x86_64_cc_Release + CCACHE_TEMPDIR: /__w/openvino/openvino/ccache_temp + CCACHE_MAXSIZE: 50G steps: + + - name: Install git + run: | + apt-get update + apt-get install --assume-yes --no-install-recommends git ca-certificates git-lfs + - name: Clone OpenVINO uses: actions/checkout@v4 with: - path: 'openvino' + path: ${{ env.OPENVINO_REPO }} submodules: 'true' - name: Clone test models uses: actions/checkout@v4 with: repository: 'openvinotoolkit/testdata' - path: 'testdata' + path: ${{ env.MODELS_PATH }} lfs: 'true' # @@ -66,42 +74,16 @@ jobs: - name: Install build dependencies run: | - sudo -E ${{ env.OPENVINO_REPO }}/install_build_dependencies.sh - sudo -E apt update - sudo -E apt --assume-yes install openjdk-11-jdk libbz2-dev clang unzip libpugixml-dev libtbb-dev intel-opencl-icd ocl-icd-opencl-dev opencl-headers - - wget https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-linux.zip - unzip ninja-linux.zip - sudo cp -v ninja /usr/local/bin/ - - - uses: actions/setup-python@v4 - with: - python-version: '3.11' + bash ${OPENVINO_REPO}/install_build_dependencies.sh # # Build # - - name: Setup ccache - uses: hendrikmuhs/ccache-action@v1.2 - 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: linux-cc - restore-keys: | - linux-cc - - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v2 - id: cpu-cores - - name: CMake configure CC COLLECT run: | cmake \ - -G "Ninja Multi-Config" \ + -G "${{ env.CMAKE_GENERATOR }}" \ -DENABLE_CPPLINT=OFF \ -DENABLE_GAPI_PREPROCESSING=OFF \ -DCMAKE_VERBOSE_MAKEFILE=ON \ @@ -109,32 +91,29 @@ jobs: -DENABLE_FASTER_BUILD=ON \ -DENABLE_PROFILING_ITT=ON \ -DSELECTIVE_BUILD=COLLECT \ - -S ${{ env.OPENVINO_REPO }} \ - -B ${{ env.BUILD_DIR }} - - - name: Clean ccache stats - run: ccache --zero-stats --show-config + -S ${OPENVINO_REPO} \ + -B ${BUILD_DIR} - name: Build CC COLLECT - run: cmake --build ${{ env.BUILD_DIR }} --parallel ${{ steps.cpu-cores.outputs.count }} --config Release --target openvino_intel_cpu_plugin openvino_ir_frontend benchmark_app sea_itt_lib + run: cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target openvino_intel_cpu_plugin openvino_ir_frontend benchmark_app sea_itt_lib - name: Show ccache stats run: ccache --show-stats - name: Code usage analysis run: | - python3 ${{ env.OPENVINO_REPO }}/thirdparty/itt_collector/runtool/sea_runtool.py \ - --bindir ${{ env.OPENVINO_REPO }}/bin/intel64/Release -o ${{ env.BUILD_DIR }}/itt_stat ! \ - ${{ env.OPENVINO_REPO }}/bin/intel64/Release/benchmark_app -niter 1 -nireq 1 \ - -m ${{ env.MODELS_PATH }}/models/test_model/test_model_fp32.xml -d CPU + python3 ${OPENVINO_REPO}/thirdparty/itt_collector/runtool/sea_runtool.py \ + --bindir ${OPENVINO_REPO}/bin/intel64/Release -o ${BUILD_DIR}/itt_stat ! \ + ${OPENVINO_REPO}/bin/intel64/Release/benchmark_app -niter 1 -nireq 1 \ + -m ${MODELS_PATH}/models/test_model/test_model_fp32.xml -d CPU - name: CMake configure with CC ON - run: cmake -DSELECTIVE_BUILD=ON -DSELECTIVE_BUILD_STAT=${{ env.BUILD_DIR }}/*.csv -S ${{ env.OPENVINO_REPO }} -B ${{ env.BUILD_DIR }} + run: cmake -DSELECTIVE_BUILD=ON -DSELECTIVE_BUILD_STAT=${BUILD_DIR}/*.csv -S ${OPENVINO_REPO} -B ${BUILD_DIR} - name: Build with CC ON - run: cmake --build ${{ env.BUILD_DIR }} --parallel ${{ steps.cpu-cores.outputs.count }} --config Release --target openvino_intel_cpu_plugin openvino_ir_frontend + run: cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target openvino_intel_cpu_plugin openvino_ir_frontend - name: Use OpenVINO after CC run: | - ${{ env.OPENVINO_REPO }}/bin/intel64/Release/benchmark_app -niter 1 -nireq 1 \ - -m ${{ env.MODELS_PATH }}/models/test_model/test_model_fp32.xml -d CPU + ${OPENVINO_REPO}/bin/intel64/Release/benchmark_app -niter 1 -nireq 1 \ + -m ${MODELS_PATH}/models/test_model/test_model_fp32.xml -d CPU