Faiss
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
faiss::gpu::GpuIndexFlat Class Reference

#include <GpuIndexFlat.h>

Inheritance diagram for faiss::gpu::GpuIndexFlat:
faiss::gpu::GpuIndex faiss::Index faiss::gpu::GpuIndexFlatIP faiss::gpu::GpuIndexFlatL2

Public Member Functions

 GpuIndexFlat (GpuResources *resources, int device, bool useFloat16, const faiss::IndexFlat *index)
 
 GpuIndexFlat (GpuResources *resources, int device, int dims, bool useFloat16, faiss::MetricType metric)
 Construct an empty instance that can be added to.
 
void setMinPagingSize (size_t size)
 
size_t getMinPagingSize () const
 Returns the current minimum data size for paged searches.
 
bool getUseFloat16 () const
 Do we store vectors and perform math in float16?
 
void copyFrom (const faiss::IndexFlat *index)
 
void copyTo (faiss::IndexFlat *index) const
 
size_t getNumVecs () const
 Returns the number of vectors we contain.
 
void reset () override
 Clears all vectors from this index.
 
void train (Index::idx_t n, const float *x) override
 This index is not trained, so this does nothing.
 
void add (Index::idx_t n, const float *x) override
 
void search (faiss::Index::idx_t n, const float *x, faiss::Index::idx_t k, float *distances, faiss::Index::idx_t *labels) const override
 
void reconstruct (faiss::Index::idx_t key, float *out) const override
 
void reconstruct_n (faiss::Index::idx_t i0, faiss::Index::idx_t num, float *out) const override
 Batch reconstruction method.
 
void set_typename () override
 
FlatIndexgetGpuData ()
 For internal access.
 
- Public Member Functions inherited from faiss::gpu::GpuIndex
 GpuIndex (GpuResources *resources, int device, int dims, faiss::MetricType metric)
 
int getDevice () const
 
GpuResourcesgetResources ()
 
- Public Member Functions inherited from faiss::Index
 Index (idx_t d=0, MetricType metric=METRIC_INNER_PRODUCT)
 
virtual void add_with_ids (idx_t n, const float *x, const long *xids)
 
virtual void range_search (idx_t n, const float *x, float radius, RangeSearchResult *result) const
 
void assign (idx_t n, const float *x, idx_t *labels, idx_t k=1)
 
virtual long remove_ids (const IDSelector &sel)
 
void compute_residual (const float *x, float *residual, idx_t key) const
 
void display () const
 
virtual std::string get_typename () const
 

Protected Member Functions

void searchFromCpuPaged_ (int n, const float *x, int k, float *outDistancesData, int *outIndicesData) const
 
void searchNonPaged_ (int n, const float *x, int k, float *outDistancesData, int *outIndicesData) const
 

Protected Attributes

size_t minPagedSize_
 Size above which we page copies from the CPU to GPU.
 
const bool useFloat16_
 Whether or not we store our vectors in float32 or float16.
 
FlatIndexdata_
 Holds our GPU data containing the list of vectors.
 
- Protected Attributes inherited from faiss::gpu::GpuIndex
GpuResourcesresources_
 Manages streans, cuBLAS handles and scratch memory for devices.
 
int device_
 The GPU device we are resident on.
 

Additional Inherited Members

- Public Types inherited from faiss::Index
typedef long idx_t
 all indices are this type
 
- Public Attributes inherited from faiss::Index
std::string index_typename
 
int d
 vector dimension
 
idx_t ntotal
 total nb of indexed vectors
 
bool verbose
 verbosity level
 
bool is_trained
 set if the Index does not require training, or if training is done already
 
MetricType metric_type
 type of metric this index uses for search
 

Detailed Description

Wrapper around the GPU implementation that looks like faiss::IndexFlat; copies over centroid data from a given faiss::IndexFlat

Definition at line 31 of file GpuIndexFlat.h.

Constructor & Destructor Documentation

faiss::gpu::GpuIndexFlat::GpuIndexFlat ( GpuResources resources,
int  device,
bool  useFloat16,
const faiss::IndexFlat index 
)

Construct from a pre-existing faiss::IndexFlat instance, copying data over to the given GPU

Definition at line 33 of file GpuIndexFlat.cu.

Member Function Documentation

void faiss::gpu::GpuIndexFlat::add ( Index::idx_t  n,
const float *  x 
)
overridevirtual

x can be resident on the CPU or any GPU; the proper copies are performed

Implements faiss::gpu::GpuIndex.

Definition at line 149 of file GpuIndexFlat.cu.

void faiss::gpu::GpuIndexFlat::copyFrom ( const faiss::IndexFlat index)

Initialize ourselves from the given CPU index; will overwrite all data in ourselves

Definition at line 81 of file GpuIndexFlat.cu.

void faiss::gpu::GpuIndexFlat::copyTo ( faiss::IndexFlat index) const

Copy ourselves to the given CPU index; will overwrite all data in the index instance

Definition at line 107 of file GpuIndexFlat.cu.

void faiss::gpu::GpuIndexFlat::reconstruct ( faiss::Index::idx_t  key,
float *  out 
) const
overridevirtual

Reconstruction methods; prefer the batch reconstruct as it will be more efficient

Reimplemented from faiss::Index.

Definition at line 440 of file GpuIndexFlat.cu.

void faiss::gpu::GpuIndexFlat::search ( faiss::Index::idx_t  n,
const float *  x,
faiss::Index::idx_t  k,
float *  distances,
faiss::Index::idx_t labels 
) const
overridevirtual

x, distances and labels can be resident on the CPU or any GPU; copies are performed as needed

Implements faiss::Index.

Definition at line 167 of file GpuIndexFlat.cu.

void faiss::gpu::GpuIndexFlat::searchFromCpuPaged_ ( int  n,
const float *  x,
int  k,
float *  outDistancesData,
int *  outIndicesData 
) const
protected

Called from search when the input data is on the CPU; potentially allows for pinned memory usage

Definition at line 268 of file GpuIndexFlat.cu.

void faiss::gpu::GpuIndexFlat::setMinPagingSize ( size_t  size)

Set the minimum data size for searches (in MiB) for which we use CPU -> GPU paging

Definition at line 66 of file GpuIndexFlat.cu.


The documentation for this class was generated from the following files: