[CPU] Enable compressed FC via oneDNN Matmul primitive (#27459) #133
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 Static CC (Ubuntu 22.04, Python 3.11, Clang) | |
on: | |
workflow_dispatch: | |
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 }}-linux-cc | |
cancel-in-progress: true | |
permissions: read-all | |
env: | |
PIP_CACHE_PATH: /mount/caches/pip/linux | |
PYTHON_VERSION: '3.11' | |
TARGET_BRANCH: ${{ github.base_ref || github.event.merge_group.base_ref || github.ref }} | |
jobs: | |
Smart_CI: | |
runs-on: ubuntu-latest | |
outputs: | |
affected_components: "${{ steps.smart_ci.outputs.affected_components }}" | |
changed_components: "${{ steps.smart_ci.outputs.changed_components }}" | |
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}" | |
steps: | |
- name: checkout action | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
timeout-minutes: 15 | |
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/*' | |
- name: Show affected components | |
run: | | |
echo "${{ toJSON(steps.smart_ci.outputs.affected_components) }}" | |
shell: bash | |
Docker: | |
needs: Smart_CI | |
if: "!needs.smart_ci.outputs.skip_workflow" | |
runs-on: aks-linux-4-cores-16gb-docker-build | |
container: | |
image: openvinogithubactions.azurecr.io/docker_build:0.2 | |
volumes: | |
- /mount:/mount | |
outputs: | |
images: "${{ steps.handle_docker.outputs.images }}" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
timeout-minutes: 15 | |
- uses: ./.github/actions/handle_docker | |
id: handle_docker | |
with: | |
images: | | |
ov_build/ubuntu_22_04_x64_cc | |
ov_test/ubuntu_22_04_x64 | |
registry: 'openvinogithubactions.azurecr.io' | |
dockerfiles_root_dir: '.github/dockerfiles' | |
changed_components: ${{ needs.smart_ci.outputs.changed_components }} | |
Build: | |
needs: [Docker, Smart_CI] | |
timeout-minutes: 150 | |
defaults: | |
run: | |
shell: bash | |
runs-on: aks-linux-16-cores-32gb | |
container: | |
image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_x64_cc }} | |
volumes: | |
- /mount:/mount | |
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING | |
env: | |
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input | |
CMAKE_BUILD_TYPE: 'Release' | |
CMAKE_GENERATOR: 'Ninja Multi-Config' | |
CMAKE_CXX_COMPILER_LAUNCHER: sccache | |
CMAKE_C_COMPILER_LAUNCHER: sccache | |
SCCACHE_IGNORE_SERVER_IO_ERROR: 1 | |
SCCACHE_SERVER_PORT: 35555 | |
SCCACHE_ERROR_LOG: /__w/openvino/sccache_log.txt | |
SCCACHE_LOG: warn | |
GITHUB_WORKSPACE: '/__w/openvino/openvino' | |
OPENVINO_REPO: /__w/openvino/openvino/openvino | |
INSTALL_DIR: /__w/openvino/openvino/openvino_install | |
INSTALL_TEST_DIR: /__w/openvino/openvino/tests_install | |
BUILD_DIR: /__w/openvino/openvino/openvino_build | |
SELECTIVE_BUILD_STAT_DIR: /__w/openvino/openvino/selective_build_stat | |
MODELS_PATH: /__w/openvino/openvino/testdata | |
SCCACHE_AZURE_KEY_PREFIX: ubuntu22_x86_64_itt_clang_Release_faster_build | |
if: ${{ github.event_name != 'merge_group' }} | |
steps: | |
- name: Clone OpenVINO | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
timeout-minutes: 15 | |
with: | |
path: ${{ env.OPENVINO_REPO }} | |
submodules: 'true' | |
- name: Clone test models | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
timeout-minutes: 15 | |
with: | |
repository: 'openvinotoolkit/testdata' | |
path: ${{ env.MODELS_PATH }} | |
lfs: 'true' | |
ref: ${{ env.TARGET_BRANCH }} | |
# | |
# Print system info | |
# | |
- name: System info | |
uses: ./openvino/.github/actions/system_info | |
- name: Install python dependencies | |
run: | | |
# For running ONNX frontend unit tests | |
python3 -m pip install --force-reinstall -r ${OPENVINO_REPO}/src/frontends/onnx/tests/requirements.txt | |
# For running TensorFlow frontend unit tests | |
python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/tensorflow/tests/requirements.txt | |
# For running TensorFlow Lite frontend unit tests | |
python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/tensorflow_lite/tests/requirements.txt | |
# For running Paddle frontend unit tests | |
python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/paddle/tests/requirements.txt | |
# | |
# Build | |
# | |
- name: CMake configure - CC COLLECT | |
run: | | |
cmake \ | |
-G "${{ env.CMAKE_GENERATOR }}" \ | |
-DCMAKE_CXX_STANDARD=20 \ | |
-DBUILD_SHARED_LIBS=OFF \ | |
-DENABLE_TESTS=ON \ | |
-DENABLE_CPPLINT=OFF \ | |
-DENABLE_NCC_STYLE=OFF \ | |
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ | |
-DENABLE_PROFILING_ITT=ON \ | |
-DSELECTIVE_BUILD=COLLECT \ | |
-DENABLE_FASTER_BUILD=ON \ | |
-DENABLE_DEBUG_CAPS=ON \ | |
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \ | |
-S ${OPENVINO_REPO} \ | |
-B ${BUILD_DIR} | |
- name: Cmake build - CC COLLECT | |
run: | | |
cmake --build ${BUILD_DIR} --parallel 8 --config ${{ env.CMAKE_BUILD_TYPE }} | |
cmake --build ${BUILD_DIR} --parallel $(nproc) --config ${{ env.CMAKE_BUILD_TYPE }} --target sea_itt_lib | |
- name: Show sccache stats | |
run: ${SCCACHE_PATH} --show-stats | |
- name: Cmake install - OpenVINO | |
run: | | |
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -P ${BUILD_DIR}/cmake_install.cmake | |
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_TEST_DIR} -DCOMPONENT=tests -P ${BUILD_DIR}/cmake_install.cmake | |
- name: Build C++ samples - OpenVINO build tree | |
run: | | |
cmake -G "${{ env.CMAKE_GENERATOR }}" -DOpenVINO_DIR=${BUILD_DIR} -S ${INSTALL_DIR}/samples/cpp -B ${BUILD_DIR}/cpp_samples | |
cmake --build ${BUILD_DIR}/cpp_samples --parallel $(nproc) --config ${{ env.CMAKE_BUILD_TYPE }} --target hello_query_device | |
- name: Build C samples - OpenVINO install tree | |
run: ${INSTALL_DIR}/samples/c/build_samples.sh -i ${INSTALL_DIR} -b ${BUILD_DIR}/c_samples | |
- name: Ctest - OpenVINO unit tests | |
run: ctest -C ${{ env.CMAKE_BUILD_TYPE }} --test-dir ${BUILD_DIR} -V -L UNIT | |
- name: Perform code tracing via ITT collector | |
run: | | |
python3 ${OPENVINO_REPO}/thirdparty/itt_collector/runtool/sea_runtool.py \ | |
--bindir ${OPENVINO_REPO}/bin/intel64/${{ env.CMAKE_BUILD_TYPE }} -o ${SELECTIVE_BUILD_STAT_DIR}/itt_stat ! \ | |
${OPENVINO_REPO}/bin/intel64/${{ env.CMAKE_BUILD_TYPE }}/benchmark_app -niter 1 -nireq 1 \ | |
-m ${MODELS_PATH}/models/test_model/test_model_fp32.xml -d CPU | |
- name: Pack Artifacts | |
run: | | |
pushd ${SELECTIVE_BUILD_STAT_DIR} | |
tar -cvf - * | pigz > ${BUILD_DIR}/openvino_selective_build_stat.tar.gz | |
popd | |
pushd ${INSTALL_DIR} | |
tar -cvf - install_dependencies/install_openvino_dependencies.sh | pigz > ${BUILD_DIR}/openvino_package.tar.gz | |
popd | |
cp -v ${OPENVINO_REPO}/temp/tbb/lib/lib* ${INSTALL_TEST_DIR}/tests | |
pushd ${INSTALL_TEST_DIR} | |
tar -cvf - \ | |
tests/ov_cpu_func_tests \ | |
tests/libopenvino_template_extension.so \ | |
tests/libhwloc* \ | |
tests/libtbb* \ | |
tests/functional_test_utils/layer_tests_summary/* \ | |
| pigz > ${BUILD_DIR}/openvino_tests.tar.gz | |
popd | |
# | |
# Upload build artifacts and logs | |
# | |
- name: Upload build logs | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
if: always() | |
with: | |
name: build_logs | |
path: ${{ env.SCCACHE_ERROR_LOG }} | |
if-no-files-found: 'ignore' | |
- name: Upload openvino package | |
if: ${{ always() }} | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: openvino_package | |
path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz | |
if-no-files-found: 'error' | |
- name: Upload selective build statistics package | |
if: ${{ always() }} | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: openvino_selective_build_stat | |
path: ${{ env.BUILD_DIR }}/openvino_selective_build_stat.tar.gz | |
if-no-files-found: 'error' | |
- name: Upload OpenVINO tests package | |
if: ${{ always() }} | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: openvino_tests | |
path: ${{ env.BUILD_DIR }}/openvino_tests.tar.gz | |
if-no-files-found: 'error' | |
CC_Build: | |
name: Conditional Compilation | |
needs: [Build, Docker] | |
timeout-minutes: 20 | |
defaults: | |
run: | |
shell: bash | |
runs-on: aks-linux-16-cores-32gb | |
container: | |
image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_x64_cc }} | |
volumes: | |
- /mount:/mount | |
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING | |
env: | |
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input | |
CMAKE_CXX_COMPILER_LAUNCHER: sccache | |
CMAKE_C_COMPILER_LAUNCHER: sccache | |
SCCACHE_IGNORE_SERVER_IO_ERROR: 1 | |
SCCACHE_SERVER_PORT: 35555 | |
GITHUB_WORKSPACE: '/__w/openvino/openvino' | |
OPENVINO_REPO: /__w/openvino/openvino/openvino | |
BUILD_DIR: /__w/openvino/openvino/openvino_build | |
SELECTIVE_BUILD_STAT_DIR: /__w/openvino/openvino/selective_build_stat | |
MODELS_PATH: /__w/openvino/openvino/testdata | |
SCCACHE_AZURE_KEY_PREFIX: ubuntu22_x86_64_cc_Release | |
steps: | |
- name: Clone OpenVINO | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
timeout-minutes: 15 | |
with: | |
path: ${{ env.OPENVINO_REPO }} | |
submodules: 'true' | |
- name: Clone test models | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
timeout-minutes: 15 | |
with: | |
repository: 'openvinotoolkit/testdata' | |
path: ${{ env.MODELS_PATH }} | |
lfs: 'true' | |
ref: ${{ env.TARGET_BRANCH }} | |
- name: Download selective build statistics package | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: openvino_selective_build_stat | |
path: ${{ env.SELECTIVE_BUILD_STAT_DIR }} | |
- name: Extract selective build statistics package | |
run: | | |
pigz -dc ${SELECTIVE_BUILD_STAT_DIR}/openvino_selective_build_stat.tar.gz | tar -xf - -C ${SELECTIVE_BUILD_STAT_DIR} | |
# | |
# Build | |
# | |
- 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_INTEL_NPU=OFF \ | |
-DENABLE_OV_TF_FRONTEND=OFF \ | |
-DENABLE_OV_TF_LITE_FRONTEND=OFF \ | |
-DENABLE_OV_PADDLE_FRONTEND=OFF \ | |
-DENABLE_OV_PYTORCH_FRONTEND=OFF \ | |
-DENABLE_OV_JAX_FRONTEND=OFF \ | |
-DENABLE_OV_ONNX_FRONTEND=OFF \ | |
-DSELECTIVE_BUILD_STAT=${SELECTIVE_BUILD_STAT_DIR}/*.csv \ | |
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \ | |
-S ${OPENVINO_REPO} \ | |
-B ${BUILD_DIR} | |
- name: Cmake build - CC ON | |
run: cmake --build ${BUILD_DIR} --parallel 8 --target benchmark_app | |
- name: Show ccache stats | |
run: ${SCCACHE_PATH} --show-stats | |
- name: Run with CC-ed runtime | |
run: ${OPENVINO_REPO}/bin/intel64/Release/benchmark_app -niter 1 -nireq 1 -m ${MODELS_PATH}/models/test_model/test_model_fp32.xml -d CPU | |
CPU_Functional_Tests: | |
name: CPU functional tests | |
if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test | |
needs: [ Docker, Build, Smart_CI ] | |
uses: ./.github/workflows/job_cpu_functional_tests.yml | |
with: | |
runner: 'aks-linux-8-cores-32gb' | |
image: ${{ fromJSON(needs.docker.outputs.images).ov_test.ubuntu_22_04_x64 }} | |
python-version: '3.11' | |
Overall_Status: | |
name: ci/gha_overall_status_linux_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 |