Enable AVX-VNNI 5x8c8 GEMM microkernel for QD8_F32_QC4W #10
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 using CMake | |
on: | |
push: | |
paths: | |
- '**.S' | |
- '**.c' | |
- '**.cc' | |
- '**.h' | |
- 'BUILD.bazel' | |
- '**.bzl' | |
- 'CMakeLists.txt' | |
- 'cmake/**' | |
- 'scripts/build-*.sh' | |
- '.github/**/*.yml' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
cmake-linux-local: | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Update apt | |
run: sudo apt update | |
- name: Install ninja | |
run: sudo apt install ninja-build | |
- name: Configure and build | |
run: scripts/build-local.sh | |
working-directory: ${{ github.workspace }} | |
cmake-linux-aarch64: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 150 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Update apt | |
run: sudo apt update | |
- name: Install ninja | |
run: sudo apt install ninja-build | |
- name: Install aarch64 cross-toolchain | |
run: sudo apt install crossbuild-essential-arm64 | |
- name: Install qemu-aarch64 | |
run: sudo apt install qemu-user | |
- 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: ubuntu-22.04 | |
timeout-minutes: 90 | |
steps: | |
- uses: actions/checkout@v3 | |
- 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: Install qemu-arm | |
run: sudo apt install qemu-user | |
- name: Configure and build | |
run: scripts/build-linux-armhf.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/armhf | |
cmake-linux-riscv64: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@v3 | |
- 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: 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 | |
timeout-minutes: 120 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Update apt | |
run: sudo apt update | |
- name: Install ninja | |
run: sudo apt install ninja-build | |
- name: Download riscv64 cross-toolchain tarball | |
run: wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2023.11.20/riscv64-glibc-ubuntu-22.04-llvm-nightly-2023.11.20-nightly.tar.gz | |
working-directory: ${{ github.workspace }} | |
- name: Install riscv64 cross-toolchain | |
run: tar zxvf riscv64-glibc-ubuntu-22.04-llvm-nightly-2023.11.20-nightly.tar.gz | |
working-directory: ${{ github.workspace }} | |
- 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 | |
run: ctest --output-on-failure --parallel $(nproc) | |
working-directory: ${{ github.workspace }}/build/linux/riscv64 | |
cmake-windows-arm64: | |
runs-on: windows-latest | |
timeout-minutes: 120 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Configure and build | |
run: scripts/build-windows-arm64.cmd | |
shell: cmd | |
working-directory: ${{ github.workspace }} | |
cmake-windows-x64: | |
runs-on: windows-latest | |
timeout-minutes: 120 | |
steps: | |
- uses: actions/checkout@v3 | |
- 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-latest | |
timeout-minutes: 120 | |
steps: | |
- uses: actions/checkout@v3 | |
- 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@v3 | |
- name: Create output directory | |
run: mkdir -p build/macos/arm64 | |
working-directory: ${{ github.workspace }} | |
- name: Generate CMake project | |
run: cmake -G Xcode -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 --parallel $(sysctl -n hw.ncpu) -- -quiet | |
working-directory: ${{ github.workspace }} | |
cmake-macos-x86_64: | |
runs-on: macos-latest | |
timeout-minutes: 90 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Create output directory | |
run: mkdir -p build/macos/x86_64 | |
working-directory: ${{ github.workspace }} | |
- name: Generate CMake project | |
run: cmake -G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64 -DHAVE_STD_REGEX=TRUE ../../.. | |
working-directory: ${{ github.workspace }}/build/macos/x86_64 | |
- name: Build with Xcode | |
run: cmake --build build/macos/x86_64 --parallel $(sysctl -n hw.ncpu) -- -quiet | |
working-directory: ${{ github.workspace }} | |
- name: Run tests | |
run: ctest --build-config Debug --output-on-failure --parallel $(sysctl -n hw.ncpu) | |
working-directory: ${{ github.workspace }}/build/macos/x86_64 | |
cmake-android: | |
strategy: | |
matrix: | |
script: [build-android-arm64.sh, build-android-armv7.sh, build-android-x86.sh] | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@v3 | |
- 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: 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@v3 | |
- 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@v3 | |
- 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: | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Android NDK | |
id: setup-ndk | |
uses: nttld/setup-ndk@v1 | |
with: | |
# Use old version of NDK so that android_ndk_repository works correctly (need platforms folder in NDK). | |
ndk-version: r20b | |
add-to-path: false | |
- name: Build and run tests | |
run: | | |
bazel test test:all | |
working-directory: ${{ github.workspace }} | |
env: | |
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} |