Initial config and linux-x86_64-cmake build job only
Summary: This commit is the first in a series in an attempt to incrementally enable all jobs currenlty performed by CircleCI. It includes the main configuration files provided by GitHub team + 1 build. Original PR: https://github.com/facebookresearch/faiss/pull/3325 Reviewed By: junjieqi Differential Revision: D56671582 fbshipit-source-id: c8a21cd69aabaf86134eb86753e90b1facf51bc3pull/3396/head
parent
c5599a0684
commit
7e1d2b1f55
|
@ -0,0 +1,103 @@
|
||||||
|
name: Build cmake
|
||||||
|
inputs:
|
||||||
|
opt_level:
|
||||||
|
description: 'The optimization level'
|
||||||
|
required: false
|
||||||
|
default: generic
|
||||||
|
gpu:
|
||||||
|
description: 'The GPU to use'
|
||||||
|
required: false
|
||||||
|
default: OFF
|
||||||
|
raft:
|
||||||
|
description: 'The raft to use'
|
||||||
|
required: false
|
||||||
|
default: OFF
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- name: Setup miniconda
|
||||||
|
uses: conda-incubator/setup-miniconda@v3.0.3
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
miniconda-version: latest
|
||||||
|
- name: Set up environment
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
conda config --set solver libmamba
|
||||||
|
conda update -y -q conda
|
||||||
|
- name: Install env using main channel
|
||||||
|
if: inputs.raft == 'OFF'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
conda install -y -q python=3.11 cmake make swig mkl=2023 mkl-devel=2023 numpy scipy pytest gxx_linux-64=11.2 sysroot_linux-64
|
||||||
|
- name: Install env using conda-forge channel
|
||||||
|
if: inputs.raft == 'ON'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
conda install -y -q python=3.11 cmake make swig mkl=2023 mkl-devel=2023 numpy scipy pytest gxx_linux-64=11.2 sysroot_linux-64=2.28 libraft cuda-version=11.8 cuda-toolkit -c rapidsai-nightly -c "nvidia/label/cuda-11.8.0" -c conda-forge
|
||||||
|
- name: Install CUDA
|
||||||
|
if: inputs.gpu == 'ON' && inputs.raft == 'OFF'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
conda install -y -q cuda-toolkit -c "nvidia/label/cuda-11.8.0"
|
||||||
|
- name: Build all targets
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
eval "$(conda shell.bash hook)"
|
||||||
|
conda activate
|
||||||
|
cmake -B build \
|
||||||
|
-DBUILD_TESTING=ON \
|
||||||
|
-DBUILD_SHARED_LIBS=ON \
|
||||||
|
-DFAISS_ENABLE_GPU=${{ inputs.gpu }} \
|
||||||
|
-DFAISS_ENABLE_RAFT=${{ inputs.raft }} \
|
||||||
|
-DFAISS_OPT_LEVEL=${{ inputs.opt_level }} \
|
||||||
|
-DFAISS_ENABLE_C_API=ON \
|
||||||
|
-DPYTHON_EXECUTABLE=$CONDA/bin/python \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DBLA_VENDOR=Intel10_64_dyn \
|
||||||
|
-DCMAKE_CUDA_FLAGS="-gencode arch=compute_75,code=sm_75" \
|
||||||
|
.
|
||||||
|
make -k -C build -j$(nproc)
|
||||||
|
- name: C++ tests
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export GTEST_OUTPUT="xml:$(realpath .)/test-results/googletest/"
|
||||||
|
make -C build test
|
||||||
|
- name: Install Python extension
|
||||||
|
shell: bash
|
||||||
|
working-directory: build/faiss/python
|
||||||
|
run: |
|
||||||
|
$CONDA/bin/python setup.py install
|
||||||
|
- name: Install pytest
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
conda install -y pytest
|
||||||
|
echo "$CONDA/bin" >> $GITHUB_PATH
|
||||||
|
- name: Python tests (CPU only)
|
||||||
|
if: inputs.gpu == 'OFF'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
conda install -y -q pytorch -c pytorch
|
||||||
|
pytest --junitxml=test-results/pytest/results.xml tests/test_*.py
|
||||||
|
pytest --junitxml=test-results/pytest/results-torch.xml tests/torch_*.py
|
||||||
|
- name: Python tests (CPU + GPU)
|
||||||
|
if: inputs.gpu == 'ON'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
conda install -y -q pytorch pytorch-cuda=11.8 -c pytorch -c nvidia/label/cuda-11.8.0
|
||||||
|
pytest --junitxml=test-results/pytest/results.xml tests/test_*.py
|
||||||
|
pytest --junitxml=test-results/pytest/results-torch.xml tests/torch_*.py
|
||||||
|
cp tests/common_faiss_tests.py faiss/gpu/test
|
||||||
|
pytest --junitxml=test-results/pytest/results-gpu.xml faiss/gpu/test/test_*.py
|
||||||
|
pytest --junitxml=test-results/pytest/results-gpu-torch.xml faiss/gpu/test/torch_*.py
|
||||||
|
- name: Test avx2 loading
|
||||||
|
if: inputs.opt_level == 'avx2'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
FAISS_DISABLE_CPU_FEATURES=AVX2 LD_DEBUG=libs $CONDA/bin/python -c "import faiss" 2>&1 | grep faiss.so
|
||||||
|
LD_DEBUG=libs $CONDA/bin/python -c "import faiss" 2>&1 | grep faiss_avx2.so
|
||||||
|
- name: Upload test results
|
||||||
|
uses: actions/upload-artifact@v4.3.1
|
||||||
|
with:
|
||||||
|
name: test-results-${{ inputs.opt_level }}-${{ inputs.gpu }}-${{ inputs.raft }}
|
||||||
|
path: test-results
|
|
@ -0,0 +1,98 @@
|
||||||
|
name: Build conda
|
||||||
|
description: Build conda
|
||||||
|
inputs:
|
||||||
|
label:
|
||||||
|
description: "Label"
|
||||||
|
default: ""
|
||||||
|
required: false
|
||||||
|
cuda:
|
||||||
|
description: "cuda"
|
||||||
|
default: ""
|
||||||
|
required: false
|
||||||
|
raft:
|
||||||
|
description: "raft"
|
||||||
|
default: ""
|
||||||
|
required: false
|
||||||
|
compiler_version:
|
||||||
|
description: "compiler_version"
|
||||||
|
default: ""
|
||||||
|
required: false
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- name: Choose shell
|
||||||
|
shell: bash
|
||||||
|
id: choose_shell
|
||||||
|
run: |
|
||||||
|
# if runner.os != 'Windows' use bash, else use pwsh
|
||||||
|
if [ "${{ runner.os }}" != "Windows" ]; then
|
||||||
|
echo "shell=bash" >> "$GITHUB_OUTPUT"
|
||||||
|
else
|
||||||
|
echo "shell=pwsh" >> "$GITHUB_OUTPUT"
|
||||||
|
fi
|
||||||
|
- name: Setup miniconda
|
||||||
|
uses: conda-incubator/setup-miniconda@v3.0.3
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
miniconda-version: latest
|
||||||
|
- name: Install conda build tools
|
||||||
|
shell: ${{ steps.choose_shell.outputs.shell }}
|
||||||
|
run: |
|
||||||
|
# conda config --set solver libmamba
|
||||||
|
# conda config --set verbosity 3
|
||||||
|
conda update -y -q conda
|
||||||
|
conda install -y -q conda-build
|
||||||
|
- name: Enable anaconda uploads
|
||||||
|
if: inputs.label != ''
|
||||||
|
shell: ${{ steps.choose_shell.outputs.shell }}
|
||||||
|
env:
|
||||||
|
PACKAGE_TYPE: inputs.label
|
||||||
|
run: |
|
||||||
|
conda install -y -q anaconda-client
|
||||||
|
conda config --set anaconda_upload yes
|
||||||
|
- name: Conda build (CPU)
|
||||||
|
if: inputs.label == '' && inputs.cuda == ''
|
||||||
|
shell: ${{ steps.choose_shell.outputs.shell }}
|
||||||
|
working-directory: conda
|
||||||
|
run: |
|
||||||
|
conda build faiss --python 3.11 -c pytorch
|
||||||
|
- name: Conda build (CPU) w/ anaconda upload
|
||||||
|
if: inputs.label != '' && inputs.cuda == ''
|
||||||
|
shell: ${{ steps.choose_shell.outputs.shell }}
|
||||||
|
working-directory: conda
|
||||||
|
env:
|
||||||
|
PACKAGE_TYPE: inputs.label
|
||||||
|
run: |
|
||||||
|
conda build faiss --user pytorch --label ${{ inputs.label }} -c pytorch
|
||||||
|
- name: Conda build (GPU)
|
||||||
|
if: inputs.label == '' && inputs.cuda != '' && inputs.raft == ''
|
||||||
|
shell: ${{ steps.choose_shell.outputs.shell }}
|
||||||
|
working-directory: conda
|
||||||
|
run: |
|
||||||
|
conda build faiss-gpu --variants '{ "cudatoolkit": "${{ inputs.cuda }}", "c_compiler_version": "${{ inputs.compiler_version }}", "cxx_compiler_version": "${{ inputs.compiler_version }}" }' \
|
||||||
|
-c pytorch -c nvidia/label/cuda-${{ inputs.cuda }} -c nvidia
|
||||||
|
- name: Conda build (GPU) w/ anaconda upload
|
||||||
|
if: inputs.label != '' && inputs.cuda != '' && inputs.raft == ''
|
||||||
|
shell: ${{ steps.choose_shell.outputs.shell }}
|
||||||
|
working-directory: conda
|
||||||
|
env:
|
||||||
|
PACKAGE_TYPE: inputs.label
|
||||||
|
run: |
|
||||||
|
conda build faiss-gpu --variants '{ "cudatoolkit": "${{ inputs.cuda }}", "c_compiler_version": "${{ inputs.compiler_version }}", "cxx_compiler_version": "${{ inputs.compiler_version }}" }' \
|
||||||
|
--user pytorch --label ${{ inputs.label }} -c pytorch -c nvidia/label/cuda-${{ inputs.cuda }} -c nvidia
|
||||||
|
- name: Conda build (GPU w/ RAFT)
|
||||||
|
if: inputs.label == '' && inputs.cuda != '' && inputs.raft != ''
|
||||||
|
shell: ${{ steps.choose_shell.outputs.shell }}
|
||||||
|
working-directory: conda
|
||||||
|
run: |
|
||||||
|
conda build faiss-gpu-raft --variants '{ "cudatoolkit": "${{ inputs.cuda }}", "c_compiler_version": "${{ inputs.compiler_version }}", "cxx_compiler_version": "${{ inputs.compiler_version }}" }' \
|
||||||
|
-c pytorch -c nvidia/label/cuda-${{ inputs.cuda }} -c nvidia -c rapidsai -c rapidsai-nightly -c conda-forge
|
||||||
|
- name: Conda build (GPU w/ RAFT) w/ anaconda upload
|
||||||
|
if: inputs.label != '' && inputs.cuda != '' && inputs.raft != ''
|
||||||
|
shell: ${{ steps.choose_shell.outputs.shell }}
|
||||||
|
working-directory: conda
|
||||||
|
env:
|
||||||
|
PACKAGE_TYPE: inputs.label
|
||||||
|
run: |
|
||||||
|
conda build faiss-gpu-raft --variants '{ "cudatoolkit": "${{ inputs.cuda }}", "c_compiler_version": "${{ inputs.compiler_version }}", "cxx_compiler_version": "${{ inputs.compiler_version }}" }' \
|
||||||
|
--user pytorch --label ${{ inputs.label }} -c pytorch -c nvidia/label/cuda-${{ inputs.cuda }} -c nvidia -c rapidsai -c rapidsai-nightly -c conda-forge
|
|
@ -0,0 +1,19 @@
|
||||||
|
name: Build
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
env:
|
||||||
|
OMP_NUM_THREADS: '10'
|
||||||
|
MKL_THREADING_LAYER: GNU
|
||||||
|
jobs:
|
||||||
|
linux-x86_64-cmake:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4.1.1
|
||||||
|
- uses: ./.github/actions/build_cmake
|
Loading…
Reference in New Issue