Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
milvus
提交
606ef0b5
milvus
项目概览
BaiXuePrincess
/
milvus
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
606ef0b5
编写于
7月 07, 2019
作者:
S
starlord
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
new engine
Former-commit-id: 178888a85b0cc0394d429dfeac4300971f65079f
上级
692feaac
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
211 addition
and
6 deletion
+211
-6
cpp/src/db/EngineFactory.cpp
cpp/src/db/EngineFactory.cpp
+21
-2
cpp/src/db/ExecutionEngine.h
cpp/src/db/ExecutionEngine.h
+3
-1
cpp/src/db/ExecutionEngineImpl.cpp
cpp/src/db/ExecutionEngineImpl.cpp
+116
-0
cpp/src/db/ExecutionEngineImpl.h
cpp/src/db/ExecutionEngineImpl.h
+68
-0
cpp/src/server/RequestTask.cpp
cpp/src/server/RequestTask.cpp
+2
-2
cpp/unittest/db/misc_test.cpp
cpp/unittest/db/misc_test.cpp
+1
-1
未找到文件。
cpp/src/db/EngineFactory.cpp
浏览文件 @
606ef0b5
...
...
@@ -5,13 +5,14 @@
******************************************************************************/
#include "EngineFactory.h"
#include "FaissExecutionEngine.h"
#include "ExecutionEngineImpl.h"
#include "Log.h"
namespace
zilliz
{
namespace
milvus
{
namespace
engine
{
#if 0
ExecutionEnginePtr
EngineFactory::Build(uint16_t dimension,
const std::string &location,
...
...
@@ -26,7 +27,7 @@ EngineFactory::Build(uint16_t dimension,
break;
}
case
EngineType
::
FAISS_IVFFLAT
:
{
case EngineType::FAISS_IVFFLAT
_GPU
: {
execution_engine_ptr =
ExecutionEnginePtr(new FaissExecutionEngine(dimension, location, "IVF", "IDMap,Flat"));
break;
...
...
@@ -41,6 +42,24 @@ EngineFactory::Build(uint16_t dimension,
execution_engine_ptr->Init();
return execution_engine_ptr;
}
#else
ExecutionEnginePtr
EngineFactory
::
Build
(
uint16_t
dimension
,
const
std
::
string
&
location
,
EngineType
type
)
{
if
(
type
==
EngineType
::
INVALID
)
{
ENGINE_LOG_ERROR
<<
"Unsupported engine type"
;
return
nullptr
;
}
ExecutionEnginePtr
execution_engine_ptr
=
std
::
make_shared
<
ExecutionEngineImpl
>
(
dimension
,
location
,
type
);
execution_engine_ptr
->
Init
();
return
execution_engine_ptr
;
}
#endif
}
}
...
...
cpp/src/db/ExecutionEngine.h
浏览文件 @
606ef0b5
...
...
@@ -17,7 +17,9 @@ namespace engine {
enum
class
EngineType
{
INVALID
=
0
,
FAISS_IDMAP
=
1
,
FAISS_IVFFLAT
,
FAISS_IVFFLAT_GPU
,
FAISS_IVFFLAT_CPU
,
SPTAG_KDT_RNT_CPU
,
};
class
ExecutionEngine
{
...
...
cpp/src/db/ExecutionEngineImpl.cpp
0 → 100644
浏览文件 @
606ef0b5
/*******************************************************************************
* Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved
* Unauthorized copying of this file, via any medium is strictly prohibited.
* Proprietary and confidential.
******************************************************************************/
#include "ExecutionEngineImpl.h"
#include "Log.h"
#include "wrapper/knowhere/vec_impl.h"
#include "knowhere/index/vector_index/ivf.h"
#include "knowhere/index/vector_index/gpu_ivf.h"
#include "knowhere/index/vector_index/cpu_kdt_rng.h"
namespace
zilliz
{
namespace
milvus
{
namespace
engine
{
ExecutionEngineImpl
::
ExecutionEngineImpl
(
uint16_t
dimension
,
const
std
::
string
&
location
,
EngineType
type
)
:
location_
(
location
)
{
index_
=
CreatetVecIndex
(
type
);
}
vecwise
::
engine
::
VecIndexPtr
ExecutionEngineImpl
::
CreatetVecIndex
(
EngineType
type
)
{
std
::
shared_ptr
<
zilliz
::
knowhere
::
VectorIndex
>
index
;
switch
(
type
)
{
case
EngineType
::
FAISS_IDMAP
:
{
break
;
}
case
EngineType
::
FAISS_IVFFLAT_GPU
:
{
index
=
std
::
make_shared
<
zilliz
::
knowhere
::
GPUIVF
>
(
0
);
break
;
}
case
EngineType
::
FAISS_IVFFLAT_CPU
:
{
index
=
std
::
make_shared
<
zilliz
::
knowhere
::
IVF
>
();
break
;
}
case
EngineType
::
SPTAG_KDT_RNT_CPU
:
{
index
=
std
::
make_shared
<
zilliz
::
knowhere
::
CPUKDTRNG
>
();
break
;
}
default:
{
ENGINE_LOG_ERROR
<<
"Invalid engine type"
;
return
nullptr
;
}
}
return
std
::
make_shared
<
vecwise
::
engine
::
VecIndexImpl
>
(
index
);
}
Status
ExecutionEngineImpl
::
AddWithIds
(
long
n
,
const
float
*
xdata
,
const
long
*
xids
)
{
return
Status
::
OK
();
}
size_t
ExecutionEngineImpl
::
Count
()
const
{
return
0
;
}
size_t
ExecutionEngineImpl
::
Size
()
const
{
return
0
;
}
size_t
ExecutionEngineImpl
::
Dimension
()
const
{
return
0
;
}
size_t
ExecutionEngineImpl
::
PhysicalSize
()
const
{
return
0
;
}
Status
ExecutionEngineImpl
::
Serialize
()
{
return
Status
::
OK
();
}
Status
ExecutionEngineImpl
::
Load
()
{
return
Status
::
OK
();
}
Status
ExecutionEngineImpl
::
Merge
(
const
std
::
string
&
location
)
{
return
Status
::
OK
();
}
ExecutionEnginePtr
ExecutionEngineImpl
::
BuildIndex
(
const
std
::
string
&
location
)
{
return
nullptr
;
}
Status
ExecutionEngineImpl
::
Search
(
long
n
,
const
float
*
data
,
long
k
,
float
*
distances
,
long
*
labels
)
const
{
return
Status
::
OK
();
}
Status
ExecutionEngineImpl
::
Cache
()
{
return
Status
::
OK
();
}
Status
ExecutionEngineImpl
::
Init
()
{
return
Status
::
OK
();
}
}
// namespace engine
}
// namespace milvus
}
// namespace zilliz
cpp/src/db/ExecutionEngineImpl.h
0 → 100644
浏览文件 @
606ef0b5
/*******************************************************************************
* Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved
* Unauthorized copying of this file, via any medium is strictly prohibited.
* Proprietary and confidential.
******************************************************************************/
#pragma once
#include "ExecutionEngine.h"
#include "wrapper/knowhere/vec_index.h"
#include <memory>
#include <string>
namespace
zilliz
{
namespace
milvus
{
namespace
engine
{
class
ExecutionEngineImpl
:
public
ExecutionEngine
{
public:
ExecutionEngineImpl
(
uint16_t
dimension
,
const
std
::
string
&
location
,
EngineType
type
);
Status
AddWithIds
(
long
n
,
const
float
*
xdata
,
const
long
*
xids
)
override
;
size_t
Count
()
const
override
;
size_t
Size
()
const
override
;
size_t
Dimension
()
const
override
;
size_t
PhysicalSize
()
const
override
;
Status
Serialize
()
override
;
Status
Load
()
override
;
Status
Merge
(
const
std
::
string
&
location
)
override
;
Status
Search
(
long
n
,
const
float
*
data
,
long
k
,
float
*
distances
,
long
*
labels
)
const
override
;
ExecutionEnginePtr
BuildIndex
(
const
std
::
string
&
)
override
;
Status
Cache
()
override
;
Status
Init
()
override
;
private:
vecwise
::
engine
::
VecIndexPtr
CreatetVecIndex
(
EngineType
type
);
protected:
vecwise
::
engine
::
VecIndexPtr
index_
;
std
::
string
location_
;
size_t
nprobe_
=
0
;
};
}
// namespace engine
}
// namespace milvus
}
// namespace zilliz
cpp/src/server/RequestTask.cpp
浏览文件 @
606ef0b5
...
...
@@ -29,7 +29,7 @@ namespace {
static
std
::
map
<
int
,
engine
::
EngineType
>
map_type
=
{
{
0
,
engine
::
EngineType
::
INVALID
},
{
1
,
engine
::
EngineType
::
FAISS_IDMAP
},
{
2
,
engine
::
EngineType
::
FAISS_IVFFLAT
},
{
2
,
engine
::
EngineType
::
FAISS_IVFFLAT
_GPU
},
};
if
(
map_type
.
find
(
type
)
==
map_type
.
end
())
{
...
...
@@ -43,7 +43,7 @@ namespace {
static
std
::
map
<
engine
::
EngineType
,
int
>
map_type
=
{
{
engine
::
EngineType
::
INVALID
,
0
},
{
engine
::
EngineType
::
FAISS_IDMAP
,
1
},
{
engine
::
EngineType
::
FAISS_IVFFLAT
,
2
},
{
engine
::
EngineType
::
FAISS_IVFFLAT
_GPU
,
2
},
};
if
(
map_type
.
find
(
type
)
==
map_type
.
end
())
{
...
...
cpp/unittest/db/misc_test.cpp
浏览文件 @
606ef0b5
...
...
@@ -46,7 +46,7 @@ TEST(DBMiscTest, ENGINE_API_TEST) {
auto
engine_ptr
=
engine
::
EngineFactory
::
Build
(
128
,
"/tmp"
,
engine
::
EngineType
::
INVALID
);
ASSERT_EQ
(
engine_ptr
,
nullptr
);
engine_ptr
=
engine
::
EngineFactory
::
Build
(
128
,
"/tmp"
,
engine
::
EngineType
::
FAISS_IVFFLAT
);
engine_ptr
=
engine
::
EngineFactory
::
Build
(
128
,
"/tmp"
,
engine
::
EngineType
::
FAISS_IVFFLAT
_GPU
);
ASSERT_NE
(
engine_ptr
,
nullptr
);
engine_ptr
=
engine
::
EngineFactory
::
Build
(
128
,
"/tmp"
,
engine
::
EngineType
::
FAISS_IDMAP
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录