[CPU] Optimize PagedAttention performance #964
Workflow file for this run
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: Manylinux 2014 | |
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 }}-manylinux-2014 | |
cancel-in-progress: true | |
permissions: read-all | |
env: | |
PIP_CACHE_PATH: /mount/caches/pip/linux | |
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 | |
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' | |
- 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 | |
- uses: ./.github/actions/handle_docker | |
id: handle_docker | |
with: | |
images: | | |
ov_build/ubuntu_22_04_x64_docker | |
ov_build/manylinux2014_x86_64 | |
registry: 'openvinogithubactions.azurecr.io' | |
dockerfiles_root_dir: '.github/dockerfiles' | |
changed_components: ${{ needs.smart_ci.outputs.changed_components }} | |
Build: | |
needs: [Docker] | |
timeout-minutes: 120 | |
defaults: | |
run: | |
shell: bash | |
runs-on: aks-linux-16-cores-32gb-manylinux | |
if: ${{ github.repository_owner == 'openvinotoolkit' }} | |
container: | |
image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_x64_docker }} | |
volumes: | |
- /mount:/mount | |
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING -e DOCKER_CONFIG -v ${{ github.workspace }}:${{ github.workspace }} | |
env: | |
CMAKE_BUILD_TYPE: 'Release' | |
ARCH: 'x86_64' | |
OPENVINO_REPO: ${{ github.workspace }}/src | |
INSTALL_DIR: ${{ github.workspace }}/install/openvino | |
INSTALL_WHEELS_DIR: ${{ github.workspace }}/install/wheels | |
BUILD_DIR: ${{ github.workspace }}/build | |
DOCKER_CONFIG: "/mount/.docker" | |
CMAKE_CXX_COMPILER_LAUNCHER: sccache | |
CMAKE_C_COMPILER_LAUNCHER: sccache | |
SCCACHE_IGNORE_SERVER_IO_ERROR: 1 | |
SCCACHE_SERVER_PORT: 35555 | |
SCCACHE_CACHE_SIZE: 50G | |
SCCACHE_AZURE_KEY_PREFIX: manylinux_2014 | |
ARTIFACTS_SHARE: "/mount/build-artifacts" | |
MANIFEST_PATH: ${{ github.workspace }}/manifest.yml | |
PRODUCT_TYPE: public_manylinux2014_x86_64_release | |
steps: | |
- name: Clone OpenVINO | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
path: ${{ env.OPENVINO_REPO }} | |
submodules: 'true' | |
- name: System info | |
uses: ./src/.github/actions/system_info | |
- name: Generate product manifest and set CI_BUILD_NUMBER & CI_BUILD_DEV_TAG | |
id: create_manifest | |
uses: ./src/.github/actions/create_manifest | |
with: | |
repos: | | |
${{ env.OPENVINO_REPO }} | |
product_type: ${{ env.PRODUCT_TYPE }} | |
target_arch: ${{ env.ARCH }} | |
build_type: ${{ env.CMAKE_BUILD_TYPE }} | |
save_to: ${{ env.MANIFEST_PATH }} | |
- name: Create docker build cache | |
run: | | |
docker volume create ov_build_cache | |
- name: Build OpenVINO | |
run: | | |
docker run --rm \ | |
-v ${{ env.OPENVINO_REPO }}:/work/src \ | |
-v ov_build_cache:/work/build \ | |
-v ${{ env.INSTALL_DIR }}:/work/install \ | |
-e SCCACHE_AZURE_BLOB_CONTAINER \ | |
-e SCCACHE_AZURE_CONNECTION_STRING \ | |
-e SCCACHE_SERVER_PORT \ | |
-e SCCACHE_IGNORE_SERVER_IO_ERROR \ | |
-e SCCACHE_CACHE_SIZE \ | |
-e SCCACHE_AZURE_KEY_PREFIX \ | |
-e CMAKE_CXX_COMPILER_LAUNCHER \ | |
-e CMAKE_C_COMPILER_LAUNCHER \ | |
-e CI_BUILD_NUMBER \ | |
-e CI_BUILD_DEV_TAG \ | |
-w /work/src \ | |
${{ fromJSON(needs.docker.outputs.images).ov_build.manylinux2014_x86_64 }} \ | |
/bin/bash -c " | |
cmake -DENABLE_CPPLINT=OFF -DENABLE_NCC_STYLE=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_PYTHON=OFF -DENABLE_WHEEL=OFF -S /work/src -B /work/build && | |
cmake --build /work/build --parallel $(nproc) --config ${{ env.CMAKE_BUILD_TYPE }} && | |
cmake --install /work/build --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /work/install | |
" | |
- name: Pack Artifacts | |
run: mkdir -p ${{ env.BUILD_DIR }} && tar -cvf - * | pigz > ${{ env.BUILD_DIR }}/openvino_package.tar.gz | |
working-directory: ${{ env.INSTALL_DIR }} | |
- name: Build Python API(Python 3.9-3.13) | |
run: | | |
SUPPORTED_PYTHON_VERSIONS=("39" "310" "311" "312" "313") | |
for PY_VER in "${SUPPORTED_PYTHON_VERSIONS[@]}"; do | |
python_path=/opt/python/cp${PY_VER}-cp${PY_VER}/bin | |
docker run --rm \ | |
-v ${{ env.OPENVINO_REPO }}:/work/src \ | |
-v ${{ env.INSTALL_WHEELS_DIR }}:/work/wheels \ | |
-v ${{ env.PIP_CACHE_PATH }}:/work/pip_cache \ | |
-v ov_build_cache:/work/build \ | |
-e SCCACHE_AZURE_BLOB_CONTAINER \ | |
-e SCCACHE_AZURE_CONNECTION_STRING \ | |
-e SCCACHE_SERVER_PORT \ | |
-e SCCACHE_IGNORE_SERVER_IO_ERROR \ | |
-e SCCACHE_CACHE_SIZE \ | |
-e SCCACHE_AZURE_KEY_PREFIX \ | |
-e CMAKE_CXX_COMPILER_LAUNCHER \ | |
-e CMAKE_C_COMPILER_LAUNCHER \ | |
-e CI_BUILD_NUMBER \ | |
-e CI_BUILD_DEV_TAG \ | |
-w /work/src \ | |
${{ fromJSON(needs.docker.outputs.images).ov_build.manylinux2014_x86_64 }} \ | |
/bin/bash -c " | |
export PATH=${python_path}:\$PATH | |
PIP_VER=$(python3 -c "import pip; print(pip.__version__)") | |
export "PIP_CACHE_DIR=/work/pip_cache/${PIP_VER}" | |
python3 -m pip install -r /work/src/src/bindings/python/wheel/requirements-dev.txt && | |
cmake -DOpenVINODeveloperPackage_DIR=/work/build -DENABLE_PYTHON=ON -DENABLE_WHEEL=ON -S /work/src/src/bindings/python -B /work/build_py${PY_VER} && | |
cmake --build /work/build_py${PY_VER} --parallel $(nproc) --target ie_wheel --config ${{ env.CMAKE_BUILD_TYPE }} && | |
cmake --install /work/build_py${PY_VER} --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /work/wheels --component python_wheels | |
" | |
done | |
# | |
# Upload build artifacts | |
# | |
- 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 openvino wheels | |
if: ${{ always() }} | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: openvino_wheels | |
path: ${{ env.INSTALL_WHEELS_DIR }}/wheels/*.whl | |
if-no-files-found: 'error' | |
- name: Store artifacts to a shared drive | |
id: store_artifacts | |
if: ${{ always() }} | |
uses: ./src/.github/actions/store_artifacts | |
with: | |
artifacts: | | |
${{ env.BUILD_DIR }}/openvino_package.tar.gz | |
${{ env.MANIFEST_PATH }} | |
${{ env.INSTALL_WHEELS_DIR }}/wheels | |
storage_dir: ${{ env.PRODUCT_TYPE }} | |
storage_root: ${{ env.ARTIFACTS_SHARE }} | |
Overall_Status: | |
name: ci/gha_overall_status_manylinux2014 | |
needs: [Smart_CI, Build] | |
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 |