51 lines
1.5 KiB
C++
51 lines
1.5 KiB
C++
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD+Patents license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
// Copyright 2004-present Facebook. All Rights Reserved.
|
|
#pragma once
|
|
|
|
#include "../Index.h"
|
|
#include "../AutoTune.h"
|
|
#include "GpuClonerOptions.h"
|
|
#include "GpuIndex.h"
|
|
#include "GpuIndicesOptions.h"
|
|
|
|
namespace faiss { namespace gpu {
|
|
|
|
class GpuResources;
|
|
|
|
// to support auto-tuning we need cloning to/from CPU
|
|
|
|
/// converts any GPU index inside gpu_index to a CPU index
|
|
faiss::Index * index_gpu_to_cpu(const faiss::Index *gpu_index);
|
|
|
|
/// converts any CPU index that can be converted to GPU
|
|
faiss::Index * index_cpu_to_gpu(
|
|
GpuResources* resources, int device,
|
|
const faiss::Index *index,
|
|
const GpuClonerOptions *options = nullptr);
|
|
|
|
faiss::Index * index_cpu_to_gpu_multiple(
|
|
std::vector<GpuResources*> & resources,
|
|
std::vector<int> &devices,
|
|
const faiss::Index *index,
|
|
const GpuMultipleClonerOptions *options = nullptr);
|
|
|
|
/// parameter space and setters for GPU indexes
|
|
struct GpuParameterSpace: faiss::ParameterSpace {
|
|
/// initialize with reasonable parameters for the index
|
|
void initialize (const faiss::Index * index) override;
|
|
|
|
/// set a combination of parameters on an index
|
|
void set_index_parameter (
|
|
faiss::Index * index, const std::string & name,
|
|
double val) const override;
|
|
};
|
|
|
|
} } // namespace
|