Struct faiss::index::gpu::GpuIndexImpl

source ·
pub struct GpuIndexImpl<'gpu, I> { /* private fields */ }
Expand description

Native GPU implementation of a Faiss index. GPU indexes in Faiss are first built on the CPU, and subsequently transferred to one or more GPU’s via the into_gpu or to_gpu methods. Calling into_cpu (or to_cpu) enables the user to bring the index back to CPU memory.

When using to_gpu or to_cpu, the indexes will contain the same indexed vectors, but are independent at the point of creation. The use of into_gpu or into_cpu isn’t necessarily faster, but will automatically free the originating index.

The 'gpu lifetime ensures that the GPU resources are in scope for as long as the index lives.

Implementations§

source§

impl<'gpu, I> GpuIndexImpl<'gpu, I>where I: NativeIndex + FromInnerPtr,

source

pub fn to_cpu(&self) -> Result<I>

Transfer the GPU index back to its original CPU implementation.

source

pub fn into_cpu(self) -> Result<I>

Transfer the GPU index back to its original CPU implementation, freeing the GPU-backed index in the process.

Trait Implementations§

source§

impl<'gpu, I: Debug> Debug for GpuIndexImpl<'gpu, I>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'g, I> Drop for GpuIndexImpl<'g, I>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'gpu, I> Index for GpuIndexImpl<'gpu, I>where I: Index,

source§

fn is_trained(&self) -> bool

Whether the Index does not require training, or if training is done already
source§

fn ntotal(&self) -> u64

The total number of vectors indexed
source§

fn d(&self) -> u32

The dimensionality of the indexed vectors
source§

fn metric_type(&self) -> MetricType

The metric type assumed by the index
source§

fn add(&mut self, x: &[f32]) -> Result<()>

Add new data vectors to the index. This assumes a C-contiguous memory slice of vectors, where the total number of vectors is x.len() / d.
source§

fn add_with_ids(&mut self, x: &[f32], xids: &[Idx]) -> Result<()>

Add new data vectors to the index with IDs. This assumes a C-contiguous memory slice of vectors, where the total number of vectors is x.len() / d. Not all index types may support this operation.
source§

fn train(&mut self, x: &[f32]) -> Result<()>

Train the underlying index with the given data.
source§

fn assign(&mut self, query: &[f32], k: usize) -> Result<AssignSearchResult>

Similar to search, but only provides the labels.
source§

fn search(&mut self, query: &[f32], k: usize) -> Result<SearchResult>

Perform a search for the k closest vectors to the given query vectors.
Perform a ranged search for the vectors closest to the given query vectors by the given radius.
source§

fn reset(&mut self) -> Result<()>

Clear the entire index.
source§

fn remove_ids(&mut self, sel: &IdSelector) -> Result<usize>

Remove data vectors represented by IDs.
source§

fn verbose(&self) -> bool

Index verbosity level
source§

fn set_verbose(&mut self, value: bool)

Set Index verbosity level
source§

impl<'g, I> NativeIndex for GpuIndexImpl<'g, I>where I: NativeIndex,

source§

fn inner_ptr(&self) -> *mut FaissIndex

Retrieve a pointer to the native index object.
source§

impl<'g, I> GpuIndex for GpuIndexImpl<'g, I>where I: NativeIndex,

source§

impl<'g, I> Send for GpuIndexImpl<'g, I>where I: Send,

Auto Trait Implementations§

§

impl<'gpu, I> RefUnwindSafe for GpuIndexImpl<'gpu, I>where I: RefUnwindSafe,

§

impl<'gpu, I> !Sync for GpuIndexImpl<'gpu, I>

§

impl<'gpu, I> Unpin for GpuIndexImpl<'gpu, I>where I: Unpin,

§

impl<'gpu, I> UnwindSafe for GpuIndexImpl<'gpu, I>where I: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<NI> UpcastIndex for NIwhere NI: NativeIndex,

source§

fn upcast(self) -> IndexImpl

Convert an index to the base IndexImpl type