ExecutionEngineImpl.h 2.9 KB
Newer Older
J
jinhai 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

G
groot 已提交
18 19 20
#pragma once

#include "ExecutionEngine.h"
21
#include "src/wrapper/VecIndex.h"
G
groot 已提交
22 23 24 25 26 27 28 29

#include <memory>
#include <string>

namespace milvus {
namespace engine {

class ExecutionEngineImpl : public ExecutionEngine {
G
groot 已提交
30
 public:
G
groot 已提交
31
    ExecutionEngineImpl(uint16_t dimension, const std::string& location, EngineType index_type, MetricType metric_type,
G
groot 已提交
32
                        int32_t nlist);
X
xj.lin 已提交
33

G
groot 已提交
34
    ExecutionEngineImpl(VecIndexPtr index, const std::string& location, EngineType index_type, MetricType metric_type,
G
groot 已提交
35
                        int32_t nlist);
G
groot 已提交
36

G
groot 已提交
37 38
    Status
    AddWithIds(int64_t n, const float* xdata, const int64_t* xids) override;
G
groot 已提交
39

G
groot 已提交
40 41
    size_t
    Count() const override;
G
groot 已提交
42

G
groot 已提交
43 44
    size_t
    Size() const override;
G
groot 已提交
45

G
groot 已提交
46 47
    size_t
    Dimension() const override;
G
groot 已提交
48

G
groot 已提交
49 50
    size_t
    PhysicalSize() const override;
G
groot 已提交
51

G
groot 已提交
52 53
    Status
    Serialize() override;
G
groot 已提交
54

G
groot 已提交
55 56
    Status
    Load(bool to_cache) override;
G
groot 已提交
57

G
groot 已提交
58 59
    Status
    CopyToGpu(uint64_t device_id) override;
60

Y
Yu Kun 已提交
61
    Status
Y
Yu Kun 已提交
62
    CopyToIndexFileToGpu(uint64_t device_id) override;
Y
Yu Kun 已提交
63

G
groot 已提交
64 65
    Status
    CopyToCpu() override;
66

G
groot 已提交
67 68
    ExecutionEnginePtr
    Clone() override;
W
wxyu 已提交
69

G
groot 已提交
70 71
    Status
    Merge(const std::string& location) override;
G
groot 已提交
72

G
groot 已提交
73 74
    Status
    Search(int64_t n, const float* data, int64_t k, int64_t nprobe, float* distances, int64_t* labels) const override;
G
groot 已提交
75

G
groot 已提交
76 77
    ExecutionEnginePtr
    BuildIndex(const std::string& location, EngineType engine_type) override;
G
groot 已提交
78

G
groot 已提交
79 80
    Status
    Cache() override;
G
groot 已提交
81

G
groot 已提交
82 83
    Status
    GpuCache(uint64_t gpu_id) override;
Y
Yu Kun 已提交
84

G
groot 已提交
85 86
    Status
    Init() override;
G
groot 已提交
87

G
groot 已提交
88 89
    EngineType
    IndexEngineType() const override {
G
groot 已提交
90 91
        return index_type_;
    }
G
groot 已提交
92

G
groot 已提交
93 94
    MetricType
    IndexMetricType() const override {
G
groot 已提交
95 96
        return metric_type_;
    }
G
groot 已提交
97

G
groot 已提交
98 99
    std::string
    GetLocation() const override {
G
groot 已提交
100 101
        return location_;
    }
102

G
groot 已提交
103
 private:
G
groot 已提交
104 105
    VecIndexPtr
    CreatetVecIndex(EngineType type);
X
xj.lin 已提交
106

G
groot 已提交
107 108
    VecIndexPtr
    Load(const std::string& location);
G
groot 已提交
109

G
groot 已提交
110
 protected:
X
xj.lin 已提交
111
    VecIndexPtr index_ = nullptr;
G
groot 已提交
112 113
    EngineType index_type_;
    MetricType metric_type_;
G
groot 已提交
114

G
groot 已提交
115
    int64_t dim_;
G
groot 已提交
116 117
    std::string location_;

G
groot 已提交
118
    int32_t nlist_ = 0;
119
    int32_t gpu_num_ = 0;
G
groot 已提交
120 121
};

G
groot 已提交
122 123
}  // namespace engine
}  // namespace milvus