Skip to content

Commit c55ad73

Browse files
upgrade faiss to 1.14.1+, commit 967eda65dec2515ccd18c5abe464b485f8a883d0 (#1618)
Signed-off-by: Alexandr Guzhva <alexanderguzhva@gmail.com>
1 parent 9a3f6d1 commit c55ad73

36 files changed

Lines changed: 2271 additions & 1127 deletions

cmake/libs/libfaiss.cmake

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@ knowhere_file_glob(
4040
# AVX512 vanilla Faiss dynamic dispatch related files. Baseline
4141
# sq-avx512.cpp is replaced by a knowhere-local prelude file that declares
4242
# a fast DCTemplate specialization for QT_4bit_uniform + L2 and then
43-
# textually #includes the baseline sq-avx512.cpp see
43+
# textually #includes the baseline sq-avx512.cpp \u2014 see
4444
# cppcontrib/knowhere/impl/sq-avx512-fastpath.cpp for the full design note.
4545
knowhere_file_glob(
4646
GLOB
4747
FAISS_DD_AVX512_SRCS
4848
thirdparty/faiss/faiss/impl/fast_scan/impl-avx512.cpp
4949
thirdparty/faiss/faiss/impl/hnsw/avx512.cpp
50-
thirdparty/faiss/faiss/impl/pq_code_distance/pq_code_distance-avx512.cpp
50+
thirdparty/faiss/faiss/impl/pq_code_distance/avx512.cpp
5151
thirdparty/faiss/faiss/impl/binary_hamming/avx512.cpp
5252
thirdparty/faiss/faiss/cppcontrib/knowhere/impl/sq-avx512-fastpath.cpp
5353
thirdparty/faiss/faiss/utils/distances_fused/avx512.cpp
@@ -85,7 +85,7 @@ knowhere_file_glob(
8585
thirdparty/faiss/faiss/impl/approx_topk/avx2.cpp
8686
thirdparty/faiss/faiss/impl/fast_scan/impl-avx2.cpp
8787
thirdparty/faiss/faiss/impl/hnsw/avx2.cpp
88-
thirdparty/faiss/faiss/impl/pq_code_distance/pq_code_distance-avx2.cpp
88+
thirdparty/faiss/faiss/impl/pq_code_distance/avx2.cpp
8989
thirdparty/faiss/faiss/impl/binary_hamming/avx2.cpp
9090
thirdparty/faiss/faiss/cppcontrib/knowhere/impl/sq-avx2-fastpath.cpp
9191
thirdparty/faiss/faiss/utils/distances_fused/simdlib_based.cpp
@@ -138,6 +138,7 @@ knowhere_file_glob(
138138
thirdparty/faiss/faiss/impl/approx_topk/neon.cpp
139139
thirdparty/faiss/faiss/impl/fast_scan/impl-neon.cpp
140140
thirdparty/faiss/faiss/impl/binary_hamming/neon.cpp
141+
thirdparty/faiss/faiss/impl/pq_code_distance/neon.cpp
141142
thirdparty/faiss/faiss/cppcontrib/knowhere/impl/sq-neon-fastpath.cpp
142143
thirdparty/faiss/faiss/utils/distances_fused/simdlib_based_neon.cpp
143144
thirdparty/faiss/faiss/utils/hamming_distance/hamming_neon.cpp
@@ -186,6 +187,7 @@ knowhere_file_glob(
186187
knowhere_file_glob(
187188
GLOB
188189
FAISS_DD_RVV_SRCS
190+
thirdparty/faiss/faiss/impl/pq_code_distance/rvv.cpp
189191
thirdparty/faiss/faiss/impl/scalar_quantizer/sq-rvv.cpp
190192
thirdparty/faiss/faiss/impl/binary_hamming/rvv.cpp
191193
thirdparty/faiss/faiss/utils/simd_impl/distances_rvv.cpp

thirdparty/faiss/.github/actions/build_conda/action.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ runs:
3333
miniforge-version: latest # ensures conda-forge channel is used.
3434
channels: conda-forge
3535
conda-remove-defaults: 'true'
36+
activate-environment: 'base'
3637
# Set to runner.arch=aarch64 if we're on arm64 because
3738
# there's no miniforge ARM64 package, just aarch64.
3839
# They are the same thing, just named differently.
@@ -43,7 +44,7 @@ runs:
4344
run: |
4445
# Ensure starting packages are from conda-forge.
4546
conda list --show-channel-urls
46-
conda install -y -q "conda!=24.11.0,<=25.07"
47+
conda install -y -q "conda!=24.11.0,<25.7"
4748
conda install -y -q "conda-build=25.3.1" "liblief=0.14.1"
4849
- name: Enable anaconda uploads
4950
if: inputs.label != ''

thirdparty/faiss/.github/workflows/build-pip.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,11 @@ jobs:
4848
id-token: write
4949
contents: read
5050
steps:
51-
- name: Download all artifacts
51+
- name: Download wheel artifacts
5252
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
5353
with:
5454
path: dist
55+
pattern: wheels-*
5556
merge-multiple: true
5657

5758
- name: Publish to PyPI
@@ -69,14 +70,16 @@ jobs:
6970
id-token: write
7071
contents: read
7172
steps:
72-
- name: Download all artifacts
73+
- name: Download wheel artifacts
7374
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
7475
with:
7576
path: dist
77+
pattern: wheels-*
7678
merge-multiple: true
7779

7880
- name: Publish to TestPyPI
7981
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # release/v1
8082
with:
8183
repository-url: https://test.pypi.org/legacy/
8284
skip-existing: true
85+
verbose: true

thirdparty/faiss/.github/workflows/build-pull-request.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,21 @@ jobs:
276276
fetch-tags: true
277277
- name: Build and Package (conda)
278278
uses: ./.github/actions/build_conda
279+
linux-x86_64-GPU-conda:
280+
name: Linux x86_64 GPU (conda, CUDA 12.6)
281+
runs-on: 4-core-ubuntu-gpu-t4
282+
env:
283+
CUDA_ARCHS: "70-real;72-real;75-real;80;86-real"
284+
steps:
285+
- name: Checkout
286+
uses: actions/checkout@v4
287+
with:
288+
fetch-depth: 0
289+
fetch-tags: true
290+
- name: Build and Package (conda)
291+
uses: ./.github/actions/build_conda
292+
with:
293+
cuda: "12.6"
279294
linux-x86_64-svs:
280295
name: Linux x86_64 w/ SVS (cmake)
281296
needs: linux-x86_64-cmake

thirdparty/faiss/conda/faiss/meta.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,8 @@ outputs:
156156
requires:
157157
- numpy >=2.0,<3.0
158158
- scipy
159-
- pytorch-cpu >=2.7
159+
- pytorch-cpu >=2.7 # [not win]
160+
- pytorch >=2.7 # [win]
160161
{% if PY_VER == '3.10' or PY_VER == '3.11' %}
161162
- mkl >=2024.2.2 # [x86_64]
162163
- python_abi <3.12

thirdparty/faiss/faiss/CMakeLists.txt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
set(FAISS_SIMD_AVX2_SRC
1212
impl/fast_scan/impl-avx2.cpp
1313
impl/hnsw/avx2.cpp
14-
impl/pq_code_distance/pq_code_distance-avx2.cpp
14+
impl/pq_code_distance/avx2.cpp
1515
impl/scalar_quantizer/sq-avx2.cpp
1616
impl/approx_topk/avx2.cpp
1717
impl/binary_hamming/avx2.cpp
@@ -25,7 +25,7 @@ set(FAISS_SIMD_AVX2_SRC
2525
set(FAISS_SIMD_AVX512_SRC
2626
impl/fast_scan/impl-avx512.cpp
2727
impl/hnsw/avx512.cpp
28-
impl/pq_code_distance/pq_code_distance-avx512.cpp
28+
impl/pq_code_distance/avx512.cpp
2929
impl/scalar_quantizer/sq-avx512.cpp
3030
impl/binary_hamming/avx512.cpp
3131
utils/simd_impl/distances_avx512.cpp
@@ -39,6 +39,7 @@ set(FAISS_SIMD_NEON_SRC
3939
impl/scalar_quantizer/sq-neon.cpp
4040
impl/approx_topk/neon.cpp
4141
impl/binary_hamming/neon.cpp
42+
impl/pq_code_distance/neon.cpp
4243
utils/simd_impl/distances_aarch64.cpp
4344
utils/hamming_distance/hamming_neon.cpp
4445
utils/simd_impl/partitioning_neon.cpp
@@ -50,6 +51,7 @@ set(FAISS_SIMD_SVE_SRC
5051
utils/simd_impl/distances_arm_sve.cpp
5152
)
5253
set(FAISS_SIMD_RVV_SRC
54+
impl/pq_code_distance/rvv.cpp
5355
impl/scalar_quantizer/sq-rvv.cpp
5456
impl/binary_hamming/rvv.cpp
5557
utils/simd_impl/distances_rvv.cpp
@@ -137,6 +139,7 @@ set(FAISS_SRC
137139
impl/PolysemousTraining.cpp
138140
impl/ProductQuantizer.cpp
139141
impl/pq_code_distance/pq_code_distance-generic.cpp
142+
impl/pq_code_distance/IVFPQ_QueryTables.cpp
140143
impl/AdditiveQuantizer.cpp
141144
impl/RaBitQuantizer.cpp
142145
impl/RaBitQuantizerMultiBit.cpp
@@ -315,8 +318,13 @@ set(FAISS_HEADERS
315318
impl/simd_dispatch.h
316319
impl/fast_scan/simd_result_handlers.h
317320
impl/zerocopy_io.h
318-
utils/pq_code_distance.h
319321
impl/pq_code_distance/pq_code_distance-inl.h
322+
impl/pq_code_distance/pq_code_distance-avx2.h
323+
impl/pq_code_distance/pq_code_distance-avx512.h
324+
impl/pq_code_distance/pq_code_distance-generic.h
325+
impl/pq_code_distance/IVFPQ_QueryTables.h
326+
impl/pq_code_distance/IVFPQScanner_impl.h
327+
impl/pq_code_distance/PQDistanceComputer_impl.h
320328
invlists/BlockInvertedLists.h
321329
invlists/DirectMap.h
322330
invlists/InvertedLists.h

0 commit comments

Comments
 (0)