faiss 0.1.3 → 0.1.4
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 +4 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/ext/faiss/extconf.rb +1 -1
- data/lib/faiss/version.rb +1 -1
- data/vendor/faiss/faiss/AutoTune.cpp +36 -33
- data/vendor/faiss/faiss/AutoTune.h +6 -3
- data/vendor/faiss/faiss/Clustering.cpp +16 -12
- data/vendor/faiss/faiss/Index.cpp +3 -4
- data/vendor/faiss/faiss/Index.h +3 -3
- data/vendor/faiss/faiss/IndexBinary.cpp +3 -4
- data/vendor/faiss/faiss/IndexBinary.h +1 -1
- data/vendor/faiss/faiss/IndexBinaryHash.cpp +2 -12
- data/vendor/faiss/faiss/IndexBinaryIVF.cpp +1 -2
- data/vendor/faiss/faiss/IndexFlat.cpp +0 -148
- data/vendor/faiss/faiss/IndexFlat.h +0 -51
- data/vendor/faiss/faiss/IndexHNSW.cpp +4 -5
- data/vendor/faiss/faiss/IndexIVF.cpp +118 -31
- data/vendor/faiss/faiss/IndexIVF.h +22 -15
- data/vendor/faiss/faiss/IndexIVFFlat.cpp +3 -3
- data/vendor/faiss/faiss/IndexIVFFlat.h +2 -1
- data/vendor/faiss/faiss/IndexIVFPQ.cpp +39 -15
- data/vendor/faiss/faiss/IndexIVFPQ.h +25 -9
- data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +1116 -0
- data/vendor/faiss/faiss/IndexIVFPQFastScan.h +166 -0
- data/vendor/faiss/faiss/IndexIVFPQR.cpp +8 -9
- data/vendor/faiss/faiss/IndexIVFPQR.h +2 -1
- data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +1 -2
- data/vendor/faiss/faiss/IndexPQ.cpp +34 -18
- data/vendor/faiss/faiss/IndexPQFastScan.cpp +536 -0
- data/vendor/faiss/faiss/IndexPQFastScan.h +111 -0
- data/vendor/faiss/faiss/IndexPreTransform.cpp +47 -0
- data/vendor/faiss/faiss/IndexPreTransform.h +2 -0
- data/vendor/faiss/faiss/IndexRefine.cpp +256 -0
- data/vendor/faiss/faiss/IndexRefine.h +73 -0
- data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +2 -2
- data/vendor/faiss/faiss/IndexScalarQuantizer.h +1 -1
- data/vendor/faiss/faiss/gpu/GpuDistance.h +1 -1
- data/vendor/faiss/faiss/gpu/GpuIndex.h +16 -9
- data/vendor/faiss/faiss/gpu/GpuIndexBinaryFlat.h +8 -1
- data/vendor/faiss/faiss/gpu/GpuIndexFlat.h +11 -11
- data/vendor/faiss/faiss/gpu/GpuIndexIVF.h +19 -2
- data/vendor/faiss/faiss/gpu/GpuIndexIVFFlat.h +28 -2
- data/vendor/faiss/faiss/gpu/GpuIndexIVFPQ.h +24 -14
- data/vendor/faiss/faiss/gpu/GpuIndexIVFScalarQuantizer.h +29 -2
- data/vendor/faiss/faiss/gpu/GpuResources.h +4 -0
- data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +60 -27
- data/vendor/faiss/faiss/gpu/StandardGpuResources.h +28 -6
- data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.cpp +547 -0
- data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.h +51 -0
- data/vendor/faiss/faiss/gpu/impl/RemapIndices.cpp +3 -3
- data/vendor/faiss/faiss/gpu/impl/RemapIndices.h +3 -2
- data/vendor/faiss/faiss/gpu/test/TestCodePacking.cpp +274 -0
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +7 -2
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +5 -1
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFScalarQuantizer.cpp +231 -0
- data/vendor/faiss/faiss/gpu/test/TestUtils.h +33 -0
- data/vendor/faiss/faiss/gpu/utils/StackDeviceMemory.cpp +1 -0
- data/vendor/faiss/faiss/gpu/utils/StaticUtils.h +6 -0
- data/vendor/faiss/faiss/gpu/utils/Timer.cpp +5 -6
- data/vendor/faiss/faiss/gpu/utils/Timer.h +2 -2
- data/vendor/faiss/faiss/impl/AuxIndexStructures.h +5 -4
- data/vendor/faiss/faiss/impl/HNSW.cpp +2 -4
- data/vendor/faiss/faiss/impl/PolysemousTraining.h +4 -4
- data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +22 -12
- data/vendor/faiss/faiss/impl/ProductQuantizer.h +2 -0
- data/vendor/faiss/faiss/impl/ResultHandler.h +452 -0
- data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +29 -19
- data/vendor/faiss/faiss/impl/ScalarQuantizer.h +6 -0
- data/vendor/faiss/faiss/impl/index_read.cpp +64 -96
- data/vendor/faiss/faiss/impl/index_write.cpp +34 -25
- data/vendor/faiss/faiss/impl/io.cpp +33 -2
- data/vendor/faiss/faiss/impl/io.h +7 -2
- data/vendor/faiss/faiss/impl/lattice_Zn.cpp +1 -15
- data/vendor/faiss/faiss/impl/platform_macros.h +44 -0
- data/vendor/faiss/faiss/impl/pq4_fast_scan.cpp +272 -0
- data/vendor/faiss/faiss/impl/pq4_fast_scan.h +169 -0
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +180 -0
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp +354 -0
- data/vendor/faiss/faiss/impl/simd_result_handlers.h +559 -0
- data/vendor/faiss/faiss/index_factory.cpp +112 -7
- data/vendor/faiss/faiss/index_io.h +1 -48
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +151 -0
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.h +76 -0
- data/vendor/faiss/faiss/{DirectMap.cpp → invlists/DirectMap.cpp} +1 -1
- data/vendor/faiss/faiss/{DirectMap.h → invlists/DirectMap.h} +1 -1
- data/vendor/faiss/faiss/{InvertedLists.cpp → invlists/InvertedLists.cpp} +72 -1
- data/vendor/faiss/faiss/{InvertedLists.h → invlists/InvertedLists.h} +32 -1
- data/vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp +107 -0
- data/vendor/faiss/faiss/invlists/InvertedListsIOHook.h +63 -0
- data/vendor/faiss/faiss/{OnDiskInvertedLists.cpp → invlists/OnDiskInvertedLists.cpp} +21 -6
- data/vendor/faiss/faiss/{OnDiskInvertedLists.h → invlists/OnDiskInvertedLists.h} +5 -2
- data/vendor/faiss/faiss/python/python_callbacks.h +8 -1
- data/vendor/faiss/faiss/utils/AlignedTable.h +141 -0
- data/vendor/faiss/faiss/utils/Heap.cpp +2 -4
- data/vendor/faiss/faiss/utils/Heap.h +61 -50
- data/vendor/faiss/faiss/utils/distances.cpp +164 -319
- data/vendor/faiss/faiss/utils/distances.h +28 -20
- data/vendor/faiss/faiss/utils/distances_simd.cpp +277 -49
- data/vendor/faiss/faiss/utils/extra_distances.cpp +1 -2
- data/vendor/faiss/faiss/utils/hamming-inl.h +4 -4
- data/vendor/faiss/faiss/utils/hamming.cpp +3 -6
- data/vendor/faiss/faiss/utils/hamming.h +2 -7
- data/vendor/faiss/faiss/utils/ordered_key_value.h +98 -0
- data/vendor/faiss/faiss/utils/partitioning.cpp +1256 -0
- data/vendor/faiss/faiss/utils/partitioning.h +69 -0
- data/vendor/faiss/faiss/utils/quantize_lut.cpp +277 -0
- data/vendor/faiss/faiss/utils/quantize_lut.h +80 -0
- data/vendor/faiss/faiss/utils/simdlib.h +31 -0
- data/vendor/faiss/faiss/utils/simdlib_avx2.h +461 -0
- data/vendor/faiss/faiss/utils/simdlib_emulated.h +589 -0
- metadata +43 -141
- data/vendor/faiss/benchs/bench_6bit_codec.cpp +0 -80
- data/vendor/faiss/c_api/AutoTune_c.cpp +0 -83
- data/vendor/faiss/c_api/AutoTune_c.h +0 -66
- data/vendor/faiss/c_api/Clustering_c.cpp +0 -145
- data/vendor/faiss/c_api/Clustering_c.h +0 -123
- data/vendor/faiss/c_api/IndexFlat_c.cpp +0 -140
- data/vendor/faiss/c_api/IndexFlat_c.h +0 -115
- data/vendor/faiss/c_api/IndexIVFFlat_c.cpp +0 -64
- data/vendor/faiss/c_api/IndexIVFFlat_c.h +0 -58
- data/vendor/faiss/c_api/IndexIVF_c.cpp +0 -99
- data/vendor/faiss/c_api/IndexIVF_c.h +0 -142
- data/vendor/faiss/c_api/IndexLSH_c.cpp +0 -37
- data/vendor/faiss/c_api/IndexLSH_c.h +0 -40
- data/vendor/faiss/c_api/IndexPreTransform_c.cpp +0 -21
- data/vendor/faiss/c_api/IndexPreTransform_c.h +0 -32
- data/vendor/faiss/c_api/IndexShards_c.cpp +0 -38
- data/vendor/faiss/c_api/IndexShards_c.h +0 -39
- data/vendor/faiss/c_api/Index_c.cpp +0 -105
- data/vendor/faiss/c_api/Index_c.h +0 -183
- data/vendor/faiss/c_api/MetaIndexes_c.cpp +0 -49
- data/vendor/faiss/c_api/MetaIndexes_c.h +0 -49
- data/vendor/faiss/c_api/clone_index_c.cpp +0 -23
- data/vendor/faiss/c_api/clone_index_c.h +0 -32
- data/vendor/faiss/c_api/error_c.h +0 -42
- data/vendor/faiss/c_api/error_impl.cpp +0 -27
- data/vendor/faiss/c_api/error_impl.h +0 -16
- data/vendor/faiss/c_api/faiss_c.h +0 -58
- data/vendor/faiss/c_api/gpu/GpuAutoTune_c.cpp +0 -98
- data/vendor/faiss/c_api/gpu/GpuAutoTune_c.h +0 -56
- data/vendor/faiss/c_api/gpu/GpuClonerOptions_c.cpp +0 -52
- data/vendor/faiss/c_api/gpu/GpuClonerOptions_c.h +0 -68
- data/vendor/faiss/c_api/gpu/GpuIndex_c.cpp +0 -17
- data/vendor/faiss/c_api/gpu/GpuIndex_c.h +0 -30
- data/vendor/faiss/c_api/gpu/GpuIndicesOptions_c.h +0 -38
- data/vendor/faiss/c_api/gpu/GpuResources_c.cpp +0 -86
- data/vendor/faiss/c_api/gpu/GpuResources_c.h +0 -66
- data/vendor/faiss/c_api/gpu/StandardGpuResources_c.cpp +0 -54
- data/vendor/faiss/c_api/gpu/StandardGpuResources_c.h +0 -53
- data/vendor/faiss/c_api/gpu/macros_impl.h +0 -42
- data/vendor/faiss/c_api/impl/AuxIndexStructures_c.cpp +0 -220
- data/vendor/faiss/c_api/impl/AuxIndexStructures_c.h +0 -149
- data/vendor/faiss/c_api/index_factory_c.cpp +0 -26
- data/vendor/faiss/c_api/index_factory_c.h +0 -30
- data/vendor/faiss/c_api/index_io_c.cpp +0 -42
- data/vendor/faiss/c_api/index_io_c.h +0 -50
- data/vendor/faiss/c_api/macros_impl.h +0 -110
- data/vendor/faiss/demos/demo_imi_flat.cpp +0 -154
- data/vendor/faiss/demos/demo_imi_pq.cpp +0 -203
- data/vendor/faiss/demos/demo_ivfpq_indexing.cpp +0 -151
- data/vendor/faiss/demos/demo_sift1M.cpp +0 -252
- data/vendor/faiss/demos/demo_weighted_kmeans.cpp +0 -185
- data/vendor/faiss/misc/test_blas.cpp +0 -87
- data/vendor/faiss/tests/test_binary_flat.cpp +0 -62
- data/vendor/faiss/tests/test_dealloc_invlists.cpp +0 -188
- data/vendor/faiss/tests/test_ivfpq_codec.cpp +0 -70
- data/vendor/faiss/tests/test_ivfpq_indexing.cpp +0 -100
- data/vendor/faiss/tests/test_lowlevel_ivf.cpp +0 -573
- data/vendor/faiss/tests/test_merge.cpp +0 -260
- data/vendor/faiss/tests/test_omp_threads.cpp +0 -14
- data/vendor/faiss/tests/test_ondisk_ivf.cpp +0 -225
- data/vendor/faiss/tests/test_pairs_decoding.cpp +0 -193
- data/vendor/faiss/tests/test_params_override.cpp +0 -236
- data/vendor/faiss/tests/test_pq_encoding.cpp +0 -98
- data/vendor/faiss/tests/test_sliding_ivf.cpp +0 -246
- data/vendor/faiss/tests/test_threaded_index.cpp +0 -253
- data/vendor/faiss/tests/test_transfer_invlists.cpp +0 -159
- data/vendor/faiss/tutorial/cpp/1-Flat.cpp +0 -104
- data/vendor/faiss/tutorial/cpp/2-IVFFlat.cpp +0 -85
- data/vendor/faiss/tutorial/cpp/3-IVFPQ.cpp +0 -98
- data/vendor/faiss/tutorial/cpp/4-GPU.cpp +0 -122
- data/vendor/faiss/tutorial/cpp/5-Multiple-GPUs.cpp +0 -104
@@ -1,49 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Facebook, Inc. and its 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
|
-
// Copyright 2004-present Facebook. All Rights Reserved.
|
9
|
-
// -*- c++ -*-
|
10
|
-
|
11
|
-
#include "MetaIndexes_c.h"
|
12
|
-
#include "MetaIndexes.h"
|
13
|
-
#include "macros_impl.h"
|
14
|
-
|
15
|
-
using faiss::Index;
|
16
|
-
using faiss::IndexIDMap;
|
17
|
-
using faiss::IndexIDMap2;
|
18
|
-
|
19
|
-
DEFINE_GETTER(IndexIDMap, int, own_fields)
|
20
|
-
DEFINE_SETTER(IndexIDMap, int, own_fields)
|
21
|
-
|
22
|
-
int faiss_IndexIDMap_new(FaissIndexIDMap** p_index, FaissIndex* index) {
|
23
|
-
try {
|
24
|
-
auto out = new IndexIDMap(reinterpret_cast<Index*>(index));
|
25
|
-
*p_index = reinterpret_cast<FaissIndexIDMap*>(out);
|
26
|
-
} CATCH_AND_HANDLE
|
27
|
-
}
|
28
|
-
|
29
|
-
void faiss_IndexIDMap_id_map(FaissIndexIDMap* index, idx_t** p_id_map, size_t* p_size) {
|
30
|
-
auto idx = reinterpret_cast<IndexIDMap*>(index);
|
31
|
-
if (p_id_map)
|
32
|
-
*p_id_map = idx->id_map.data();
|
33
|
-
if (p_size)
|
34
|
-
*p_size = idx->id_map.size();
|
35
|
-
}
|
36
|
-
|
37
|
-
int faiss_IndexIDMap2_new(FaissIndexIDMap2** p_index, FaissIndex* index) {
|
38
|
-
try {
|
39
|
-
auto out = new IndexIDMap2(reinterpret_cast<Index*>(index));
|
40
|
-
*p_index = reinterpret_cast<FaissIndexIDMap2*>(out);
|
41
|
-
} CATCH_AND_HANDLE
|
42
|
-
}
|
43
|
-
|
44
|
-
int faiss_IndexIDMap2_construct_rev_map(FaissIndexIDMap2* index) {
|
45
|
-
try {
|
46
|
-
reinterpret_cast<IndexIDMap2*>(index)->construct_rev_map();
|
47
|
-
} CATCH_AND_HANDLE
|
48
|
-
}
|
49
|
-
|
@@ -1,49 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Facebook, Inc. and its 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
|
-
// Copyright 2004-present Facebook. All Rights Reserved.
|
9
|
-
// -*- c++ -*-
|
10
|
-
|
11
|
-
#ifndef METAINDEXES_C_H
|
12
|
-
#define METAINDEXES_C_H
|
13
|
-
|
14
|
-
#include "faiss_c.h"
|
15
|
-
#include "Index_c.h"
|
16
|
-
|
17
|
-
#ifdef __cplusplus
|
18
|
-
extern "C" {
|
19
|
-
#endif
|
20
|
-
|
21
|
-
/** Index that translates search results to ids */
|
22
|
-
FAISS_DECLARE_CLASS_INHERITED(IndexIDMap, Index)
|
23
|
-
|
24
|
-
FAISS_DECLARE_GETTER_SETTER(IndexIDMap, int, own_fields)
|
25
|
-
|
26
|
-
int faiss_IndexIDMap_new(FaissIndexIDMap** p_index, FaissIndex* index);
|
27
|
-
|
28
|
-
/** get a pointer to the index map's internal ID vector (the `id_map` field). The
|
29
|
-
* outputs of this function become invalid after any operation that can modify the index.
|
30
|
-
*
|
31
|
-
* @param index opaque pointer to index object
|
32
|
-
* @param p_id_map output, the pointer to the beginning of `id_map`.
|
33
|
-
* @param p_size output, the current length of `id_map`.
|
34
|
-
*/
|
35
|
-
void faiss_IndexIDMap_id_map(FaissIndexIDMap* index, idx_t** p_id_map, size_t* p_size);
|
36
|
-
|
37
|
-
/** same as IndexIDMap but also provides an efficient reconstruction
|
38
|
-
implementation via a 2-way index */
|
39
|
-
FAISS_DECLARE_CLASS_INHERITED(IndexIDMap2, IndexIDMap)
|
40
|
-
|
41
|
-
int faiss_IndexIDMap2_new(FaissIndexIDMap2** p_index, FaissIndex* index);
|
42
|
-
|
43
|
-
/// make the rev_map from scratch
|
44
|
-
int faiss_IndexIDMap2_construct_rev_map(FaissIndexIDMap2* index);
|
45
|
-
|
46
|
-
#ifdef __cplusplus
|
47
|
-
}
|
48
|
-
#endif
|
49
|
-
#endif
|
@@ -1,23 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Facebook, Inc. and its 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
|
-
// Copyright 2004-present Facebook. All Rights Reserved
|
9
|
-
// -*- c++ -*-
|
10
|
-
// I/O code for indexes
|
11
|
-
|
12
|
-
#include "clone_index_c.h"
|
13
|
-
#include "clone_index.h"
|
14
|
-
#include "macros_impl.h"
|
15
|
-
|
16
|
-
using faiss::Index;
|
17
|
-
|
18
|
-
int faiss_clone_index (const FaissIndex *idx, FaissIndex **p_out) {
|
19
|
-
try {
|
20
|
-
auto out = faiss::clone_index(reinterpret_cast<const Index*>(idx));
|
21
|
-
*p_out = reinterpret_cast<FaissIndex*>(out);
|
22
|
-
} CATCH_AND_HANDLE
|
23
|
-
}
|
@@ -1,32 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Facebook, Inc. and its 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
|
-
// Copyright 2004-present Facebook. All Rights Reserved
|
9
|
-
// -*- c++ -*-
|
10
|
-
// I/O code for indexes
|
11
|
-
|
12
|
-
|
13
|
-
#ifndef FAISS_CLONE_INDEX_C_H
|
14
|
-
#define FAISS_CLONE_INDEX_C_H
|
15
|
-
|
16
|
-
#include <stdio.h>
|
17
|
-
#include "faiss_c.h"
|
18
|
-
#include "Index_c.h"
|
19
|
-
|
20
|
-
#ifdef __cplusplus
|
21
|
-
extern "C" {
|
22
|
-
#endif
|
23
|
-
|
24
|
-
/* cloning functions */
|
25
|
-
|
26
|
-
/** Clone an index. This is equivalent to `faiss::clone_index` */
|
27
|
-
int faiss_clone_index (const FaissIndex *, FaissIndex ** p_out);
|
28
|
-
|
29
|
-
#ifdef __cplusplus
|
30
|
-
}
|
31
|
-
#endif
|
32
|
-
#endif
|
@@ -1,42 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Facebook, Inc. and its 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
|
-
// Copyright 2004-present Facebook. All Rights Reserved.
|
9
|
-
// -*- c -*-
|
10
|
-
|
11
|
-
#ifndef FAISS_ERROR_C_H
|
12
|
-
#define FAISS_ERROR_C_H
|
13
|
-
|
14
|
-
#ifdef __cplusplus
|
15
|
-
extern "C" {
|
16
|
-
#endif
|
17
|
-
|
18
|
-
/// An error code which depends on the exception thrown from the previous
|
19
|
-
/// operation. See `faiss_get_last_error` to retrieve the error message.
|
20
|
-
typedef enum FaissErrorCode {
|
21
|
-
/// No error
|
22
|
-
OK = 0,
|
23
|
-
/// Any exception other than Faiss or standard C++ library exceptions
|
24
|
-
UNKNOWN_EXCEPT = -1,
|
25
|
-
/// Faiss library exception
|
26
|
-
FAISS_EXCEPT = -2,
|
27
|
-
/// Standard C++ library exception
|
28
|
-
STD_EXCEPT = -4
|
29
|
-
} FaissErrorCode;
|
30
|
-
|
31
|
-
/**
|
32
|
-
* Get the error message of the last failed operation performed by Faiss.
|
33
|
-
* The given pointer is only invalid until another Faiss function is
|
34
|
-
* called.
|
35
|
-
*/
|
36
|
-
const char* faiss_get_last_error();
|
37
|
-
|
38
|
-
#ifdef __cplusplus
|
39
|
-
}
|
40
|
-
#endif
|
41
|
-
|
42
|
-
#endif
|
@@ -1,27 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Facebook, Inc. and its 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
|
-
// Copyright 2004-present Facebook. All Rights Reserved.
|
9
|
-
// -*- c++ -*-
|
10
|
-
|
11
|
-
#include "error_c.h"
|
12
|
-
#include "error_impl.h"
|
13
|
-
#include "FaissException.h"
|
14
|
-
#include <exception>
|
15
|
-
|
16
|
-
thread_local std::exception_ptr faiss_last_exception;
|
17
|
-
|
18
|
-
const char* faiss_get_last_error() {
|
19
|
-
if (faiss_last_exception) {
|
20
|
-
try {
|
21
|
-
std::rethrow_exception(faiss_last_exception);
|
22
|
-
} catch (std::exception& e) {
|
23
|
-
return e.what();
|
24
|
-
}
|
25
|
-
}
|
26
|
-
return nullptr;
|
27
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Facebook, Inc. and its 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
|
-
// Copyright 2004-present Facebook. All Rights Reserved.
|
9
|
-
// -*- c++ -*-
|
10
|
-
|
11
|
-
#include <exception>
|
12
|
-
|
13
|
-
/** global variable for holding the last exception thrown by
|
14
|
-
* calls to Faiss functions through the C API
|
15
|
-
*/
|
16
|
-
extern thread_local std::exception_ptr faiss_last_exception;
|
@@ -1,58 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Facebook, Inc. and its 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
|
-
// Copyright 2004-present Facebook. All Rights Reserved.
|
9
|
-
// -*- c -*-
|
10
|
-
|
11
|
-
/// Macros and typedefs for C wrapper API declarations
|
12
|
-
|
13
|
-
#ifndef FAISS_C_H
|
14
|
-
#define FAISS_C_H
|
15
|
-
|
16
|
-
#include <stdint.h>
|
17
|
-
|
18
|
-
typedef int64_t faiss_idx_t; ///< all indices are this type
|
19
|
-
typedef faiss_idx_t idx_t;
|
20
|
-
typedef float faiss_component_t; ///< all vector components are this type
|
21
|
-
typedef float faiss_distance_t; ///< all distances between vectors are this type
|
22
|
-
|
23
|
-
/// Declare an opaque type for a class type `clazz`.
|
24
|
-
#define FAISS_DECLARE_CLASS(clazz) \
|
25
|
-
typedef struct Faiss ## clazz ## _H Faiss ## clazz;
|
26
|
-
|
27
|
-
/// Declare an opaque type for a class type `clazz`, while
|
28
|
-
/// actually aliasing it to an existing parent class type `parent`.
|
29
|
-
#define FAISS_DECLARE_CLASS_INHERITED(clazz, parent) \
|
30
|
-
typedef struct Faiss ## parent ## _H Faiss ## clazz;
|
31
|
-
|
32
|
-
/// Declare a dynamic downcast operation from a base `FaissIndex*` pointer
|
33
|
-
/// type to a more specific index type. The function returns the same pointer
|
34
|
-
/// if the downcast is valid, and `NULL` otherwise.
|
35
|
-
#define FAISS_DECLARE_INDEX_DOWNCAST(clazz) \
|
36
|
-
Faiss ## clazz * faiss_ ## clazz ## _cast (FaissIndex*);
|
37
|
-
|
38
|
-
/// Declare a getter for the field `name` in class `clazz`,
|
39
|
-
/// of return type `ty`
|
40
|
-
#define FAISS_DECLARE_GETTER(clazz, ty, name) \
|
41
|
-
ty faiss_ ## clazz ## _ ## name (const Faiss ## clazz *);
|
42
|
-
|
43
|
-
/// Declare a setter for the field `name` in class `clazz`,
|
44
|
-
/// in which the user provides a value of type `ty`
|
45
|
-
#define FAISS_DECLARE_SETTER(clazz, ty, name) \
|
46
|
-
void faiss_ ## clazz ## _set_ ## name (Faiss ## clazz *, ty);
|
47
|
-
|
48
|
-
/// Declare a getter and setter for the field `name` in class `clazz`.
|
49
|
-
#define FAISS_DECLARE_GETTER_SETTER(clazz, ty, name) \
|
50
|
-
FAISS_DECLARE_GETTER(clazz, ty, name) \
|
51
|
-
FAISS_DECLARE_SETTER(clazz, ty, name)
|
52
|
-
|
53
|
-
/// Declare a destructor function which frees an object of
|
54
|
-
/// type `clazz`.
|
55
|
-
#define FAISS_DECLARE_DESTRUCTOR(clazz) \
|
56
|
-
void faiss_ ## clazz ## _free (Faiss ## clazz *obj);
|
57
|
-
|
58
|
-
#endif
|
@@ -1,98 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Facebook, Inc. and its 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
|
-
// Copyright 2004-present Facebook. All Rights Reserved.
|
9
|
-
// -*- c++ -*-
|
10
|
-
|
11
|
-
#include "GpuAutoTune_c.h"
|
12
|
-
#include "GpuClonerOptions_c.h"
|
13
|
-
#include "macros_impl.h"
|
14
|
-
#include "Index.h"
|
15
|
-
#include <faiss/gpu/GpuCloner.h>
|
16
|
-
#include <faiss/gpu/GpuResources.h>
|
17
|
-
#include <faiss/gpu/GpuAutoTune.h>
|
18
|
-
#include <faiss/gpu/GpuClonerOptions.h>
|
19
|
-
#include <vector>
|
20
|
-
|
21
|
-
using faiss::Index;
|
22
|
-
using faiss::gpu::GpuResources;
|
23
|
-
using faiss::gpu::GpuClonerOptions;
|
24
|
-
using faiss::gpu::GpuMultipleClonerOptions;
|
25
|
-
|
26
|
-
int faiss_index_gpu_to_cpu(const FaissIndex* gpu_index, FaissIndex** p_out) {
|
27
|
-
try {
|
28
|
-
auto cpu_index = faiss::gpu::index_gpu_to_cpu(
|
29
|
-
reinterpret_cast<const Index*>(gpu_index)
|
30
|
-
);
|
31
|
-
*p_out = reinterpret_cast<FaissIndex*>(cpu_index);
|
32
|
-
} CATCH_AND_HANDLE
|
33
|
-
}
|
34
|
-
|
35
|
-
/// converts any CPU index that can be converted to GPU
|
36
|
-
int faiss_index_cpu_to_gpu(FaissGpuResources* resources, int device, const FaissIndex *index, FaissGpuIndex** p_out) {
|
37
|
-
try {
|
38
|
-
auto res = reinterpret_cast<GpuResources*>(resources);
|
39
|
-
auto gpu_index = faiss::gpu::index_cpu_to_gpu(
|
40
|
-
res, device, reinterpret_cast<const Index*>(index)
|
41
|
-
);
|
42
|
-
*p_out = reinterpret_cast<FaissGpuIndex*>(gpu_index);
|
43
|
-
} CATCH_AND_HANDLE
|
44
|
-
}
|
45
|
-
|
46
|
-
int faiss_index_cpu_to_gpu_with_options(
|
47
|
-
FaissGpuResources* resources, int device,
|
48
|
-
const FaissIndex *index, const FaissGpuClonerOptions* options,
|
49
|
-
FaissGpuIndex** p_out)
|
50
|
-
{
|
51
|
-
try {
|
52
|
-
auto res = reinterpret_cast<GpuResources*>(resources);
|
53
|
-
auto gpu_index = faiss::gpu::index_cpu_to_gpu(
|
54
|
-
res, device, reinterpret_cast<const Index*>(index),
|
55
|
-
reinterpret_cast<const GpuClonerOptions*>(options));
|
56
|
-
*p_out = reinterpret_cast<FaissGpuIndex*>(gpu_index);
|
57
|
-
} CATCH_AND_HANDLE
|
58
|
-
}
|
59
|
-
|
60
|
-
int faiss_index_cpu_to_gpu_multiple(
|
61
|
-
FaissGpuResources* const* resources_vec,
|
62
|
-
const int* devices, size_t devices_size,
|
63
|
-
const FaissIndex* index, FaissGpuIndex** p_out)
|
64
|
-
{
|
65
|
-
try {
|
66
|
-
std::vector<GpuResources*> res(devices_size);
|
67
|
-
for (auto i = 0u; i < devices_size; ++i) {
|
68
|
-
res[i] = reinterpret_cast<GpuResources*>(resources_vec[i]);
|
69
|
-
}
|
70
|
-
|
71
|
-
std::vector<int> dev(devices, devices + devices_size);
|
72
|
-
|
73
|
-
auto gpu_index = faiss::gpu::index_cpu_to_gpu_multiple(
|
74
|
-
res, dev, reinterpret_cast<const Index*>(index));
|
75
|
-
*p_out = reinterpret_cast<FaissGpuIndex*>(gpu_index);
|
76
|
-
} CATCH_AND_HANDLE
|
77
|
-
}
|
78
|
-
|
79
|
-
int faiss_index_cpu_to_gpu_multiple_with_options(
|
80
|
-
FaissGpuResources** resources_vec, size_t resources_vec_size,
|
81
|
-
int* devices, size_t devices_size,
|
82
|
-
const FaissIndex* index, const FaissGpuMultipleClonerOptions* options,
|
83
|
-
FaissGpuIndex** p_out)
|
84
|
-
{
|
85
|
-
try {
|
86
|
-
std::vector<GpuResources*> res(resources_vec_size);
|
87
|
-
for (auto i = 0u; i < resources_vec_size; ++i) {
|
88
|
-
res[i] = reinterpret_cast<GpuResources*>(resources_vec[i]);
|
89
|
-
}
|
90
|
-
|
91
|
-
std::vector<int> dev(devices, devices + devices_size);
|
92
|
-
|
93
|
-
auto gpu_index = faiss::gpu::index_cpu_to_gpu_multiple(
|
94
|
-
res, dev, reinterpret_cast<const Index*>(index),
|
95
|
-
reinterpret_cast<const GpuMultipleClonerOptions*>(options));
|
96
|
-
*p_out = reinterpret_cast<FaissGpuIndex*>(gpu_index);
|
97
|
-
} CATCH_AND_HANDLE
|
98
|
-
}
|
@@ -1,56 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (c) Facebook, Inc. and its 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
|
-
// Copyright 2004-present Facebook. All Rights Reserved.
|
9
|
-
// -*- c -*-
|
10
|
-
|
11
|
-
#ifndef FAISS_GPU_AUTO_TUNE_C_H
|
12
|
-
#define FAISS_GPU_AUTO_TUNE_C_H
|
13
|
-
|
14
|
-
#include <stddef.h>
|
15
|
-
#include "faiss_c.h"
|
16
|
-
#include "GpuClonerOptions_c.h"
|
17
|
-
#include "GpuResources_c.h"
|
18
|
-
#include "GpuIndex_c.h"
|
19
|
-
#include "Index_c.h"
|
20
|
-
|
21
|
-
#ifdef __cplusplus
|
22
|
-
extern "C" {
|
23
|
-
#endif
|
24
|
-
|
25
|
-
/// converts any GPU index inside gpu_index to a CPU index
|
26
|
-
int faiss_index_gpu_to_cpu(const FaissIndex* gpu_index, FaissIndex** p_out);
|
27
|
-
|
28
|
-
/// converts any CPU index that can be converted to GPU
|
29
|
-
int faiss_index_cpu_to_gpu(
|
30
|
-
FaissGpuResources* resources, int device,
|
31
|
-
const FaissIndex *index, FaissGpuIndex** p_out);
|
32
|
-
|
33
|
-
/// converts any CPU index that can be converted to GPU
|
34
|
-
int faiss_index_cpu_to_gpu_with_options(
|
35
|
-
FaissGpuResources* resources, int device,
|
36
|
-
const FaissIndex *index, const FaissGpuClonerOptions* options,
|
37
|
-
FaissGpuIndex** p_out);
|
38
|
-
|
39
|
-
/// converts any CPU index that can be converted to GPU
|
40
|
-
int faiss_index_cpu_to_gpu_multiple(
|
41
|
-
FaissGpuResources* const* resources_vec, const int* devices, size_t devices_size,
|
42
|
-
const FaissIndex* index, FaissGpuIndex** p_out);
|
43
|
-
|
44
|
-
/// converts any CPU index that can be converted to GPU
|
45
|
-
int faiss_index_cpu_to_gpu_multiple_with_options(
|
46
|
-
FaissGpuResources* const* resources_vec, const int* devices, size_t devices_size,
|
47
|
-
const FaissIndex* index, const FaissGpuMultipleClonerOptions* options,
|
48
|
-
FaissGpuIndex** p_out);
|
49
|
-
|
50
|
-
/// parameter space and setters for GPU indexes
|
51
|
-
FAISS_DECLARE_CLASS_INHERITED(GpuParameterSpace, ParameterSpace)
|
52
|
-
|
53
|
-
#ifdef __cplusplus
|
54
|
-
}
|
55
|
-
#endif
|
56
|
-
#endif
|