All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends
faiss::gpu::GpuIndexFlat Class Reference

`#include <GpuIndexFlat.h>`

Inheritance diagram for faiss::gpu::GpuIndexFlat:

## Public Member Functions

| GpuIndexFlat (GpuResources *resources, const faiss::IndexFlat *index, GpuIndexFlatConfig config=GpuIndexFlatConfig())
| GpuIndexFlat (GpuResources *resources, int dims, faiss::MetricType metric, GpuIndexFlatConfig config=GpuIndexFlatConfig())
| 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.
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 (faiss::Index::idx_t, const float *x) override
| Overrides to avoid excessive copies.
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.
FlatIndex * | getGpuData ()
| For internal access.
Public Member Functions inherited from faiss::gpu::GpuIndex
| GpuIndex (GpuResources *resources, int dims, faiss::MetricType metric, GpuIndexConfig config)
int | getDevice () const
GpuResources * | getResources ()
void | add_with_ids (Index::idx_t n, const float *x, const Index::idx_t *ids) override
Public Member Functions inherited from faiss::Index
| Index (idx_t d=0, MetricType metric=METRIC_L2)
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)
virtual void | search_and_reconstruct (idx_t n, const float *x, idx_t k, float *distances, idx_t *labels, float *recons) const
void | compute_residual (const float *x, float *residual, idx_t key) const
void | display () const

## Protected Member Functions

void | addImpl_ (faiss::Index::idx_t n, const float *x, const faiss::Index::idx_t *ids) override
| Called from GpuIndex for add.
void | searchImpl_ (faiss::Index::idx_t n, const float *x, faiss::Index::idx_t k, float *distances, faiss::Index::idx_t *labels) const override
| Should not be called (we have our own implementation)
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 Member Functions inherited from faiss::gpu::GpuIndex
void | addInternal_ (Index::idx_t n, const float *x, const Index::idx_t *ids)

## Protected Attributes

const GpuIndexFlatConfig | config_
| Our config object.
size_t | minPagedSize_
| Size above which we page copies from the CPU to GPU.
FlatIndex * | data_
| Holds our GPU data containing the list of vectors.
Protected Attributes inherited from faiss::gpu::GpuIndex
GpuResources * | resources_
| Manages streans, cuBLAS handles and scratch memory for devices.
const int | device_
| The GPU device we are resident on.
const MemorySpace | memorySpace_
| The memory space of our primary storage on the GPU.

## Additional Inherited Members

Public Types inherited from faiss::Index
typedef long | idx_t
| all indices are this type
Public Attributes inherited from faiss::Index
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 54 of file GpuIndexFlat.h.

## Constructor & Destructor Documentation

faiss::gpu::GpuIndexFlat::GpuIndexFlat | ( | GpuResources * | resources,
|  | const faiss::IndexFlat * | index,
|  | GpuIndexFlatConfig | config = `GpuIndexFlatConfig()`
| ) |  |

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::copyFrom | ( | const faiss::IndexFlat * | index | ) |

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

Definition at line 87 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 120 of file GpuIndexFlat.cu.

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

override virtual

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

Reimplemented from faiss::Index.

Definition at line 491 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

override virtual

`x`, `distances` and `labels` can be resident on the CPU or any GPU; copies are performed as needed We have our own implementation here which handles CPU async copies; searchImpl_ is not called FIXME: move paged impl into GpuIndex

Reimplemented from faiss::gpu::GpuIndex.

Definition at line 205 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 319 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 77 of file GpuIndexFlat.cu.

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

- /data/users/matthijs/github_faiss/faiss/gpu/GpuIndexFlat.h
- /data/users/matthijs/github_faiss/faiss/gpu/GpuIndexFlat.cu