Windows Conditional Compilation (VS 2022, Python 3.11) #370
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: Windows Conditional Compilation (VS 2022, Python 3.11) | |
on: | |
workflow_dispatch: | |
schedule: | |
# run daily at 00:00 | |
- cron: '0 0 * * *' | |
pull_request: | |
merge_group: | |
push: | |
branches: | |
- master | |
- 'releases/**' | |
concurrency: | |
# github.ref is not unique in post-commit | |
group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-windows-cc | |
cancel-in-progress: true | |
env: | |
PYTHON_VERSION: '3.11' | |
jobs: | |
Smart_CI: | |
runs-on: ubuntu-latest | |
outputs: | |
affected_components: "${{ steps.smart_ci.outputs.affected_components }}" | |
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}" | |
steps: | |
- name: checkout action | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: .github/actions/smart-ci | |
- name: Get affected components | |
id: smart_ci | |
uses: ./.github/actions/smart-ci | |
with: | |
repository: ${{ github.repository }} | |
pr: ${{ github.event.number }} | |
commit_sha: ${{ github.sha }} | |
ref_name: ${{ github.ref_name }} | |
component_pattern: "category: (.*)" | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
skip_when_only_listed_labels_set: 'docs' | |
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg,*/layer_tests_summary/*,*/conformance/*' | |
Build: | |
needs: Smart_CI | |
timeout-minutes: 300 # 5 hours without cache | |
defaults: | |
run: | |
shell: pwsh | |
runs-on: aks-win-8-cores-64gb | |
env: | |
CMAKE_BUILD_TYPE: 'Release' | |
CMAKE_GENERATOR: 'Ninja Multi-Config' | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
CCACHE_REMOTE_DIR: "C:\\mount\\caches\\ccache\\windows2022_x86_64_itt\\${{ github.base_ref || github.ref_name }}" | |
CCACHE_DIR: ${{ github.workspace }}\\ccache | |
CCACHE_MAXSIZE: 3G | |
OPENVINO_REPO: "${{ github.workspace }}\\openvino" | |
INSTALL_DIR: "${{ github.workspace }}\\openvino_install" | |
INSTALL_TEST_DIR: "${{ github.workspace }}\\tests_install" | |
BUILD_DIR: "${{ github.workspace }}\\openvino_build" | |
MODELS_PATH: "${{ github.workspace }}\\testdata" | |
SELECTIVE_BUILD_STAT_DIR: "${{ github.workspace }}\\selective_build_stat" | |
# TODO: specify version of compiler here | |
if: ${{ !needs.smart_ci.outputs.skip_workflow && github.event_name != 'merge_group' }} | |
steps: | |
- name: Clone OpenVINO | |
uses: actions/checkout@v4 | |
with: | |
path: 'openvino' | |
submodules: 'true' | |
- name: Clone test models | |
uses: actions/checkout@v4 | |
with: | |
repository: 'openvinotoolkit/testdata' | |
path: 'testdata' | |
lfs: 'true' | |
ref: 'master' | |
# | |
# Print system info | |
# | |
- name: System info | |
uses: ./openvino/.github/actions/system_info | |
# | |
# Dependencies | |
# | |
- name: Setup Python ${{ env.PYTHON_VERSION }} | |
uses: ./openvino/.github/actions/setup_python | |
with: | |
version: ${{ env.PYTHON_VERSION }} | |
should-setup-pip-paths: 'false' | |
self-hosted-runner: 'false' | |
- name: Download and install ccache | |
run: | | |
Invoke-WebRequest -Uri 'https://github.com/ccache/ccache/releases/download/v4.9.1/ccache-4.9.1-windows-x86_64.zip' -OutFile 'ccache.zip' | |
Expand-Archive -Path 'ccache.zip' -DestinationPath 'C:\temp\ccache' | |
Move-Item -Path 'C:\temp\ccache\*' -Destination 'C:\ccache' | |
Add-Content -Path $env:GITHUB_PATH -Value "C:\ccache" | |
- name: Install build dependencies | |
run: | | |
Invoke-WebRequest https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip -OutFile ninja-win.zip -MaximumRetryCount 10 | |
Expand-Archive -Force ninja-win.zip | |
# Add it to the GitHub Path so it would be available in the subsequent steps | |
Add-Content -Path $env:GITHUB_PATH -Value "${{ github.workspace }}/ninja-win" | |
- name: Install python dependencies | |
run: | | |
# For running ONNX frontend unit tests | |
python3 -m pip install --force-reinstall -r ${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests/requirements.txt | |
# For running TensorFlow frontend unit tests | |
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/tensorflow/tests/requirements.txt | |
# For running TensorFlow Lite frontend unit tests | |
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/tensorflow_lite/tests/requirements.txt | |
# For getting rid of SSL issues during model downloading for unit tests | |
python3 -m pip install certifi | |
# Disabled because of CVS-95904 | |
# For running Paddle frontend unit tests | |
# python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/paddle/tests/requirements.txt | |
# | |
# Build | |
# | |
- name: Setup ccache | |
uses: ./openvino/.github/actions/cache | |
with: | |
save-always: ${{ github.event_name == 'push' && 'true' || 'false' }} | |
cleanup-always: ${{ github.event_name == 'push' && 'true' || 'false' }} | |
cache-path: ${{ env.CCACHE_REMOTE_DIR }} | |
path: ${{ env.CCACHE_DIR }} | |
key: ${{ runner.os }}-${{ runner.arch }}-ccache-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-${{ runner.arch }}-ccache | |
- name: Configure Developer Command Prompt for Microsoft Visual C++ | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Set SSL_CERT_FILE for model downloading for unit tests | |
run: echo SSL_CERT_FILE=$(python3 -m certifi) >> $env:GITHUB_ENV | |
- name: CMake configure - CC COLLECT | |
run: | | |
cmake -G "${{ env.CMAKE_GENERATOR }}" ` | |
-DBUILD_SHARED_LIBS=OFF ` | |
-DCMAKE_CXX_STANDARD=20 ` | |
-DENABLE_TESTS=ON ` | |
-DENABLE_CPPLINT=OFF ` | |
-DENABLE_NCC_STYLE=OFF ` | |
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON ` | |
-DENABLE_PROFILING_ITT=ON ` | |
-DSELECTIVE_BUILD=COLLECT ` | |
-DCMAKE_DISABLE_FIND_PACKAGE_PkgConfig=ON ` | |
-S ${{ env.OPENVINO_REPO }} ` | |
-B ${{ env.BUILD_DIR }} | |
- name: Clean ccache stats | |
run: '& ccache --zero-stats' | |
- name: Cmake build - CC COLLECT | |
run: | | |
cmake --build ${{ env.BUILD_DIR }} --parallel 8 --config ${{ env.CMAKE_BUILD_TYPE }} && ` | |
cmake --build ${{ env.BUILD_DIR }} --parallel 8 --config ${{ env.CMAKE_BUILD_TYPE }} --target sea_itt_lib | |
- name: Show ccache stats | |
run: '& ccache --show-stats' | |
- name: Cmake install - OpenVINO | |
run: cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake | |
- name: Build C++ samples - OpenVINO build tree | |
run: | | |
cmake -G "${{ env.CMAKE_GENERATOR }}" -DOpenVINO_DIR=${{ env.BUILD_DIR }} -S ${{ env.INSTALL_DIR }}/samples/cpp -B ${{ env.BUILD_DIR }}/cpp_samples | |
cmake --build ${{ env.BUILD_DIR }}/cpp_samples --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target hello_query_device | |
- name: Build C samples - OpenVINO install tree | |
run: | | |
& ${{ env.INSTALL_DIR }}/samples/c/build_samples.ps1 -i ${{ env.INSTALL_DIR }} -b ${{ env.BUILD_DIR }}/c_samples | |
- name: Ctest - OpenVINO unit tests | |
shell: cmd | |
run: | | |
set path=%path%;${{ env.OPENVINO_REPO }}\temp\tbb\bin;${{ env.BUILD_DIR }}\bin\Release | |
ctest -C ${{ env.CMAKE_BUILD_TYPE }} --test-dir ${{ env.BUILD_DIR }} -V -L UNIT | |
- name: Perform code tracing via ITT collector | |
shell: cmd | |
run: | | |
set path=%path%;${{ env.OPENVINO_REPO }}\temp\tbb\bin;${{ env.BUILD_DIR }}\bin\Release | |
python3 ${{ env.OPENVINO_REPO }}\thirdparty\itt_collector\runtool\sea_runtool.py ^ | |
--bindir ${{ env.OPENVINO_REPO }}\bin\intel64\${{ env.CMAKE_BUILD_TYPE }} ^ | |
-o ${{ env.SELECTIVE_BUILD_STAT_DIR }}\itt_stat ! ${{ env.OPENVINO_REPO }}\bin\intel64\${{ env.CMAKE_BUILD_TYPE }}\benchmark_app.exe ^ | |
-niter 1 ^ | |
-nireq 1 ^ | |
-m ${{ env.MODELS_PATH }}\models\test_model\test_model_fp32.xml ^ | |
-d CPU | |
- name: List bin files | |
shell: cmd | |
run: dir ${{ env.OPENVINO_REPO }}\bin\ /s | |
- name: List install files | |
shell: cmd | |
run: dir ${{ env.INSTALL_DIR }} /s | |
- name: Pack Artifacts | |
run: | | |
$file=Get-ChildItem -Path "${{ env.SELECTIVE_BUILD_STAT_DIR }}" | |
$compress = @{ | |
Path = $file | |
CompressionLevel = "Optimal" | |
DestinationPath = "${{ env.BUILD_DIR }}/openvino_selective_build_stat.zip" | |
} | |
Compress-Archive @compress | |
$compress = @{ | |
Path = "${{ env.OPENVINO_REPO }}/bin/intel64/${{ env.CMAKE_BUILD_TYPE }}/ov_cpu_func_tests.exe", "${{ env.BUILD_DIR }}/bin/Release/ze_loader.dll", "${{ env.OPENVINO_REPO }}/bin/intel64/${{ env.CMAKE_BUILD_TYPE }}/openvino_template_extension.dll", "${{ env.OPENVINO_REPO }}/src/tests/test_utils/functional_test_utils/layer_tests_summary", "${{ env.INSTALL_DIR }}/runtime/3rdparty/tbb" | |
CompressionLevel = "Optimal" | |
DestinationPath = "${{ env.BUILD_DIR }}/openvino_tests.zip" | |
} | |
Compress-Archive @compress | |
# | |
# Upload build artifacts and logs | |
# | |
- name: Upload selective build statistics package | |
if: ${{ always() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: openvino_selective_build_stat | |
path: ${{ env.BUILD_DIR }}/openvino_selective_build_stat.zip | |
if-no-files-found: 'error' | |
- name: Upload OpenVINO tests package | |
if: ${{ always() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: openvino_tests | |
path: ${{ env.BUILD_DIR }}/openvino_tests.zip | |
if-no-files-found: 'error' | |
CC_Build: | |
name: Conditional Compilation | |
needs: [Build, Smart_CI] | |
defaults: | |
run: | |
shell: pwsh | |
runs-on: aks-win-8-cores-64gb | |
env: | |
CMAKE_BUILD_TYPE: 'Release' | |
OPENVINO_REPO: "${{ github.workspace }}\\openvino" | |
BUILD_DIR: "${{ github.workspace }}\\openvino_build" | |
MODELS_PATH: "${{ github.workspace }}\\testdata" | |
SELECTIVE_BUILD_STAT_DIR: "${{ github.workspace }}\\selective_build_stat" | |
if: "!needs.smart_ci.outputs.skip_workflow" | |
steps: | |
- name: Clone OpenVINO | |
uses: actions/checkout@v4 | |
with: | |
path: 'openvino' | |
submodules: 'true' | |
- name: Clone test models | |
uses: actions/checkout@v4 | |
with: | |
repository: 'openvinotoolkit/testdata' | |
path: 'testdata' | |
lfs: 'true' | |
ref: 'master' | |
- name: Download selective build statistics package | |
uses: actions/download-artifact@v4 | |
with: | |
name: openvino_selective_build_stat | |
path: ${{ env.SELECTIVE_BUILD_STAT_DIR }} | |
- name: Extract selective build statistics package | |
run: Expand-Archive ${{ env.SELECTIVE_BUILD_STAT_DIR }}/openvino_selective_build_stat.zip -DestinationPath "${{ env.SELECTIVE_BUILD_STAT_DIR }}" | |
- name: Setup Python ${{ env.PYTHON_VERSION }} | |
uses: ./openvino/.github/actions/setup_python | |
with: | |
version: ${{ env.PYTHON_VERSION }} | |
should-setup-pip-paths: 'false' | |
self-hosted-runner: 'false' | |
- name: CMake configure - CC ON | |
run: | | |
cmake ` | |
-DBUILD_SHARED_LIBS=OFF ` | |
-DENABLE_CPPLINT=OFF ` | |
-DSELECTIVE_BUILD=ON ` | |
-DENABLE_TEMPLATE=OFF ` | |
-DENABLE_INTEL_GPU=OFF ` | |
-DENABLE_OV_TF_FRONTEND=OFF ` | |
-DENABLE_OV_TF_LITE_FRONTEND=OFF ` | |
-DENABLE_OV_PADDLE_FRONTEND=OFF ` | |
-DENABLE_OV_PYTORCH_FRONTEND=OFF ` | |
-DENABLE_OV_ONNX_FRONTEND=OFF ` | |
-DSELECTIVE_BUILD_STAT=${{ env.SELECTIVE_BUILD_STAT_DIR }}\*.csv ` | |
-S ${{ env.OPENVINO_REPO }} ` | |
-B ${{ env.BUILD_DIR }} | |
- name: Cmake build - CC ON | |
run: cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target benchmark_app | |
- name: List bin files | |
shell: cmd | |
run: dir ${{ env.OPENVINO_REPO }}\bin\ /s | |
- name: Run with CC-ed runtime | |
shell: cmd | |
run: | | |
set path=%path%;${{ env.OPENVINO_REPO }}\temp\tbb\bin;${{ env.BUILD_DIR }}\bin\Release | |
${{ env.OPENVINO_REPO }}\bin\intel64\${{ env.CMAKE_BUILD_TYPE }}\benchmark_app.exe -niter 1 -nireq 1 -m ${{ env.MODELS_PATH }}\models\test_model\test_model_fp32.xml -d CPU | |
CPU_Functional_Tests: | |
name: CPU functional tests | |
needs: [Build, Smart_CI] | |
timeout-minutes: 85 | |
defaults: | |
run: | |
shell: pwsh | |
runs-on: aks-win-8-cores-16gb | |
env: | |
OPENVINO_REPO: "${{ github.workspace }}\\openvino" | |
INSTALL_TEST_DIR: "${{ github.workspace }}\\tests_install" | |
PARALLEL_TEST_SCRIPT: "${{ github.workspace }}\\tests_install\\layer_tests_summary\\run_parallel.py" | |
PARALLEL_TEST_CACHE: "${{ github.workspace }}\\tests_install\\test_cache.lst" | |
if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test | |
steps: | |
- name: Download OpenVINO tests package | |
uses: actions/download-artifact@v4 | |
with: | |
name: openvino_tests | |
path: ${{ env.INSTALL_TEST_DIR }} | |
- name: Extract OpenVINO tests package | |
run: Expand-Archive ${{ env.INSTALL_TEST_DIR }}/openvino_tests.zip -DestinationPath "${{ env.INSTALL_TEST_DIR }}" | |
- name: Fetch setup_python action | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: | | |
.github/actions/setup_python/action.yml | |
sparse-checkout-cone-mode: false | |
path: 'openvino' | |
- name: Setup Python ${{ env.PYTHON_VERSION }} | |
uses: ./openvino/.github/actions/setup_python | |
with: | |
version: ${{ env.PYTHON_VERSION }} | |
should-setup-pip-paths: 'false' | |
self-hosted-runner: 'false' | |
- name: Install python dependencies for run_parallel.py | |
run: python3 -m pip install -r ${{ env.INSTALL_TEST_DIR }}/layer_tests_summary/requirements.txt | |
- name: Restore tests execution time | |
uses: actions/cache/restore@v4 | |
with: | |
path: ${{ env.PARALLEL_TEST_CACHE }} | |
key: ${{ runner.os }}-tests-functional-cpu-stamp-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-tests-functional-cpu-stamp | |
- name: Intel CPU plugin func tests (parallel) | |
shell: cmd | |
run: | | |
set path=%path%;${{ env.INSTALL_TEST_DIR }}\tbb\bin;${{ env.INSTALL_TEST_DIR }}\tbb;${{ env.INSTALL_TEST_DIR }} | |
python3 ${{ env.PARALLEL_TEST_SCRIPT }} -e ${{ env.INSTALL_TEST_DIR }}\ov_cpu_func_tests.exe -w ${{ env.INSTALL_TEST_DIR }} -s suite -rf 0 -- --gtest_print_time=1 --gtest_filter=*smoke* | |
timeout-minutes: 60 | |
- name: Upload Test Results | |
uses: actions/upload-artifact@v4 | |
if: ${{ !cancelled() }} | |
with: | |
name: test-results-functional-cpu | |
path: | | |
${{ env.INSTALL_TEST_DIR }}/TEST*.xml | |
${{ env.INSTALL_TEST_DIR }}/logs/failed/*.log | |
${{ env.INSTALL_TEST_DIR }}/logs/crashed/*.log | |
${{ env.INSTALL_TEST_DIR }}/logs/hanged/*.log | |
${{ env.INSTALL_TEST_DIR }}/logs/interapted/*.log | |
${{ env.INSTALL_TEST_DIR }}/logs/disabled_tests.log | |
if-no-files-found: 'error' | |
Overall_Status: | |
name: ci/gha_overall_status_windows_cc | |
needs: [Smart_CI, Build, CC_Build, CPU_Functional_Tests] | |
if: ${{ always() }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check status of all jobs | |
if: >- | |
${{ | |
contains(needs.*.result, 'failure') || | |
contains(needs.*.result, 'cancelled') | |
}} | |
run: exit 1 |