faiss 0.6.0 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/ext/faiss/extconf.rb +2 -1
- data/ext/faiss/{index_rb.cpp → index.cpp} +1 -1
- data/ext/faiss/index_binary.cpp +1 -1
- data/ext/faiss/kmeans.cpp +1 -1
- data/ext/faiss/pca_matrix.cpp +1 -1
- data/ext/faiss/product_quantizer.cpp +1 -1
- data/ext/faiss/{utils_rb.cpp → utils.cpp} +1 -1
- data/lib/faiss/version.rb +1 -1
- data/vendor/faiss/faiss/AutoTune.cpp +93 -80
- data/vendor/faiss/faiss/Clustering.cpp +39 -240
- data/vendor/faiss/faiss/Clustering.h +6 -0
- data/vendor/faiss/faiss/IVFlib.cpp +41 -21
- data/vendor/faiss/faiss/Index.cpp +6 -5
- data/vendor/faiss/faiss/Index.h +5 -5
- data/vendor/faiss/faiss/Index2Layer.cpp +37 -53
- data/vendor/faiss/faiss/IndexAdditiveQuantizer.cpp +49 -37
- data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.cpp +36 -34
- data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.h +4 -1
- data/vendor/faiss/faiss/IndexBinary.cpp +5 -3
- data/vendor/faiss/faiss/IndexBinary.h +4 -4
- data/vendor/faiss/faiss/IndexBinaryFlat.cpp +1 -1
- data/vendor/faiss/faiss/IndexBinaryFlat.h +1 -1
- data/vendor/faiss/faiss/IndexBinaryFromFloat.cpp +4 -4
- data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +88 -97
- data/vendor/faiss/faiss/IndexBinaryHNSW.h +9 -3
- data/vendor/faiss/faiss/IndexBinaryHash.cpp +45 -236
- data/vendor/faiss/faiss/IndexBinaryHash.h +6 -6
- data/vendor/faiss/faiss/IndexBinaryIVF.cpp +89 -417
- data/vendor/faiss/faiss/IndexFastScan.cpp +72 -109
- data/vendor/faiss/faiss/IndexFastScan.h +25 -23
- data/vendor/faiss/faiss/IndexFlat.cpp +27 -20
- data/vendor/faiss/faiss/IndexFlat.h +21 -18
- data/vendor/faiss/faiss/IndexFlatCodes.cpp +42 -19
- data/vendor/faiss/faiss/IndexHNSW.cpp +374 -206
- data/vendor/faiss/faiss/IndexHNSW.h +16 -2
- data/vendor/faiss/faiss/IndexIDMap.cpp +25 -21
- data/vendor/faiss/faiss/IndexIDMap.h +9 -7
- data/vendor/faiss/faiss/IndexIVF.cpp +467 -364
- data/vendor/faiss/faiss/IndexIVF.h +33 -12
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +79 -76
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.cpp +96 -93
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.h +4 -1
- data/vendor/faiss/faiss/IndexIVFFastScan.cpp +357 -238
- data/vendor/faiss/faiss/IndexIVFFastScan.h +42 -41
- data/vendor/faiss/faiss/IndexIVFFlat.cpp +39 -69
- data/vendor/faiss/faiss/IndexIVFFlat.h +32 -0
- data/vendor/faiss/faiss/IndexIVFFlatPanorama.cpp +56 -33
- data/vendor/faiss/faiss/IndexIVFFlatPanorama.h +3 -1
- data/vendor/faiss/faiss/IndexIVFIndependentQuantizer.cpp +18 -15
- data/vendor/faiss/faiss/IndexIVFPQ.cpp +73 -846
- data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +151 -121
- data/vendor/faiss/faiss/IndexIVFPQFastScan.h +3 -0
- data/vendor/faiss/faiss/IndexIVFPQR.cpp +23 -20
- data/vendor/faiss/faiss/IndexIVFRaBitQ.cpp +30 -52
- data/vendor/faiss/faiss/IndexIVFRaBitQ.h +2 -1
- data/vendor/faiss/faiss/IndexIVFRaBitQFastScan.cpp +475 -476
- data/vendor/faiss/faiss/IndexIVFRaBitQFastScan.h +248 -93
- data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +41 -127
- data/vendor/faiss/faiss/IndexIVFSpectralHash.h +1 -1
- data/vendor/faiss/faiss/IndexLSH.cpp +36 -19
- data/vendor/faiss/faiss/IndexLattice.cpp +13 -13
- data/vendor/faiss/faiss/IndexNNDescent.cpp +36 -21
- data/vendor/faiss/faiss/IndexNNDescent.h +2 -2
- data/vendor/faiss/faiss/IndexNSG.cpp +38 -23
- data/vendor/faiss/faiss/IndexNeuralNetCodec.cpp +31 -11
- data/vendor/faiss/faiss/IndexPQ.cpp +128 -221
- data/vendor/faiss/faiss/IndexPQ.h +3 -2
- data/vendor/faiss/faiss/IndexPQFastScan.cpp +20 -14
- data/vendor/faiss/faiss/IndexPQFastScan.h +3 -0
- data/vendor/faiss/faiss/IndexPreTransform.cpp +25 -18
- data/vendor/faiss/faiss/IndexPreTransform.h +1 -1
- data/vendor/faiss/faiss/IndexRaBitQ.cpp +11 -36
- data/vendor/faiss/faiss/IndexRaBitQ.h +2 -1
- data/vendor/faiss/faiss/IndexRaBitQFastScan.cpp +41 -277
- data/vendor/faiss/faiss/IndexRaBitQFastScan.h +183 -27
- data/vendor/faiss/faiss/IndexRefine.cpp +30 -25
- data/vendor/faiss/faiss/IndexRefine.h +4 -4
- data/vendor/faiss/faiss/IndexReplicas.cpp +6 -6
- data/vendor/faiss/faiss/IndexRowwiseMinMax.cpp +15 -14
- data/vendor/faiss/faiss/IndexRowwiseMinMax.h +1 -1
- data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +150 -20
- data/vendor/faiss/faiss/IndexScalarQuantizer.h +10 -0
- data/vendor/faiss/faiss/IndexShards.cpp +10 -9
- data/vendor/faiss/faiss/IndexShardsIVF.cpp +21 -15
- data/vendor/faiss/faiss/MatrixStats.cpp +5 -4
- data/vendor/faiss/faiss/MetaIndexes.cpp +19 -17
- data/vendor/faiss/faiss/MetaIndexes.h +1 -1
- data/vendor/faiss/faiss/MetricType.h +14 -7
- data/vendor/faiss/faiss/SuperKMeans.cpp +656 -0
- data/vendor/faiss/faiss/SuperKMeans.h +97 -0
- data/vendor/faiss/faiss/VectorTransform.cpp +237 -149
- data/vendor/faiss/faiss/VectorTransform.h +16 -16
- data/vendor/faiss/faiss/build.cpp +23 -0
- data/vendor/faiss/faiss/build.h +15 -0
- data/vendor/faiss/faiss/clone_index.cpp +48 -47
- data/vendor/faiss/faiss/cppcontrib/SaDecodeKernels.h +1 -1
- data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-avx2-inl.h +47 -47
- data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-inl.h +11 -0
- data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-neon-inl.h +902 -12
- data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-avx2-inl.h +38 -38
- data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-inl.h +11 -0
- data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-neon-inl.h +702 -10
- data/vendor/faiss/faiss/factory_tools.cpp +9 -0
- data/vendor/faiss/faiss/gpu/GpuIndexCagra.h +6 -5
- data/vendor/faiss/faiss/gpu/GpuResources.h +3 -2
- data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +15 -16
- data/vendor/faiss/faiss/gpu/StandardGpuResources.h +5 -4
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +46 -0
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +56 -0
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +78 -1
- data/vendor/faiss/faiss/gpu/test/TestUtils.cpp +72 -0
- data/vendor/faiss/faiss/gpu/test/TestUtils.h +23 -0
- data/vendor/faiss/faiss/gpu/utils/CuvsFilterConvert.h +1 -1
- data/vendor/faiss/faiss/gpu/utils/CuvsUtils.h +21 -10
- data/vendor/faiss/faiss/gpu_metal/GpuIndexFlat.h +22 -0
- data/vendor/faiss/faiss/gpu_metal/MetalCloner.h +35 -0
- data/vendor/faiss/faiss/gpu_metal/MetalDistance.h +87 -0
- data/vendor/faiss/faiss/gpu_metal/MetalFlatKernels.h +40 -0
- data/vendor/faiss/faiss/gpu_metal/MetalIndex.h +58 -0
- data/vendor/faiss/faiss/gpu_metal/MetalIndexFlat.h +65 -0
- data/vendor/faiss/faiss/gpu_metal/MetalIndexIVFFlat.h +181 -0
- data/vendor/faiss/faiss/gpu_metal/MetalKernels.h +111 -0
- data/vendor/faiss/faiss/gpu_metal/MetalPythonBridge.h +45 -0
- data/vendor/faiss/faiss/gpu_metal/MetalResources.h +79 -0
- data/vendor/faiss/faiss/gpu_metal/StandardMetalResources.h +35 -0
- data/vendor/faiss/faiss/gpu_metal/impl/MetalIVFFlat.h +193 -0
- data/vendor/faiss/faiss/impl/AdSampling.cpp +103 -0
- data/vendor/faiss/faiss/impl/AdSampling.h +35 -0
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +29 -25
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +1 -0
- data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +10 -9
- data/vendor/faiss/faiss/impl/AuxIndexStructures.h +3 -0
- data/vendor/faiss/faiss/impl/ClusteringHelpers.cpp +244 -0
- data/vendor/faiss/faiss/impl/ClusteringHelpers.h +94 -0
- data/vendor/faiss/faiss/impl/ClusteringInitialization.cpp +16 -16
- data/vendor/faiss/faiss/impl/CodePacker.cpp +3 -3
- data/vendor/faiss/faiss/impl/CodePackerRaBitQ.cpp +1 -1
- data/vendor/faiss/faiss/impl/DistanceComputer.h +8 -8
- data/vendor/faiss/faiss/impl/FaissAssert.h +6 -3
- data/vendor/faiss/faiss/impl/FaissException.h +50 -3
- data/vendor/faiss/faiss/impl/HNSW.cpp +639 -507
- data/vendor/faiss/faiss/impl/HNSW.h +61 -44
- data/vendor/faiss/faiss/impl/IDSelector.cpp +15 -11
- data/vendor/faiss/faiss/impl/IDSelector.h +8 -8
- data/vendor/faiss/faiss/impl/InvertedListScannerStats.h +26 -0
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +82 -77
- data/vendor/faiss/faiss/impl/NNDescent.cpp +62 -25
- data/vendor/faiss/faiss/impl/NNDescent.h +6 -2
- data/vendor/faiss/faiss/impl/NSG.cpp +53 -32
- data/vendor/faiss/faiss/impl/NSG.h +4 -4
- data/vendor/faiss/faiss/impl/Panorama.cpp +23 -6
- data/vendor/faiss/faiss/impl/Panorama.h +269 -87
- data/vendor/faiss/faiss/impl/PdxLayout.cpp +93 -0
- data/vendor/faiss/faiss/impl/PdxLayout.h +41 -0
- data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +46 -32
- data/vendor/faiss/faiss/impl/PolysemousTraining.h +3 -3
- data/vendor/faiss/faiss/impl/ProductAdditiveQuantizer.cpp +35 -35
- data/vendor/faiss/faiss/impl/ProductQuantizer-inl.h +21 -16
- data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +55 -25
- data/vendor/faiss/faiss/impl/Quantizer.h +2 -2
- data/vendor/faiss/faiss/impl/RaBitQUtils.cpp +55 -49
- data/vendor/faiss/faiss/impl/RaBitQUtils.h +65 -0
- data/vendor/faiss/faiss/impl/RaBitQuantizer.cpp +302 -283
- data/vendor/faiss/faiss/impl/ResidualQuantizer.cpp +26 -23
- data/vendor/faiss/faiss/impl/ResidualQuantizer.h +1 -1
- data/vendor/faiss/faiss/impl/ResultHandler.h +100 -75
- data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +318 -7
- data/vendor/faiss/faiss/impl/ScalarQuantizer.h +77 -1
- data/vendor/faiss/faiss/impl/ThreadedIndex-inl.h +14 -11
- data/vendor/faiss/faiss/impl/VisitedTable.cpp +10 -10
- data/vendor/faiss/faiss/impl/VisitedTable.h +70 -28
- data/vendor/faiss/faiss/impl/approx_topk/approx_topk.h +276 -0
- data/vendor/faiss/faiss/impl/approx_topk/avx2.cpp +68 -0
- data/vendor/faiss/faiss/{utils → impl}/approx_topk/generic.h +15 -8
- data/vendor/faiss/faiss/impl/approx_topk/neon.cpp +68 -0
- data/vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab-inl.h +169 -0
- data/vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab.h +117 -0
- data/vendor/faiss/faiss/impl/approx_topk/simdlib256-inl.h +146 -0
- data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHNSW_impl.h +73 -0
- data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHash_impl.h +270 -0
- data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryIVF_impl.h +460 -0
- data/vendor/faiss/faiss/impl/binary_hamming/IndexIVFSpectralHash_impl.h +159 -0
- data/vendor/faiss/faiss/impl/binary_hamming/IndexPQ_impl.h +92 -0
- data/vendor/faiss/faiss/impl/binary_hamming/avx2.cpp +26 -0
- data/vendor/faiss/faiss/impl/binary_hamming/avx512.cpp +26 -0
- data/vendor/faiss/faiss/impl/binary_hamming/dispatch.h +143 -0
- data/vendor/faiss/faiss/impl/binary_hamming/neon.cpp +26 -0
- data/vendor/faiss/faiss/impl/binary_hamming/rvv.cpp +26 -0
- data/vendor/faiss/faiss/impl/expanded_scanners.h +8 -3
- data/vendor/faiss/faiss/impl/{FastScanDistancePostProcessing.h → fast_scan/FastScanDistancePostProcessing.h} +13 -6
- data/vendor/faiss/faiss/impl/{LookupTableScaler.h → fast_scan/LookupTableScaler.h} +16 -5
- data/vendor/faiss/faiss/impl/fast_scan/accumulate_loops.h +237 -0
- data/vendor/faiss/faiss/impl/fast_scan/accumulate_loops_512.h +185 -0
- data/vendor/faiss/faiss/impl/fast_scan/decompose_qbs.h +229 -0
- data/vendor/faiss/faiss/impl/fast_scan/dispatching.h +270 -0
- data/vendor/faiss/faiss/impl/{pq4_fast_scan.cpp → fast_scan/fast_scan.cpp} +169 -2
- data/vendor/faiss/faiss/impl/fast_scan/fast_scan.h +341 -0
- data/vendor/faiss/faiss/impl/fast_scan/impl-avx2.cpp +36 -0
- data/vendor/faiss/faiss/impl/fast_scan/impl-avx512.cpp +40 -0
- data/vendor/faiss/faiss/impl/fast_scan/impl-neon.cpp +120 -0
- data/vendor/faiss/faiss/impl/fast_scan/impl-riscv.cpp +104 -0
- data/vendor/faiss/faiss/impl/fast_scan/kernels_simd256.h +213 -0
- data/vendor/faiss/faiss/impl/{pq4_fast_scan_search_qbs.cpp → fast_scan/kernels_simd512.h} +26 -356
- data/vendor/faiss/faiss/impl/fast_scan/rabitq_dispatching.h +90 -0
- data/vendor/faiss/faiss/impl/fast_scan/rabitq_result_handler.h +108 -0
- data/vendor/faiss/faiss/impl/{simd_result_handlers.h → fast_scan/simd_result_handlers.h} +282 -134
- data/vendor/faiss/faiss/impl/hnsw/LockVector.cpp +54 -0
- data/vendor/faiss/faiss/impl/hnsw/LockVector.h +64 -0
- data/vendor/faiss/faiss/impl/hnsw/MinimaxHeap.cpp +83 -0
- data/vendor/faiss/faiss/impl/hnsw/MinimaxHeap.h +113 -0
- data/vendor/faiss/faiss/impl/hnsw/avx2.cpp +150 -0
- data/vendor/faiss/faiss/impl/hnsw/avx512.cpp +142 -0
- data/vendor/faiss/faiss/impl/index_read.cpp +1227 -79
- data/vendor/faiss/faiss/impl/index_read_utils.h +1 -1
- data/vendor/faiss/faiss/impl/index_write.cpp +96 -13
- data/vendor/faiss/faiss/impl/io.cpp +6 -6
- data/vendor/faiss/faiss/impl/io_macros.h +58 -16
- data/vendor/faiss/faiss/impl/kmeans1d.cpp +10 -10
- data/vendor/faiss/faiss/impl/lattice_Zn.cpp +37 -23
- data/vendor/faiss/faiss/impl/lattice_Zn.h +6 -6
- data/vendor/faiss/faiss/impl/mapped_io.cpp +6 -6
- data/vendor/faiss/faiss/impl/platform_macros.h +15 -4
- data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQScanner_impl.h +549 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.cpp +245 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.h +105 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/PQDistanceComputer_impl.h +106 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/avx2.cpp +23 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/avx512.cpp +23 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/neon.cpp +23 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/{pq_code_distance-avx2.cpp → pq_code_distance-avx2.h} +9 -13
- data/vendor/faiss/faiss/impl/pq_code_distance/{pq_code_distance-avx512.cpp → pq_code_distance-avx512.h} +9 -57
- data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.cpp +45 -107
- data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.h +96 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-inl.h +274 -5
- data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-sve.cpp +10 -7
- data/vendor/faiss/faiss/impl/pq_code_distance/pq_scan_impl.h +105 -0
- data/vendor/faiss/faiss/impl/pq_code_distance/rvv.cpp +70 -0
- data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.cpp +311 -477
- data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.h +1 -1
- data/vendor/faiss/faiss/impl/scalar_quantizer/codecs.h +1 -1
- data/vendor/faiss/faiss/impl/scalar_quantizer/distance_computers.h +9 -2
- data/vendor/faiss/faiss/impl/scalar_quantizer/quantizers.h +419 -19
- data/vendor/faiss/faiss/impl/scalar_quantizer/scanners.h +27 -1
- data/vendor/faiss/faiss/impl/scalar_quantizer/similarities.h +3 -3
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx2.cpp +387 -2
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512-impl.h +553 -0
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512-spr.cpp +559 -0
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512.cpp +341 -2
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-dispatch.h +425 -3
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-neon.cpp +290 -2
- data/vendor/faiss/faiss/impl/scalar_quantizer/sq-rvv.cpp +337 -0
- data/vendor/faiss/faiss/impl/scalar_quantizer/training.cpp +192 -8
- data/vendor/faiss/faiss/impl/scalar_quantizer/training.h +12 -0
- data/vendor/faiss/faiss/impl/simd_dispatch.h +157 -66
- data/vendor/faiss/faiss/impl/simdlib/simdlib.h +57 -0
- data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_avx2.h +264 -172
- data/vendor/faiss/faiss/impl/simdlib/simdlib_avx512.h +414 -0
- data/vendor/faiss/faiss/impl/simdlib/simdlib_dispatch.h +44 -0
- data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_emulated.h +231 -166
- data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_neon.h +270 -218
- data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_ppc64.h +201 -160
- data/vendor/faiss/faiss/impl/svs_io.cpp +12 -3
- data/vendor/faiss/faiss/impl/svs_io.h +8 -2
- data/vendor/faiss/faiss/index_factory.cpp +90 -18
- data/vendor/faiss/faiss/index_io.h +40 -0
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +66 -16
- data/vendor/faiss/faiss/invlists/DirectMap.cpp +28 -15
- data/vendor/faiss/faiss/invlists/DirectMap.h +4 -3
- data/vendor/faiss/faiss/invlists/InvertedLists.cpp +170 -86
- data/vendor/faiss/faiss/invlists/InvertedLists.h +88 -25
- data/vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp +4 -4
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +13 -13
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.h +1 -1
- data/vendor/faiss/faiss/svs/IndexSVSFaissUtils.h +1 -1
- data/vendor/faiss/faiss/svs/IndexSVSFlat.cpp +2 -2
- data/vendor/faiss/faiss/svs/IndexSVSIVF.cpp +350 -0
- data/vendor/faiss/faiss/svs/IndexSVSIVF.h +128 -0
- data/vendor/faiss/faiss/svs/IndexSVSIVFLVQ.cpp +40 -0
- data/vendor/faiss/faiss/svs/IndexSVSIVFLVQ.h +43 -0
- data/vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.cpp +225 -0
- data/vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.h +71 -0
- data/vendor/faiss/faiss/svs/IndexSVSVamana.cpp +142 -21
- data/vendor/faiss/faiss/svs/IndexSVSVamana.h +33 -7
- data/vendor/faiss/faiss/svs/IndexSVSVamanaLVQ.cpp +3 -2
- data/vendor/faiss/faiss/svs/IndexSVSVamanaLVQ.h +2 -1
- data/vendor/faiss/faiss/svs/IndexSVSVamanaLeanVec.cpp +77 -27
- data/vendor/faiss/faiss/svs/IndexSVSVamanaLeanVec.h +10 -4
- data/vendor/faiss/faiss/utils/Heap.cpp +10 -10
- data/vendor/faiss/faiss/utils/NeuralNet.cpp +47 -36
- data/vendor/faiss/faiss/utils/NeuralNet.h +1 -1
- data/vendor/faiss/faiss/utils/approx_topk_hamming/approx_topk_hamming.h +10 -4
- data/vendor/faiss/faiss/utils/bf16.h +34 -0
- data/vendor/faiss/faiss/utils/distances.cpp +390 -560
- data/vendor/faiss/faiss/utils/distances.h +20 -1
- data/vendor/faiss/faiss/utils/distances_dispatch.h +117 -37
- data/vendor/faiss/faiss/utils/distances_fused/avx512.cpp +8 -7
- data/vendor/faiss/faiss/utils/distances_fused/distances_fused.cpp +33 -14
- data/vendor/faiss/faiss/utils/distances_fused/distances_fused.h +12 -1
- data/vendor/faiss/faiss/utils/distances_fused/simdlib_based.cpp +16 -293
- data/vendor/faiss/faiss/utils/distances_fused/simdlib_based_neon.cpp +57 -0
- data/vendor/faiss/faiss/utils/distances_fused/simdlib_kernel-inl.h +290 -0
- data/vendor/faiss/faiss/utils/distances_simd.cpp +5 -178
- data/vendor/faiss/faiss/utils/extra_distances.cpp +9 -8
- data/vendor/faiss/faiss/utils/extra_distances.h +32 -6
- data/vendor/faiss/faiss/utils/hamming-inl.h +13 -11
- data/vendor/faiss/faiss/utils/hamming.cpp +66 -517
- data/vendor/faiss/faiss/utils/hamming.h +92 -2
- data/vendor/faiss/faiss/utils/hamming_distance/common.h +287 -10
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_avx2.cpp +16 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_avx512.cpp +15 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_avx512_spr.cpp +15 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx2.h +142 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx512.h +210 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx512_spr.h +171 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-generic.h +368 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-neon.h +322 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-rvv.h +39 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer.h +146 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_impl.h +481 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_neon.cpp +15 -0
- data/vendor/faiss/faiss/utils/hamming_distance/hamming_rvv.cpp +15 -0
- data/vendor/faiss/faiss/utils/partitioning.cpp +66 -989
- data/vendor/faiss/faiss/utils/partitioning.h +31 -0
- data/vendor/faiss/faiss/utils/popcount.h +29 -0
- data/vendor/faiss/faiss/utils/pq_code_distance.h +2 -2
- data/vendor/faiss/faiss/utils/prefetch.h +2 -2
- data/vendor/faiss/faiss/utils/quantize_lut.cpp +30 -30
- data/vendor/faiss/faiss/utils/quantize_lut.h +1 -1
- data/vendor/faiss/faiss/utils/rabitq_simd.h +57 -536
- data/vendor/faiss/faiss/utils/random.cpp +6 -6
- data/vendor/faiss/faiss/utils/simd_impl/IVFFlatScanner-inl.h +51 -0
- data/vendor/faiss/faiss/utils/simd_impl/distances_aarch64.cpp +5 -1
- data/vendor/faiss/faiss/utils/simd_impl/distances_arm_sve.cpp +213 -4
- data/vendor/faiss/faiss/utils/simd_impl/distances_autovec-inl.h +163 -10
- data/vendor/faiss/faiss/utils/simd_impl/distances_avx2.cpp +250 -4
- data/vendor/faiss/faiss/utils/simd_impl/distances_avx512.cpp +7 -4
- data/vendor/faiss/faiss/utils/simd_impl/distances_rvv.cpp +189 -0
- data/vendor/faiss/faiss/utils/simd_impl/distances_simdlib256.h +195 -0
- data/vendor/faiss/faiss/utils/simd_impl/distances_sse-inl.h +2 -1
- data/vendor/faiss/faiss/utils/{distances_fused/simdlib_based.h → simd_impl/exhaustive_L2sqr_blas_cmax.h} +5 -10
- data/vendor/faiss/faiss/utils/simd_impl/hamming_impl.h +481 -0
- data/vendor/faiss/faiss/utils/simd_impl/partitioning_avx2.cpp +14 -0
- data/vendor/faiss/faiss/utils/simd_impl/partitioning_neon.cpp +14 -0
- data/vendor/faiss/faiss/utils/simd_impl/partitioning_simdlib256.h +1031 -0
- data/vendor/faiss/faiss/utils/simd_impl/rabitq_avx2.cpp +355 -0
- data/vendor/faiss/faiss/utils/simd_impl/rabitq_avx512.cpp +477 -0
- data/vendor/faiss/faiss/utils/simd_impl/rabitq_avx512_spr.cpp +343 -0
- data/vendor/faiss/faiss/utils/simd_impl/rabitq_neon.cpp +55 -0
- data/vendor/faiss/faiss/utils/simd_impl/rabitq_rvv.cpp +55 -0
- data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_dispatch.h +32 -0
- data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels.h +43 -0
- data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx2.cpp +57 -0
- data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx512.cpp +45 -0
- data/vendor/faiss/faiss/utils/simd_levels.cpp +29 -7
- data/vendor/faiss/faiss/utils/simd_levels.h +93 -1
- data/vendor/faiss/faiss/utils/sorting.cpp +48 -36
- data/vendor/faiss/faiss/utils/utils.cpp +5 -5
- data/vendor/faiss/faiss/utils/utils.h +3 -3
- metadata +129 -34
- data/vendor/faiss/faiss/impl/RaBitQStats.cpp +0 -29
- data/vendor/faiss/faiss/impl/RaBitQStats.h +0 -56
- data/vendor/faiss/faiss/impl/pq4_fast_scan.h +0 -224
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +0 -230
- data/vendor/faiss/faiss/utils/approx_topk/approx_topk.h +0 -84
- data/vendor/faiss/faiss/utils/approx_topk/avx2-inl.h +0 -196
- data/vendor/faiss/faiss/utils/approx_topk/mode.h +0 -34
- data/vendor/faiss/faiss/utils/distances_fused/avx512.h +0 -36
- data/vendor/faiss/faiss/utils/extra_distances-inl.h +0 -235
- data/vendor/faiss/faiss/utils/hamming_distance/avx2-inl.h +0 -462
- data/vendor/faiss/faiss/utils/hamming_distance/avx512-inl.h +0 -490
- data/vendor/faiss/faiss/utils/hamming_distance/generic-inl.h +0 -449
- data/vendor/faiss/faiss/utils/hamming_distance/hamdis-inl.h +0 -87
- data/vendor/faiss/faiss/utils/hamming_distance/neon-inl.h +0 -524
- data/vendor/faiss/faiss/utils/simdlib.h +0 -42
- data/vendor/faiss/faiss/utils/simdlib_avx512.h +0 -365
- /data/ext/faiss/{utils_rb.h → utils.h} +0 -0
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: faiss
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Kane
|
|
@@ -48,14 +48,14 @@ files:
|
|
|
48
48
|
- README.md
|
|
49
49
|
- ext/faiss/ext.cpp
|
|
50
50
|
- ext/faiss/extconf.rb
|
|
51
|
+
- ext/faiss/index.cpp
|
|
51
52
|
- ext/faiss/index_binary.cpp
|
|
52
|
-
- ext/faiss/index_rb.cpp
|
|
53
53
|
- ext/faiss/kmeans.cpp
|
|
54
54
|
- ext/faiss/numo.hpp
|
|
55
55
|
- ext/faiss/pca_matrix.cpp
|
|
56
56
|
- ext/faiss/product_quantizer.cpp
|
|
57
|
-
- ext/faiss/
|
|
58
|
-
- ext/faiss/
|
|
57
|
+
- ext/faiss/utils.cpp
|
|
58
|
+
- ext/faiss/utils.h
|
|
59
59
|
- lib/faiss.rb
|
|
60
60
|
- lib/faiss/version.rb
|
|
61
61
|
- vendor/faiss/LICENSE
|
|
@@ -158,8 +158,12 @@ files:
|
|
|
158
158
|
- vendor/faiss/faiss/MetaIndexes.cpp
|
|
159
159
|
- vendor/faiss/faiss/MetaIndexes.h
|
|
160
160
|
- vendor/faiss/faiss/MetricType.h
|
|
161
|
+
- vendor/faiss/faiss/SuperKMeans.cpp
|
|
162
|
+
- vendor/faiss/faiss/SuperKMeans.h
|
|
161
163
|
- vendor/faiss/faiss/VectorTransform.cpp
|
|
162
164
|
- vendor/faiss/faiss/VectorTransform.h
|
|
165
|
+
- vendor/faiss/faiss/build.cpp
|
|
166
|
+
- vendor/faiss/faiss/build.h
|
|
163
167
|
- vendor/faiss/faiss/clone_index.cpp
|
|
164
168
|
- vendor/faiss/faiss/clone_index.h
|
|
165
169
|
- vendor/faiss/faiss/cppcontrib/SaDecodeKernels.h
|
|
@@ -227,10 +231,26 @@ files:
|
|
|
227
231
|
- vendor/faiss/faiss/gpu/utils/StaticUtils.h
|
|
228
232
|
- vendor/faiss/faiss/gpu/utils/Timer.cpp
|
|
229
233
|
- vendor/faiss/faiss/gpu/utils/Timer.h
|
|
234
|
+
- vendor/faiss/faiss/gpu_metal/GpuIndexFlat.h
|
|
235
|
+
- vendor/faiss/faiss/gpu_metal/MetalCloner.h
|
|
236
|
+
- vendor/faiss/faiss/gpu_metal/MetalDistance.h
|
|
237
|
+
- vendor/faiss/faiss/gpu_metal/MetalFlatKernels.h
|
|
238
|
+
- vendor/faiss/faiss/gpu_metal/MetalIndex.h
|
|
239
|
+
- vendor/faiss/faiss/gpu_metal/MetalIndexFlat.h
|
|
240
|
+
- vendor/faiss/faiss/gpu_metal/MetalIndexIVFFlat.h
|
|
241
|
+
- vendor/faiss/faiss/gpu_metal/MetalKernels.h
|
|
242
|
+
- vendor/faiss/faiss/gpu_metal/MetalPythonBridge.h
|
|
243
|
+
- vendor/faiss/faiss/gpu_metal/MetalResources.h
|
|
244
|
+
- vendor/faiss/faiss/gpu_metal/StandardMetalResources.h
|
|
245
|
+
- vendor/faiss/faiss/gpu_metal/impl/MetalIVFFlat.h
|
|
246
|
+
- vendor/faiss/faiss/impl/AdSampling.cpp
|
|
247
|
+
- vendor/faiss/faiss/impl/AdSampling.h
|
|
230
248
|
- vendor/faiss/faiss/impl/AdditiveQuantizer.cpp
|
|
231
249
|
- vendor/faiss/faiss/impl/AdditiveQuantizer.h
|
|
232
250
|
- vendor/faiss/faiss/impl/AuxIndexStructures.cpp
|
|
233
251
|
- vendor/faiss/faiss/impl/AuxIndexStructures.h
|
|
252
|
+
- vendor/faiss/faiss/impl/ClusteringHelpers.cpp
|
|
253
|
+
- vendor/faiss/faiss/impl/ClusteringHelpers.h
|
|
234
254
|
- vendor/faiss/faiss/impl/ClusteringInitialization.cpp
|
|
235
255
|
- vendor/faiss/faiss/impl/ClusteringInitialization.h
|
|
236
256
|
- vendor/faiss/faiss/impl/CodePacker.cpp
|
|
@@ -241,14 +261,13 @@ files:
|
|
|
241
261
|
- vendor/faiss/faiss/impl/FaissAssert.h
|
|
242
262
|
- vendor/faiss/faiss/impl/FaissException.cpp
|
|
243
263
|
- vendor/faiss/faiss/impl/FaissException.h
|
|
244
|
-
- vendor/faiss/faiss/impl/FastScanDistancePostProcessing.h
|
|
245
264
|
- vendor/faiss/faiss/impl/HNSW.cpp
|
|
246
265
|
- vendor/faiss/faiss/impl/HNSW.h
|
|
247
266
|
- vendor/faiss/faiss/impl/IDSelector.cpp
|
|
248
267
|
- vendor/faiss/faiss/impl/IDSelector.h
|
|
268
|
+
- vendor/faiss/faiss/impl/InvertedListScannerStats.h
|
|
249
269
|
- vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp
|
|
250
270
|
- vendor/faiss/faiss/impl/LocalSearchQuantizer.h
|
|
251
|
-
- vendor/faiss/faiss/impl/LookupTableScaler.h
|
|
252
271
|
- vendor/faiss/faiss/impl/NNDescent.cpp
|
|
253
272
|
- vendor/faiss/faiss/impl/NNDescent.h
|
|
254
273
|
- vendor/faiss/faiss/impl/NSG.cpp
|
|
@@ -257,6 +276,8 @@ files:
|
|
|
257
276
|
- vendor/faiss/faiss/impl/Panorama.h
|
|
258
277
|
- vendor/faiss/faiss/impl/PanoramaStats.cpp
|
|
259
278
|
- vendor/faiss/faiss/impl/PanoramaStats.h
|
|
279
|
+
- vendor/faiss/faiss/impl/PdxLayout.cpp
|
|
280
|
+
- vendor/faiss/faiss/impl/PdxLayout.h
|
|
260
281
|
- vendor/faiss/faiss/impl/PolysemousTraining.cpp
|
|
261
282
|
- vendor/faiss/faiss/impl/PolysemousTraining.h
|
|
262
283
|
- vendor/faiss/faiss/impl/ProductAdditiveQuantizer.cpp
|
|
@@ -265,8 +286,6 @@ files:
|
|
|
265
286
|
- vendor/faiss/faiss/impl/ProductQuantizer.cpp
|
|
266
287
|
- vendor/faiss/faiss/impl/ProductQuantizer.h
|
|
267
288
|
- vendor/faiss/faiss/impl/Quantizer.h
|
|
268
|
-
- vendor/faiss/faiss/impl/RaBitQStats.cpp
|
|
269
|
-
- vendor/faiss/faiss/impl/RaBitQStats.h
|
|
270
289
|
- vendor/faiss/faiss/impl/RaBitQUtils.cpp
|
|
271
290
|
- vendor/faiss/faiss/impl/RaBitQUtils.h
|
|
272
291
|
- vendor/faiss/faiss/impl/RaBitQuantizer.cpp
|
|
@@ -282,7 +301,47 @@ files:
|
|
|
282
301
|
- vendor/faiss/faiss/impl/ThreadedIndex.h
|
|
283
302
|
- vendor/faiss/faiss/impl/VisitedTable.cpp
|
|
284
303
|
- vendor/faiss/faiss/impl/VisitedTable.h
|
|
304
|
+
- vendor/faiss/faiss/impl/approx_topk/approx_topk.h
|
|
305
|
+
- vendor/faiss/faiss/impl/approx_topk/avx2.cpp
|
|
306
|
+
- vendor/faiss/faiss/impl/approx_topk/generic.h
|
|
307
|
+
- vendor/faiss/faiss/impl/approx_topk/neon.cpp
|
|
308
|
+
- vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab-inl.h
|
|
309
|
+
- vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab.h
|
|
310
|
+
- vendor/faiss/faiss/impl/approx_topk/simdlib256-inl.h
|
|
311
|
+
- vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHNSW_impl.h
|
|
312
|
+
- vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHash_impl.h
|
|
313
|
+
- vendor/faiss/faiss/impl/binary_hamming/IndexBinaryIVF_impl.h
|
|
314
|
+
- vendor/faiss/faiss/impl/binary_hamming/IndexIVFSpectralHash_impl.h
|
|
315
|
+
- vendor/faiss/faiss/impl/binary_hamming/IndexPQ_impl.h
|
|
316
|
+
- vendor/faiss/faiss/impl/binary_hamming/avx2.cpp
|
|
317
|
+
- vendor/faiss/faiss/impl/binary_hamming/avx512.cpp
|
|
318
|
+
- vendor/faiss/faiss/impl/binary_hamming/dispatch.h
|
|
319
|
+
- vendor/faiss/faiss/impl/binary_hamming/neon.cpp
|
|
320
|
+
- vendor/faiss/faiss/impl/binary_hamming/rvv.cpp
|
|
285
321
|
- vendor/faiss/faiss/impl/expanded_scanners.h
|
|
322
|
+
- vendor/faiss/faiss/impl/fast_scan/FastScanDistancePostProcessing.h
|
|
323
|
+
- vendor/faiss/faiss/impl/fast_scan/LookupTableScaler.h
|
|
324
|
+
- vendor/faiss/faiss/impl/fast_scan/accumulate_loops.h
|
|
325
|
+
- vendor/faiss/faiss/impl/fast_scan/accumulate_loops_512.h
|
|
326
|
+
- vendor/faiss/faiss/impl/fast_scan/decompose_qbs.h
|
|
327
|
+
- vendor/faiss/faiss/impl/fast_scan/dispatching.h
|
|
328
|
+
- vendor/faiss/faiss/impl/fast_scan/fast_scan.cpp
|
|
329
|
+
- vendor/faiss/faiss/impl/fast_scan/fast_scan.h
|
|
330
|
+
- vendor/faiss/faiss/impl/fast_scan/impl-avx2.cpp
|
|
331
|
+
- vendor/faiss/faiss/impl/fast_scan/impl-avx512.cpp
|
|
332
|
+
- vendor/faiss/faiss/impl/fast_scan/impl-neon.cpp
|
|
333
|
+
- vendor/faiss/faiss/impl/fast_scan/impl-riscv.cpp
|
|
334
|
+
- vendor/faiss/faiss/impl/fast_scan/kernels_simd256.h
|
|
335
|
+
- vendor/faiss/faiss/impl/fast_scan/kernels_simd512.h
|
|
336
|
+
- vendor/faiss/faiss/impl/fast_scan/rabitq_dispatching.h
|
|
337
|
+
- vendor/faiss/faiss/impl/fast_scan/rabitq_result_handler.h
|
|
338
|
+
- vendor/faiss/faiss/impl/fast_scan/simd_result_handlers.h
|
|
339
|
+
- vendor/faiss/faiss/impl/hnsw/LockVector.cpp
|
|
340
|
+
- vendor/faiss/faiss/impl/hnsw/LockVector.h
|
|
341
|
+
- vendor/faiss/faiss/impl/hnsw/MinimaxHeap.cpp
|
|
342
|
+
- vendor/faiss/faiss/impl/hnsw/MinimaxHeap.h
|
|
343
|
+
- vendor/faiss/faiss/impl/hnsw/avx2.cpp
|
|
344
|
+
- vendor/faiss/faiss/impl/hnsw/avx512.cpp
|
|
286
345
|
- vendor/faiss/faiss/impl/index_read.cpp
|
|
287
346
|
- vendor/faiss/faiss/impl/index_read_utils.h
|
|
288
347
|
- vendor/faiss/faiss/impl/index_write.cpp
|
|
@@ -297,15 +356,21 @@ files:
|
|
|
297
356
|
- vendor/faiss/faiss/impl/mapped_io.h
|
|
298
357
|
- vendor/faiss/faiss/impl/maybe_owned_vector.h
|
|
299
358
|
- vendor/faiss/faiss/impl/platform_macros.h
|
|
300
|
-
- vendor/faiss/faiss/impl/
|
|
301
|
-
- vendor/faiss/faiss/impl/
|
|
302
|
-
- vendor/faiss/faiss/impl/
|
|
303
|
-
- vendor/faiss/faiss/impl/
|
|
304
|
-
- vendor/faiss/faiss/impl/pq_code_distance/
|
|
305
|
-
- vendor/faiss/faiss/impl/pq_code_distance/
|
|
359
|
+
- vendor/faiss/faiss/impl/pq_code_distance/IVFPQScanner_impl.h
|
|
360
|
+
- vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.cpp
|
|
361
|
+
- vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.h
|
|
362
|
+
- vendor/faiss/faiss/impl/pq_code_distance/PQDistanceComputer_impl.h
|
|
363
|
+
- vendor/faiss/faiss/impl/pq_code_distance/avx2.cpp
|
|
364
|
+
- vendor/faiss/faiss/impl/pq_code_distance/avx512.cpp
|
|
365
|
+
- vendor/faiss/faiss/impl/pq_code_distance/neon.cpp
|
|
366
|
+
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-avx2.h
|
|
367
|
+
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-avx512.h
|
|
306
368
|
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.cpp
|
|
369
|
+
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.h
|
|
307
370
|
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-inl.h
|
|
308
371
|
- vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-sve.cpp
|
|
372
|
+
- vendor/faiss/faiss/impl/pq_code_distance/pq_scan_impl.h
|
|
373
|
+
- vendor/faiss/faiss/impl/pq_code_distance/rvv.cpp
|
|
309
374
|
- vendor/faiss/faiss/impl/residual_quantizer_encode_steps.cpp
|
|
310
375
|
- vendor/faiss/faiss/impl/residual_quantizer_encode_steps.h
|
|
311
376
|
- vendor/faiss/faiss/impl/scalar_quantizer/codecs.h
|
|
@@ -314,13 +379,22 @@ files:
|
|
|
314
379
|
- vendor/faiss/faiss/impl/scalar_quantizer/scanners.h
|
|
315
380
|
- vendor/faiss/faiss/impl/scalar_quantizer/similarities.h
|
|
316
381
|
- vendor/faiss/faiss/impl/scalar_quantizer/sq-avx2.cpp
|
|
382
|
+
- vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512-impl.h
|
|
383
|
+
- vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512-spr.cpp
|
|
317
384
|
- vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512.cpp
|
|
318
385
|
- vendor/faiss/faiss/impl/scalar_quantizer/sq-dispatch.h
|
|
319
386
|
- vendor/faiss/faiss/impl/scalar_quantizer/sq-neon.cpp
|
|
387
|
+
- vendor/faiss/faiss/impl/scalar_quantizer/sq-rvv.cpp
|
|
320
388
|
- vendor/faiss/faiss/impl/scalar_quantizer/training.cpp
|
|
321
389
|
- vendor/faiss/faiss/impl/scalar_quantizer/training.h
|
|
322
390
|
- vendor/faiss/faiss/impl/simd_dispatch.h
|
|
323
|
-
- vendor/faiss/faiss/impl/
|
|
391
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib.h
|
|
392
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_avx2.h
|
|
393
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_avx512.h
|
|
394
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_dispatch.h
|
|
395
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_emulated.h
|
|
396
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_neon.h
|
|
397
|
+
- vendor/faiss/faiss/impl/simdlib/simdlib_ppc64.h
|
|
324
398
|
- vendor/faiss/faiss/impl/svs_io.cpp
|
|
325
399
|
- vendor/faiss/faiss/impl/svs_io.h
|
|
326
400
|
- vendor/faiss/faiss/impl/zerocopy_io.cpp
|
|
@@ -343,6 +417,12 @@ files:
|
|
|
343
417
|
- vendor/faiss/faiss/svs/IndexSVSFaissUtils.h
|
|
344
418
|
- vendor/faiss/faiss/svs/IndexSVSFlat.cpp
|
|
345
419
|
- vendor/faiss/faiss/svs/IndexSVSFlat.h
|
|
420
|
+
- vendor/faiss/faiss/svs/IndexSVSIVF.cpp
|
|
421
|
+
- vendor/faiss/faiss/svs/IndexSVSIVF.h
|
|
422
|
+
- vendor/faiss/faiss/svs/IndexSVSIVFLVQ.cpp
|
|
423
|
+
- vendor/faiss/faiss/svs/IndexSVSIVFLVQ.h
|
|
424
|
+
- vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.cpp
|
|
425
|
+
- vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.h
|
|
346
426
|
- vendor/faiss/faiss/svs/IndexSVSVamana.cpp
|
|
347
427
|
- vendor/faiss/faiss/svs/IndexSVSVamana.h
|
|
348
428
|
- vendor/faiss/faiss/svs/IndexSVSVamanaLVQ.cpp
|
|
@@ -356,23 +436,18 @@ files:
|
|
|
356
436
|
- vendor/faiss/faiss/utils/NeuralNet.h
|
|
357
437
|
- vendor/faiss/faiss/utils/WorkerThread.cpp
|
|
358
438
|
- vendor/faiss/faiss/utils/WorkerThread.h
|
|
359
|
-
- vendor/faiss/faiss/utils/approx_topk/approx_topk.h
|
|
360
|
-
- vendor/faiss/faiss/utils/approx_topk/avx2-inl.h
|
|
361
|
-
- vendor/faiss/faiss/utils/approx_topk/generic.h
|
|
362
|
-
- vendor/faiss/faiss/utils/approx_topk/mode.h
|
|
363
439
|
- vendor/faiss/faiss/utils/approx_topk_hamming/approx_topk_hamming.h
|
|
364
440
|
- vendor/faiss/faiss/utils/bf16.h
|
|
365
441
|
- vendor/faiss/faiss/utils/distances.cpp
|
|
366
442
|
- vendor/faiss/faiss/utils/distances.h
|
|
367
443
|
- vendor/faiss/faiss/utils/distances_dispatch.h
|
|
368
444
|
- vendor/faiss/faiss/utils/distances_fused/avx512.cpp
|
|
369
|
-
- vendor/faiss/faiss/utils/distances_fused/avx512.h
|
|
370
445
|
- vendor/faiss/faiss/utils/distances_fused/distances_fused.cpp
|
|
371
446
|
- vendor/faiss/faiss/utils/distances_fused/distances_fused.h
|
|
372
447
|
- vendor/faiss/faiss/utils/distances_fused/simdlib_based.cpp
|
|
373
|
-
- vendor/faiss/faiss/utils/distances_fused/
|
|
448
|
+
- vendor/faiss/faiss/utils/distances_fused/simdlib_based_neon.cpp
|
|
449
|
+
- vendor/faiss/faiss/utils/distances_fused/simdlib_kernel-inl.h
|
|
374
450
|
- vendor/faiss/faiss/utils/distances_simd.cpp
|
|
375
|
-
- vendor/faiss/faiss/utils/extra_distances-inl.h
|
|
376
451
|
- vendor/faiss/faiss/utils/extra_distances.cpp
|
|
377
452
|
- vendor/faiss/faiss/utils/extra_distances.h
|
|
378
453
|
- vendor/faiss/faiss/utils/fp16-arm.h
|
|
@@ -382,15 +457,24 @@ files:
|
|
|
382
457
|
- vendor/faiss/faiss/utils/hamming-inl.h
|
|
383
458
|
- vendor/faiss/faiss/utils/hamming.cpp
|
|
384
459
|
- vendor/faiss/faiss/utils/hamming.h
|
|
385
|
-
- vendor/faiss/faiss/utils/hamming_distance/avx2-inl.h
|
|
386
|
-
- vendor/faiss/faiss/utils/hamming_distance/avx512-inl.h
|
|
387
460
|
- vendor/faiss/faiss/utils/hamming_distance/common.h
|
|
388
|
-
- vendor/faiss/faiss/utils/hamming_distance/
|
|
389
|
-
- vendor/faiss/faiss/utils/hamming_distance/
|
|
390
|
-
- vendor/faiss/faiss/utils/hamming_distance/
|
|
461
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_avx2.cpp
|
|
462
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_avx512.cpp
|
|
463
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_avx512_spr.cpp
|
|
464
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx2.h
|
|
465
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx512.h
|
|
466
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx512_spr.h
|
|
467
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-generic.h
|
|
468
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-neon.h
|
|
469
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer-rvv.h
|
|
470
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_computer.h
|
|
471
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_impl.h
|
|
472
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_neon.cpp
|
|
473
|
+
- vendor/faiss/faiss/utils/hamming_distance/hamming_rvv.cpp
|
|
391
474
|
- vendor/faiss/faiss/utils/ordered_key_value.h
|
|
392
475
|
- vendor/faiss/faiss/utils/partitioning.cpp
|
|
393
476
|
- vendor/faiss/faiss/utils/partitioning.h
|
|
477
|
+
- vendor/faiss/faiss/utils/popcount.h
|
|
394
478
|
- vendor/faiss/faiss/utils/pq_code_distance.h
|
|
395
479
|
- vendor/faiss/faiss/utils/prefetch.h
|
|
396
480
|
- vendor/faiss/faiss/utils/quantize_lut.cpp
|
|
@@ -398,20 +482,31 @@ files:
|
|
|
398
482
|
- vendor/faiss/faiss/utils/rabitq_simd.h
|
|
399
483
|
- vendor/faiss/faiss/utils/random.cpp
|
|
400
484
|
- vendor/faiss/faiss/utils/random.h
|
|
485
|
+
- vendor/faiss/faiss/utils/simd_impl/IVFFlatScanner-inl.h
|
|
401
486
|
- vendor/faiss/faiss/utils/simd_impl/distances_aarch64.cpp
|
|
402
487
|
- vendor/faiss/faiss/utils/simd_impl/distances_arm_sve.cpp
|
|
403
488
|
- vendor/faiss/faiss/utils/simd_impl/distances_autovec-inl.h
|
|
404
489
|
- vendor/faiss/faiss/utils/simd_impl/distances_avx2.cpp
|
|
405
490
|
- vendor/faiss/faiss/utils/simd_impl/distances_avx512.cpp
|
|
491
|
+
- vendor/faiss/faiss/utils/simd_impl/distances_rvv.cpp
|
|
492
|
+
- vendor/faiss/faiss/utils/simd_impl/distances_simdlib256.h
|
|
406
493
|
- vendor/faiss/faiss/utils/simd_impl/distances_sse-inl.h
|
|
494
|
+
- vendor/faiss/faiss/utils/simd_impl/exhaustive_L2sqr_blas_cmax.h
|
|
495
|
+
- vendor/faiss/faiss/utils/simd_impl/hamming_impl.h
|
|
496
|
+
- vendor/faiss/faiss/utils/simd_impl/partitioning_avx2.cpp
|
|
497
|
+
- vendor/faiss/faiss/utils/simd_impl/partitioning_neon.cpp
|
|
498
|
+
- vendor/faiss/faiss/utils/simd_impl/partitioning_simdlib256.h
|
|
499
|
+
- vendor/faiss/faiss/utils/simd_impl/rabitq_avx2.cpp
|
|
500
|
+
- vendor/faiss/faiss/utils/simd_impl/rabitq_avx512.cpp
|
|
501
|
+
- vendor/faiss/faiss/utils/simd_impl/rabitq_avx512_spr.cpp
|
|
502
|
+
- vendor/faiss/faiss/utils/simd_impl/rabitq_neon.cpp
|
|
503
|
+
- vendor/faiss/faiss/utils/simd_impl/rabitq_rvv.cpp
|
|
504
|
+
- vendor/faiss/faiss/utils/simd_impl/super_kmeans_dispatch.h
|
|
505
|
+
- vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels.h
|
|
506
|
+
- vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx2.cpp
|
|
507
|
+
- vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx512.cpp
|
|
407
508
|
- vendor/faiss/faiss/utils/simd_levels.cpp
|
|
408
509
|
- vendor/faiss/faiss/utils/simd_levels.h
|
|
409
|
-
- vendor/faiss/faiss/utils/simdlib.h
|
|
410
|
-
- vendor/faiss/faiss/utils/simdlib_avx2.h
|
|
411
|
-
- vendor/faiss/faiss/utils/simdlib_avx512.h
|
|
412
|
-
- vendor/faiss/faiss/utils/simdlib_emulated.h
|
|
413
|
-
- vendor/faiss/faiss/utils/simdlib_neon.h
|
|
414
|
-
- vendor/faiss/faiss/utils/simdlib_ppc64.h
|
|
415
510
|
- vendor/faiss/faiss/utils/sorting.cpp
|
|
416
511
|
- vendor/faiss/faiss/utils/sorting.h
|
|
417
512
|
- vendor/faiss/faiss/utils/transpose/transpose-avx2-inl.h
|
|
@@ -436,7 +531,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
436
531
|
- !ruby/object:Gem::Version
|
|
437
532
|
version: '0'
|
|
438
533
|
requirements: []
|
|
439
|
-
rubygems_version: 4.0.
|
|
534
|
+
rubygems_version: 4.0.14
|
|
440
535
|
specification_version: 4
|
|
441
536
|
summary: Efficient similarity search and clustering for Ruby
|
|
442
537
|
test_files: []
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
#include <faiss/impl/RaBitQStats.h>
|
|
9
|
-
|
|
10
|
-
namespace faiss {
|
|
11
|
-
|
|
12
|
-
// NOLINTNEXTLINE(facebook-avoid-non-const-global-variables)
|
|
13
|
-
RaBitQStats rabitq_stats;
|
|
14
|
-
|
|
15
|
-
void RaBitQStats::reset() {
|
|
16
|
-
n_1bit_evaluations = 0;
|
|
17
|
-
n_multibit_evaluations = 0;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
double RaBitQStats::skip_percentage() const {
|
|
21
|
-
const size_t copy_n_1bit_evaluations = n_1bit_evaluations;
|
|
22
|
-
const size_t copy_n_multibit_evaluations = n_multibit_evaluations;
|
|
23
|
-
return copy_n_1bit_evaluations > 0
|
|
24
|
-
? 100.0 * (copy_n_1bit_evaluations - copy_n_multibit_evaluations) /
|
|
25
|
-
copy_n_1bit_evaluations
|
|
26
|
-
: 0.0;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
} // namespace faiss
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
#pragma once
|
|
9
|
-
|
|
10
|
-
#include <faiss/impl/platform_macros.h>
|
|
11
|
-
#include <cstddef>
|
|
12
|
-
|
|
13
|
-
namespace faiss {
|
|
14
|
-
|
|
15
|
-
/// Statistics for RaBitQ multi-bit two-stage search.
|
|
16
|
-
///
|
|
17
|
-
/// These stats are ONLY collected for multi-bit mode (nb_bits > 1).
|
|
18
|
-
/// In 1-bit mode, there is no two-stage filtering - all candidates are
|
|
19
|
-
/// evaluated with a single distance computation, so there is nothing
|
|
20
|
-
/// meaningful to track. For 1-bit mode, both counters remain 0.
|
|
21
|
-
///
|
|
22
|
-
/// Multi-bit mode uses a two-stage search:
|
|
23
|
-
/// Stage 1: Compute 1-bit lower bound distance for all candidates
|
|
24
|
-
/// Stage 2: Compute full multi-bit distance only for promising candidates
|
|
25
|
-
///
|
|
26
|
-
/// The skip_percentage() metric measures filtering effectiveness:
|
|
27
|
-
/// how many candidates were filtered out by the 1-bit lower bound
|
|
28
|
-
/// without needing the more expensive multi-bit distance computation.
|
|
29
|
-
///
|
|
30
|
-
/// WARNING: Statistics are not robust to internal threading nor to
|
|
31
|
-
/// concurrent RaBitQ searches. Use these values in a single-threaded
|
|
32
|
-
/// context to accurately gauge RaBitQ's filtering effectiveness.
|
|
33
|
-
/// Call reset() before search, then read stats after search completes.
|
|
34
|
-
struct RaBitQStats {
|
|
35
|
-
/// Number of candidates evaluated using 1-bit (lower bound) distance.
|
|
36
|
-
/// This is the first stage of two-stage search in multi-bit mode.
|
|
37
|
-
/// Always 0 in 1-bit mode (stats not tracked).
|
|
38
|
-
size_t n_1bit_evaluations = 0;
|
|
39
|
-
|
|
40
|
-
/// Number of candidates that passed 1-bit filtering and required
|
|
41
|
-
/// full multi-bit distance computation (second stage).
|
|
42
|
-
/// Always 0 in 1-bit mode (stats not tracked).
|
|
43
|
-
size_t n_multibit_evaluations = 0;
|
|
44
|
-
|
|
45
|
-
void reset();
|
|
46
|
-
|
|
47
|
-
/// Compute percentage of candidates skipped (filtered out by 1-bit stage).
|
|
48
|
-
/// Returns 0 if no candidates were evaluated (including 1-bit mode).
|
|
49
|
-
double skip_percentage() const;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
/// Global stats for RaBitQ indexes
|
|
53
|
-
// NOLINTNEXTLINE(facebook-avoid-non-const-global-variables)
|
|
54
|
-
FAISS_API extern RaBitQStats rabitq_stats;
|
|
55
|
-
|
|
56
|
-
} // namespace faiss
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
#pragma once
|
|
9
|
-
|
|
10
|
-
#include <cstdint>
|
|
11
|
-
#include <cstdlib>
|
|
12
|
-
|
|
13
|
-
#include <faiss/impl/CodePacker.h>
|
|
14
|
-
|
|
15
|
-
/** PQ4 SIMD packing and accumulation functions
|
|
16
|
-
*
|
|
17
|
-
* The basic kernel accumulates nq query vectors with bbs = nb * 2 * 16 vectors
|
|
18
|
-
* and produces an output matrix for that. It is interesting for nq * nb <= 4,
|
|
19
|
-
* otherwise register spilling becomes too large.
|
|
20
|
-
*
|
|
21
|
-
* The implementation of these functions is spread over 3 cpp files to reduce
|
|
22
|
-
* parallel compile times. Templates are instantiated explicitly.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
namespace faiss {
|
|
26
|
-
|
|
27
|
-
struct NormTableScaler;
|
|
28
|
-
struct SIMDResultHandler;
|
|
29
|
-
|
|
30
|
-
/** Pack codes for consumption by the SIMD kernels.
|
|
31
|
-
* The unused bytes are set to 0.
|
|
32
|
-
*
|
|
33
|
-
* @param codes input codes, size (ntotal, ceil(M / 2))
|
|
34
|
-
* @param ntotal number of input codes
|
|
35
|
-
* @param nb output number of codes (ntotal rounded up to a multiple of
|
|
36
|
-
* bbs)
|
|
37
|
-
* @param nsq number of sub-quantizers (=M rounded up to a multiple of 2)
|
|
38
|
-
* @param bbs size of database blocks (multiple of 32)
|
|
39
|
-
* @param blocks output array, size nb * nsq / 2.
|
|
40
|
-
* @param code_stride optional stride between consecutive codes (0 = use
|
|
41
|
-
default (M + 1) / 2)
|
|
42
|
-
*/
|
|
43
|
-
void pq4_pack_codes(
|
|
44
|
-
const uint8_t* codes,
|
|
45
|
-
size_t ntotal,
|
|
46
|
-
size_t M,
|
|
47
|
-
size_t nb,
|
|
48
|
-
size_t bbs,
|
|
49
|
-
size_t nsq,
|
|
50
|
-
uint8_t* blocks,
|
|
51
|
-
size_t code_stride = 0);
|
|
52
|
-
|
|
53
|
-
/** Same as pack_codes but write in a given range of the output,
|
|
54
|
-
* leaving the rest untouched. Assumes allocated entries are 0 on input.
|
|
55
|
-
*
|
|
56
|
-
* @param codes input codes, size (i1 - i0, ceil(M / 2))
|
|
57
|
-
* @param i0 first output code to write
|
|
58
|
-
* @param i1 last output code to write
|
|
59
|
-
* @param blocks output array, size at least ceil(i1 / bbs) * bbs * nsq / 2
|
|
60
|
-
* @param code_stride optional stride between consecutive codes (0 = use
|
|
61
|
-
* default (M + 1) / 2)
|
|
62
|
-
* @param block_stride stride in bytes between consecutive blocks.
|
|
63
|
-
*/
|
|
64
|
-
void pq4_pack_codes_range(
|
|
65
|
-
const uint8_t* codes,
|
|
66
|
-
size_t M,
|
|
67
|
-
size_t i0,
|
|
68
|
-
size_t i1,
|
|
69
|
-
size_t bbs,
|
|
70
|
-
size_t nsq,
|
|
71
|
-
uint8_t* blocks,
|
|
72
|
-
size_t code_stride,
|
|
73
|
-
size_t block_stride);
|
|
74
|
-
|
|
75
|
-
/** get a single element from a packed codes table
|
|
76
|
-
*
|
|
77
|
-
* @param vector_id vector id
|
|
78
|
-
* @param sq subquantizer (< nsq)
|
|
79
|
-
*/
|
|
80
|
-
uint8_t pq4_get_packed_element(
|
|
81
|
-
const uint8_t* data,
|
|
82
|
-
size_t bbs,
|
|
83
|
-
size_t nsq,
|
|
84
|
-
size_t vector_id,
|
|
85
|
-
size_t sq);
|
|
86
|
-
|
|
87
|
-
/** set a single element "code" into a packed codes table
|
|
88
|
-
*
|
|
89
|
-
* @param vector_id vector id
|
|
90
|
-
* @param sq subquantizer (< nsq)
|
|
91
|
-
*/
|
|
92
|
-
void pq4_set_packed_element(
|
|
93
|
-
uint8_t* data,
|
|
94
|
-
uint8_t code,
|
|
95
|
-
size_t bbs,
|
|
96
|
-
size_t nsq,
|
|
97
|
-
size_t vector_id,
|
|
98
|
-
size_t sq);
|
|
99
|
-
|
|
100
|
-
/** CodePacker API for the PQ4 fast-scan */
|
|
101
|
-
struct CodePackerPQ4 : CodePacker {
|
|
102
|
-
size_t nsq;
|
|
103
|
-
|
|
104
|
-
CodePackerPQ4(size_t nsq, size_t bbs);
|
|
105
|
-
|
|
106
|
-
CodePacker* clone() const final;
|
|
107
|
-
|
|
108
|
-
void pack_1(const uint8_t* flat_code, size_t offset, uint8_t* block)
|
|
109
|
-
const final;
|
|
110
|
-
void unpack_1(const uint8_t* block, size_t offset, uint8_t* flat_code)
|
|
111
|
-
const final;
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
/** Pack Look-up table for consumption by the kernel.
|
|
115
|
-
*
|
|
116
|
-
* @param nq number of queries
|
|
117
|
-
* @param nsq number of sub-quantizers (multiple of 2)
|
|
118
|
-
* @param src input array, size (nq, 16)
|
|
119
|
-
* @param dest output array, size (nq, 16)
|
|
120
|
-
*/
|
|
121
|
-
void pq4_pack_LUT(int nq, int nsq, const uint8_t* src, uint8_t* dest);
|
|
122
|
-
|
|
123
|
-
/** Loop over database elements and accumulate results into result handler
|
|
124
|
-
*
|
|
125
|
-
* @param nq number of queries
|
|
126
|
-
* @param nb number of database elements
|
|
127
|
-
* @param bbs size of database blocks (multiple of 32)
|
|
128
|
-
* @param nsq number of sub-quantizers (multiple of 2)
|
|
129
|
-
* @param codes packed codes array
|
|
130
|
-
* @param LUT packed look-up table
|
|
131
|
-
* @param scaler scaler to scale the encoded norm
|
|
132
|
-
* @param block_stride stride in bytes between consecutive blocks.
|
|
133
|
-
*/
|
|
134
|
-
void pq4_accumulate_loop(
|
|
135
|
-
int nq,
|
|
136
|
-
size_t nb,
|
|
137
|
-
int bbs,
|
|
138
|
-
int nsq,
|
|
139
|
-
const uint8_t* codes,
|
|
140
|
-
const uint8_t* LUT,
|
|
141
|
-
SIMDResultHandler& res,
|
|
142
|
-
const NormTableScaler* scaler,
|
|
143
|
-
size_t block_stride);
|
|
144
|
-
|
|
145
|
-
/* qbs versions, supported only for bbs=32.
|
|
146
|
-
*
|
|
147
|
-
* The kernel function runs the kernel for *several* query blocks
|
|
148
|
-
* and bbs database vectors. The sizes of the blocks are encoded in qbs as
|
|
149
|
-
* base-16 digits.
|
|
150
|
-
*
|
|
151
|
-
* For example, qbs = 0x1223 means that the kernel will be run 4 times, the
|
|
152
|
-
* first time with 3 query vectors, second time with 2 query vectors, then 2
|
|
153
|
-
* vectors again and finally with 1 query vector. The output block will thus be
|
|
154
|
-
* nq = 3 + 2 + 2 + 1 = 6 queries. For a given total block size, the optimal
|
|
155
|
-
* decomposition into sub-blocks (measured empirically) is given by
|
|
156
|
-
* preferred_qbs().
|
|
157
|
-
*/
|
|
158
|
-
|
|
159
|
-
/* compute the number of queries from a base-16 decomposition */
|
|
160
|
-
int pq4_qbs_to_nq(int qbs);
|
|
161
|
-
|
|
162
|
-
/** return the preferred decomposition in blocks for a nb of queries. */
|
|
163
|
-
int pq4_preferred_qbs(int nq);
|
|
164
|
-
|
|
165
|
-
/** Pack Look-up table for consumption by the kernel.
|
|
166
|
-
*
|
|
167
|
-
* @param qbs 4-bit encoded number of query blocks, the total number of
|
|
168
|
-
* queries handled (nq) is deduced from it
|
|
169
|
-
* @param nsq number of sub-quantizers (multiple of 2)
|
|
170
|
-
* @param src input array, size (nq, 16)
|
|
171
|
-
* @param dest output array, size (nq, 16)
|
|
172
|
-
* @return nq
|
|
173
|
-
*/
|
|
174
|
-
int pq4_pack_LUT_qbs(int fqbs, int nsq, const uint8_t* src, uint8_t* dest);
|
|
175
|
-
|
|
176
|
-
/** Same as pq4_pack_LUT_qbs, except the source vectors are remapped with q_map
|
|
177
|
-
*/
|
|
178
|
-
int pq4_pack_LUT_qbs_q_map(
|
|
179
|
-
int qbs,
|
|
180
|
-
int nsq,
|
|
181
|
-
const uint8_t* src,
|
|
182
|
-
const int* q_map,
|
|
183
|
-
uint8_t* dest);
|
|
184
|
-
|
|
185
|
-
/** Run accumulation loop.
|
|
186
|
-
*
|
|
187
|
-
* @param qbs 4-bit encoded number of queries
|
|
188
|
-
* @param nb number of database codes (multiple of bbs)
|
|
189
|
-
* @param nsq number of sub-quantizers
|
|
190
|
-
* @param codes encoded database vectors (packed)
|
|
191
|
-
* @param LUT look-up table (packed)
|
|
192
|
-
* @param res call-back for the results
|
|
193
|
-
* @param scaler scaler to scale the encoded norm
|
|
194
|
-
* @param block_stride stride in bytes between consecutive blocks.
|
|
195
|
-
*/
|
|
196
|
-
void pq4_accumulate_loop_qbs(
|
|
197
|
-
int qbs,
|
|
198
|
-
size_t nb,
|
|
199
|
-
int nsq,
|
|
200
|
-
const uint8_t* codes,
|
|
201
|
-
const uint8_t* LUT,
|
|
202
|
-
SIMDResultHandler& res,
|
|
203
|
-
const NormTableScaler* scaler,
|
|
204
|
-
size_t block_stride);
|
|
205
|
-
|
|
206
|
-
/** Wrapper of pq4_accumulate_loop_qbs using simple StoreResultHandler
|
|
207
|
-
* and DummyScaler
|
|
208
|
-
*
|
|
209
|
-
* @param nq number of queries
|
|
210
|
-
* @param ntotal2 number of database elements (multiple of 32)
|
|
211
|
-
* @param nsq number of sub-quantizers (muliple of 2)
|
|
212
|
-
* @param codes packed codes array
|
|
213
|
-
* @param LUT packed look-up table
|
|
214
|
-
* @param accu array to store the results
|
|
215
|
-
*/
|
|
216
|
-
void accumulate_to_mem(
|
|
217
|
-
int nq,
|
|
218
|
-
size_t ntotal2,
|
|
219
|
-
int nsq,
|
|
220
|
-
const uint8_t* codes,
|
|
221
|
-
const uint8_t* LUT,
|
|
222
|
-
uint16_t* accu);
|
|
223
|
-
|
|
224
|
-
} // namespace faiss
|