diff --git a/.github/actions/linux-setup-openvino/action.yml b/.github/actions/linux-setup-openvino/action.yml new file mode 100644 index 0000000000..e4177407ab --- /dev/null +++ b/.github/actions/linux-setup-openvino/action.yml @@ -0,0 +1,30 @@ +name: "Linux - Setup OpenVINO Toolkit" +description: "Setup OpenVINO Toolkit for Linux" +inputs: + path: + description: "Installation path" + required: true + version_major: + description: "OpenVINO major version (e.g., 2025.2)" + required: true + version_full: + description: "OpenVINO full version (e.g., 2025.2.0.19140.c01cd93e24d)" + required: true + +runs: + using: "composite" + steps: + - name: Setup OpenVINO Toolkit + id: setup + uses: ./.github/actions/unarchive-tar + with: + url: https://storage.openvinotoolkit.org/repositories/openvino/packages/${{ inputs.version_major }}/linux/openvino_toolkit_ubuntu24_${{ inputs.version_full }}_x86_64.tgz + path: ${{ inputs.path }} + type: "z" + strip: 1 + + - name: Install OpenVINO dependencies + shell: bash + run: | + cd ${{ inputs.path }} + echo "Y" | sudo -E ./install_dependencies/install_openvino_dependencies.sh diff --git a/.github/workflows/build-cache.yml b/.github/workflows/build-cache.yml index 6a22e41c3b..43d2355472 100644 --- a/.github/workflows/build-cache.yml +++ b/.github/workflows/build-cache.yml @@ -63,6 +63,39 @@ jobs: path: ./spacemit_toolchain version: ${{ env.SPACEMIT_IME_TOOLCHAIN_VERSION }} + ubuntu-24-openvino-cache: + runs-on: ubuntu-24.04 + + env: + # Make sure this is in sync with build.yml + OPENVINO_VERSION_MAJOR: "2025.2" + OPENVINO_VERSION_FULL: "2025.2.0.19140.c01cd93e24d" + + steps: + - name: Clone + id: checkout + uses: actions/checkout@v4 + + - name: Dependencies + run: | + sudo apt-get update + sudo apt-get install -y libtbb12 + + - name: Setup Cache + uses: actions/cache@v4 + id: cache-openvino + with: + path: ./openvino_toolkit + key: openvino-toolkit-v${{ env.OPENVINO_VERSION_FULL }}-${{ runner.os }} + + - name: Setup OpenVINO Toolkit + if: steps.cache-openvino.outputs.cache-hit != 'true' + uses: ./.github/actions/linux-setup-openvino + with: + path: ./openvino_toolkit + version_major: ${{ env.OPENVINO_VERSION_MAJOR }} + version_full: ${{ env.OPENVINO_VERSION_FULL }} + windows-2022-rocm-cache: runs-on: windows-2022 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3692a0a69b..c2f99bf95b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -740,6 +740,11 @@ jobs: ubuntu-24-cmake-openvino: runs-on: ubuntu-24.04 + env: + # Make sure this is in sync with build-cache.yml + OPENVINO_VERSION_MAJOR: "2025.2" + OPENVINO_VERSION_FULL: "2025.2.0.19140.c01cd93e24d" + steps: - name: Clone id: checkout @@ -754,23 +759,28 @@ jobs: - name: Dependencies id: depends run: | - export OPENVINO_VERSION_MAJOR=2025.2 - export OPENVINO_VERSION_FULL=2025.2.0.19140.c01cd93e24d sudo apt-get update - sudo apt-get install -y build-essential libcurl4-openssl-dev libtbb12 cmake ninja-build python3-pip curl wget tar - sudo mkdir -p /opt/intel - wget -O openvino_${OPENVINO_VERSION_MAJOR}.tgz https://storage.openvinotoolkit.org/repositories/openvino/packages/${OPENVINO_VERSION_MAJOR}/linux/openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64.tgz - tar -xf openvino_${OPENVINO_VERSION_MAJOR}.tgz - sudo mv openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64 /opt/intel/openvino_${OPENVINO_VERSION_MAJOR} - rm openvino_${OPENVINO_VERSION_MAJOR}.tgz - cd /opt/intel/openvino_${OPENVINO_VERSION_MAJOR} - echo "Y" | sudo -E ./install_dependencies/install_openvino_dependencies.sh && cd - - sudo ln -s /opt/intel/openvino_${OPENVINO_VERSION_MAJOR} /opt/intel/openvino + sudo apt-get install -y build-essential libcurl4-openssl-dev libtbb12 cmake ninja-build python3-pip + + - name: Use OpenVINO Toolkit Cache + uses: actions/cache@v4 + id: cache-openvino + with: + path: ./openvino_toolkit + key: openvino-toolkit-v${{ env.OPENVINO_VERSION_FULL }}-${{ runner.os }} + + - name: Setup OpenVINO Toolkit + if: steps.cache-openvino.outputs.cache-hit != 'true' + uses: ./.github/actions/linux-setup-openvino + with: + path: ./openvino_toolkit + version_major: ${{ env.OPENVINO_VERSION_MAJOR }} + version_full: ${{ env.OPENVINO_VERSION_FULL }} - name: Build id: cmake_build run: | - source /opt/intel/openvino/setupvars.sh + source ./openvino_toolkit/setupvars.sh cmake -B build/ReleaseOV -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DGGML_OPENVINO=ON