/
GpuClonerOptions.h
69 lines (53 loc) · 1.99 KB
/
GpuClonerOptions.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <faiss/gpu/GpuIndicesOptions.h>
namespace faiss {
namespace gpu {
/// set some options on how to copy to GPU
struct GpuClonerOptions {
/// how should indices be stored on index types that support indices
/// (anything but GpuIndexFlat*)?
IndicesOptions indicesOptions = INDICES_64_BIT;
/// is the coarse quantizer in float16?
bool useFloat16CoarseQuantizer = false;
/// for GpuIndexIVFFlat, is storage in float16?
/// for GpuIndexIVFPQ, are intermediate calculations in float16?
bool useFloat16 = false;
/// use precomputed tables?
bool usePrecomputed = false;
/// reserve vectors in the invfiles?
long reserveVecs = 0;
/// For GpuIndexFlat, store data in transposed layout?
bool storeTransposed = false;
/// Set verbose options on the index
bool verbose = false;
/// use the RAFT implementation
#if defined USE_NVIDIA_RAFT
bool use_raft = true;
#else
bool use_raft = false;
#endif
/// This flag controls the CPU fallback logic for coarse quantizer
/// component of the index. When set to false (default), the cloner will
/// throw an exception for indices not implemented on GPU. When set to
/// true, it will fallback to a CPU implementation.
bool allowCpuCoarseQuantizer = false;
};
struct GpuMultipleClonerOptions : public GpuClonerOptions {
/// Whether to shard the index across GPUs, versus replication
/// across GPUs
bool shard = false;
/// IndexIVF::copy_subset_to subset type
int shard_type = 1;
/// set to true if an IndexIVF is to be dispatched to multiple GPUs with a
/// single common IVF quantizer, ie. only the inverted lists are sharded on
/// the sub-indexes (uses an IndexShardsIVF)
bool common_ivf_quantizer = false;
};
} // namespace gpu
} // namespace faiss