| on: |
| workflow_call: |
| env: |
| OMP_NUM_THREADS: '10' |
| MKL_THREADING_LAYER: GNU |
| jobs: |
| format: |
| name: Format |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Install clang-format |
| run: | |
| sudo apt-get update -y |
| sudo apt-get install -y wget |
| sudo apt install -y lsb-release wget software-properties-common gnupg |
| wget https://apt.llvm.org/llvm.sh |
| chmod u+x llvm.sh |
| sudo ./llvm.sh 18 |
| sudo apt-get install -y git-core clang-format-18 |
| - name: Verify clang-format |
| run: | |
| git ls-files | grep -E '\.(cpp|h|cu|cuh)$' | xargs clang-format-18 -i |
| if git diff --quiet; then |
| echo "Formatting OK!" |
| else |
| echo "Formatting not OK!" |
| echo "------------------" |
| git --no-pager diff --color |
| exit 1 |
| fi |
| linux-x86_64-cmake: |
| name: Linux x86_64 (cmake) |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Build and Test (cmake) |
| uses: ./.github/actions/build_cmake |
| linux-x86_64-AVX2-cmake: |
| name: Linux x86_64 AVX2 (cmake) |
| needs: linux-x86_64-cmake |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Build and Test (cmake) |
| uses: ./.github/actions/build_cmake |
| with: |
| opt_level: avx2 |
| linux-x86_64-AVX512-cmake: |
| name: Linux x86_64 AVX512 (cmake) |
| needs: linux-x86_64-cmake |
| runs-on: faiss-aws-m7i.large |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Build and Test (cmake) |
| uses: ./.github/actions/build_cmake |
| with: |
| opt_level: avx512 |
| linux-x86_64-AVX512_SPR-cmake: |
| name: Linux x86_64 AVX512_SPR (cmake) |
| needs: linux-x86_64-cmake |
| runs-on: faiss-aws-m7i.large |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Build and Test (cmake) |
| uses: ./.github/actions/build_cmake |
| with: |
| opt_level: avx512_spr |
| linux-x86_64-GPU-cmake: |
| name: Linux x86_64 GPU (cmake) |
| needs: linux-x86_64-cmake |
| runs-on: 4-core-ubuntu-gpu-t4 |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Build and Test (cmake) |
| uses: ./.github/actions/build_cmake |
| with: |
| gpu: ON |
| linux-x86_64-GPU-w-CUVS-cmake: |
| name: Linux x86_64 GPU w/ cuVS (cmake) |
| needs: linux-x86_64-cmake |
| runs-on: 4-core-ubuntu-gpu-t4 |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Build and Test (cmake) |
| uses: ./.github/actions/build_cmake |
| with: |
| gpu: ON |
| cuvs: ON |
| linux-x86_64-GPU-w-ROCm-cmake: |
| name: Linux x86_64 GPU w/ ROCm (cmake) |
| needs: linux-x86_64-cmake |
| runs-on: faiss-amd-MI200 |
| container: |
| image: ubuntu:22.04 |
| options: --device=/dev/kfd --device=/dev/dri --ipc=host --shm-size 16G --group-add video --cap-add=SYS_PTRACE --cap-add=SYS_ADMIN |
| steps: |
| - name: Container setup |
| run: | |
| if [ -f /.dockerenv ]; then |
| apt-get update && apt-get install -y sudo && apt-get install -y git |
| git config --global --add safe.directory '*' |
| else |
| echo 'Skipping. Current job is not running inside a container.' |
| fi |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Build and Test (cmake) |
| uses: ./.github/actions/build_cmake |
| with: |
| gpu: ON |
| rocm: ON |
| linux-arm64-SVE-cmake: |
| name: Linux arm64 SVE (cmake) |
| needs: linux-x86_64-cmake |
| runs-on: faiss-aws-r8g.large |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Build and Test (cmake) |
| uses: ./.github/actions/build_cmake |
| with: |
| opt_level: sve |
| env: |
| # Context: https://github.com/facebookresearch/faiss/wiki/Troubleshooting#surprising-faiss-openmp-and-openblas-interaction |
| OPENBLAS_NUM_THREADS: '1' |
| linux-x86_64-conda: |
| name: Linux x86_64 (conda) |
| needs: linux-x86_64-cmake |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| with: |
| fetch-depth: 0 |
| fetch-tags: true |
| - name: Build and Package (conda) |
| uses: ./.github/actions/build_conda |
| windows-x86_64-conda: |
| name: Windows x86_64 (conda) |
| needs: linux-x86_64-cmake |
| runs-on: windows-2019 |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| with: |
| fetch-depth: 0 |
| fetch-tags: true |
| - name: Build and Package (conda) |
| uses: ./.github/actions/build_conda |
| linux-arm64-conda: |
| name: Linux arm64 (conda) |
| needs: linux-x86_64-cmake |
| runs-on: 2-core-ubuntu-arm |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| with: |
| fetch-depth: 0 |
| fetch-tags: true |
| - name: Build and Package (conda) |
| uses: ./.github/actions/build_conda |