Try using ccache
for the workflow action builds:
#16553
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: Build and Run Tests | ||
on: | ||
workflow_call: | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | ||
cancel-in-progress: true | ||
jobs: | ||
cmake-linux-local: | ||
runs-on: ubuntu-22.04-8core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Update apt | ||
run: sudo apt update | ||
- name: Install ninja | ||
run: sudo apt install ninja-build | ||
- name: Setup ccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: "${{ github.job }}" | ||
max-size: "1G" | ||
save: ${{ github.event.review.state == 'APPROVED' }} | ||
- name: Configure and build | ||
run: scripts/build-local.sh | ||
working-directory: ${{ github.workspace }} | ||
cmake-linux-aarch64: | ||
runs-on: arm-ubuntu-arm-22.04-8core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Update apt | ||
run: sudo apt update | ||
- name: Install ninja | ||
run: sudo apt install ninja-build | ||
- name: Setup ccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: "${{ github.job }}" | ||
max-size: "1G" | ||
save: ${{ github.event.review.state == 'APPROVED' }} | ||
- name: Configure and build | ||
run: scripts/build-linux-aarch64.sh -DCMAKE_BUILD_TYPE=Release | ||
working-directory: ${{ github.workspace }} | ||
- name: Run tests | ||
run: ctest --output-on-failure --parallel $(nproc) | ||
working-directory: ${{ github.workspace }}/build/linux/aarch64 | ||
cmake-linux-armhf: | ||
runs-on: arm-ubuntu-arm-22.04-8core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Update apt | ||
run: sudo apt update | ||
- name: Install ninja | ||
run: sudo apt install ninja-build | ||
- name: Install armhf cross-toolchain | ||
run: sudo apt install crossbuild-essential-armhf | ||
- name: Setup ccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: "${{ github.job }}" | ||
max-size: "1G" | ||
save: ${{ github.event.review.state == 'APPROVED' }} | ||
- name: Configure and build | ||
run: scripts/build-linux-armhf.sh -DCMAKE_BUILD_TYPE=Release | ||
working-directory: ${{ github.workspace }} | ||
- name: Link the armhf loader to run the test binaries | ||
run: sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /usr/lib/ld-linux-armhf.so.3 | ||
- name: Run tests | ||
env: | ||
LD_LIBRARY_PATH: /usr/arm-linux-gnueabihf/lib/:${{ env.LD_LIBRARY_PATH }} | ||
run: ctest --output-on-failure --parallel $(nproc) | ||
working-directory: ${{ github.workspace }}/build/linux/armhf | ||
cmake-linux-riscv64: | ||
runs-on: ubuntu-22.04-8core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Update apt | ||
run: sudo apt update | ||
- name: Install ninja | ||
run: sudo apt install ninja-build | ||
- name: Install riscv64 cross-toolchain | ||
run: sudo apt install crossbuild-essential-riscv64 | ||
- name: Install qemu-riscv64 | ||
run: sudo apt install qemu-user | ||
- name: Setup ccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: "${{ github.job }}" | ||
max-size: "1G" | ||
save: ${{ github.event.review.state == 'APPROVED' }} | ||
- name: Configure and build | ||
run: scripts/build-linux-riscv64.sh -DCMAKE_BUILD_TYPE=Release -DXNNPACK_ENABLE_RISCV_VECTOR=OFF | ||
working-directory: ${{ github.workspace }} | ||
- name: Run tests | ||
run: ctest --output-on-failure --parallel $(nproc) | ||
working-directory: ${{ github.workspace }}/build/linux/riscv64 | ||
cmake-linux-riscv64-rvv: | ||
runs-on: ubuntu-22.04-8core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Update apt | ||
run: sudo apt update | ||
- name: Install ninja | ||
run: sudo apt install ninja-build | ||
- name: Download and Install riscv64 cross-toolchain tarball | ||
run: | | ||
wget -nv https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2024.04.12/riscv64-glibc-ubuntu-22.04-llvm-nightly-2024.04.12-nightly.tar.gz | ||
tar zxf riscv64-glibc-ubuntu-22.04-llvm-nightly-2024.04.12-nightly.tar.gz | ||
working-directory: ${{ github.workspace }} | ||
- name: Setup ccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: "${{ github.job }}" | ||
max-size: "1G" | ||
save: ${{ github.event.review.state == 'APPROVED' }} | ||
- name: Configure and build | ||
run: | | ||
scripts/build-linux-riscv64.sh \ | ||
-DCMAKE_BUILD_TYPE=Release \ | ||
-DXNNPACK_ENABLE_RISCV_VECTOR=ON \ | ||
-DUSE_GNU_SOURCE=ON \ | ||
-DRISCV_TOOLCHAIN_ROOT=${{ github.workspace }}/riscv/ \ | ||
-DRISCV_QEMU_ROOT=${{ github.workspace }}/riscv/ | ||
working-directory: ${{ github.workspace }} | ||
- name: Run tests (no operator tests) | ||
run: ctest --output-on-failure -LE operator --parallel $(nproc) | ||
working-directory: ${{ github.workspace }}/build/linux/riscv64 | ||
cmake-windows-arm64: | ||
runs-on: windows-2022-32core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Configure and build | ||
run: scripts/build-windows-arm64.cmd | ||
shell: cmd | ||
working-directory: ${{ github.workspace }} | ||
cmake-windows-arm64: | ||
runs-on: windows-2022-32core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Setup ccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: "${{ github.job }}" | ||
max-size: "1G" | ||
save: ${{ github.event.review.state == 'APPROVED' }} | ||
- name: Install Ninja | ||
uses: seanmiddleditch/gha-setup-ninja@master | ||
- name: Setup build environment | ||
shell: bash | ||
run: | | ||
echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV | ||
- name: Configure and build | ||
run: scripts/build-windows-arm64.cmd | ||
shell: cmd | ||
working-directory: ${{ github.workspace }} | ||
env: | ||
CFLAGS: "/UNDEBUG" | ||
CXXFLAGS: "/UNDEBUG" | ||
cmake-windows-x64: | ||
runs-on: windows-2022-32core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Setup ccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: "${{ github.job }}" | ||
max-size: "1G" | ||
save: ${{ github.event.review.state == 'APPROVED' }} | ||
- name: Install Ninja | ||
uses: seanmiddleditch/gha-setup-ninja@master | ||
- name: Setup build environment | ||
shell: bash | ||
run: | | ||
echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV | ||
- name: Configure and build | ||
run: scripts/build-windows-x64.cmd | ||
shell: cmd | ||
working-directory: ${{ github.workspace }} | ||
env: | ||
CFLAGS: "/UNDEBUG" | ||
CXXFLAGS: "/UNDEBUG" | ||
- name: Run tests | ||
run: ctest -C Release --output-on-failure --parallel $NUMBER_OF_PROCESSORS | ||
working-directory: ${{ github.workspace }}/build/windows/x64 | ||
cmake-windows-x86: | ||
runs-on: windows-2022-32core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Setup ccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: "${{ github.job }}" | ||
max-size: "1G" | ||
save: ${{ github.event.review.state == 'APPROVED' }} | ||
- name: Install Ninja | ||
uses: seanmiddleditch/gha-setup-ninja@master | ||
- name: Setup build environment | ||
shell: bash | ||
run: | | ||
echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV | ||
- name: Configure and build | ||
run: scripts/build-windows-x86.cmd | ||
shell: cmd | ||
working-directory: ${{ github.workspace }} | ||
env: | ||
CFLAGS: "/UNDEBUG" | ||
CXXFLAGS: "/UNDEBUG" | ||
- name: Run tests | ||
run: ctest -C Release --output-on-failure --parallel $NUMBER_OF_PROCESSORS | ||
working-directory: ${{ github.workspace }}/build/windows/x86 | ||
cmake-macos-arm64: | ||
runs-on: macos-latest | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Install ninja | ||
run: brew install ninja | ||
- name: Create output directory | ||
run: mkdir -p build/macos/arm64 | ||
working-directory: ${{ github.workspace }} | ||
- name: Setup ccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: "${{ github.job }}" | ||
max-size: "1G" | ||
save: ${{ github.event.review.state == 'APPROVED' }} | ||
- name: Generate CMake project | ||
run: | | ||
cmake \ | ||
-G Ninja \ | ||
-DCMAKE_CONFIGURATION_TYPES=Release \ | ||
-DCMAKE_OSX_ARCHITECTURES=arm64 \ | ||
-DHAVE_STD_REGEX=TRUE \ | ||
../../.. | ||
working-directory: ${{ github.workspace }}/build/macos/arm64 | ||
- name: Build with Xcode | ||
run: | | ||
cmake \ | ||
--build \ | ||
build/macos/arm64 \ | ||
-j$((2*$(sysctl -n hw.ncpu))) | ||
working-directory: ${{ github.workspace }} | ||
cmake-android: | ||
strategy: | ||
matrix: | ||
script: [build-android-arm64.sh, build-android-armv7.sh, build-android-x86.sh] | ||
runs-on: ubuntu-22.04-8core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Update apt | ||
run: sudo apt update | ||
- name: Install ninja | ||
run: sudo apt install ninja-build | ||
- name: Setup Android NDK | ||
id: setup-ndk | ||
uses: nttld/setup-ndk@v1 | ||
with: | ||
ndk-version: r23b | ||
add-to-path: false | ||
- name: Setup ccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: "${{ github.job }}" | ||
max-size: "1G" | ||
save: ${{ github.event.review.state == 'APPROVED' }} | ||
- name: Configure and build | ||
run: scripts/${{ matrix.script }} | ||
working-directory: ${{ github.workspace }} | ||
env: | ||
ANDROID_NDK: ${{ steps.setup-ndk.outputs.ndk-path }} | ||
cmake-ios-arm64: | ||
runs-on: macos-latest | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Create output directory | ||
run: mkdir -p build/ios/arm64 | ||
working-directory: ${{ github.workspace }} | ||
- name: Generate CMake project | ||
run: cmake -G Xcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=arm64 -DXNNPACK_BUILD_BENCHMARKS=OFF -DXNNPACK_BUILD_TESTS=OFF ../../.. | ||
working-directory: ${{ github.workspace }}/build/ios/arm64 | ||
- name: Build with Xcode | ||
run: cmake --build build/ios/arm64 --parallel $(sysctl -n hw.ncpu) -- -quiet | ||
working-directory: ${{ github.workspace }} | ||
cmake-ios-x86_64: | ||
runs-on: macos-latest | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Create output directory | ||
run: mkdir -p build/ios/x86_64 | ||
working-directory: ${{ github.workspace }} | ||
- name: Generate CMake project | ||
run: cmake -G Xcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=x86_64 -DXNNPACK_BUILD_BENCHMARKS=OFF -DXNNPACK_BUILD_TESTS=OFF ../../.. | ||
working-directory: ${{ github.workspace }}/build/ios/x86_64 | ||
- name: Build with Xcode | ||
run: cmake --build build/ios/x86_64 --parallel $(sysctl -n hw.ncpu) -- -sdk iphonesimulator -quiet | ||
working-directory: ${{ github.workspace }} | ||
bazel-linux-x86_64: | ||
runs-on: ubuntu-22.04-8core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Update apt | ||
run: sudo apt update | ||
- name: Install clang-18 | ||
working-directory: ${{ github.workspace }} | ||
run: | | ||
wget https://apt.llvm.org/llvm.sh | ||
chmod +x llvm.sh | ||
sudo ./llvm.sh 18 | ||
- name: Restore bazel cache | ||
uses: actions/cache/restore@v4 | ||
with: | ||
path: "/home/runner/.cache/bazel" | ||
key: "${{ github.job }}" | ||
- name: Build and run tests | ||
env: | ||
CC: clang-18 | ||
CXX: clang++-18 | ||
run: | | ||
bazel test --test_output=errors test:all | ||
working-directory: ${{ github.workspace }} | ||
- name: Save bazel cache | ||
if: github.event.review.state == 'APPROVED' | ||
uses: actions/cache/save@v4 | ||
with: | ||
path: "/home/runner/.cache/bazel" | ||
key: "${{ github.job }}" | ||
bazel-linux-aarch64: | ||
runs-on: arm-ubuntu-arm-22.04-4core | ||
timeout-minutes: 60 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Update apt | ||
run: sudo apt update | ||
- name: Install clang-18 | ||
working-directory: ${{ github.workspace }} | ||
run: | | ||
wget https://apt.llvm.org/llvm.sh | ||
chmod +x llvm.sh | ||
sudo ./llvm.sh 18 | ||
- name: Restore bazel cache | ||
uses: actions/cache/restore@v4 | ||
with: | ||
path: "/home/runner/.cache/bazel" | ||
key: "${{ github.job }}" | ||
- name: Build and run tests | ||
env: | ||
CC: clang-18 | ||
CXX: clang++-18 | ||
run: | | ||
# We only test the KleidiAI integration for now. | ||
bazel test \ | ||
--define=xnn_enable_jit=false \ | ||
--test_output=all \ | ||
--test_filter=*QP8* \ | ||
test:qp8_f32_qc4w_gemm_minmax_test \ | ||
test:fully_connected_nc_test \ | ||
test:fully_connected_test | ||
working-directory: ${{ github.workspace }} | ||
- name: Save bazel cache | ||
if: github.event.review.state == 'APPROVED' | ||
uses: actions/cache/save@v4 | ||
with: | ||
path: "/home/runner/.cache/bazel" | ||
key: "${{ github.job }}" |