Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle
提交
be931dfe
P
Paddle
项目概览
PaddlePaddle
/
Paddle
大约 2 年 前同步成功
通知
2325
Star
20933
Fork
5424
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1423
列表
看板
标记
里程碑
合并请求
543
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1,423
Issue
1,423
列表
看板
标记
里程碑
合并请求
543
合并请求
543
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
be931dfe
编写于
8月 09, 2022
作者:
W
WangZhen
提交者:
GitHub
8月 09, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[JitLayer]Rename class type Name2XX (#45006)
* Rename class type Name2XX * Fix return type * Remove EngineMap function in layer
上级
42c694df
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
36 addition
and
46 deletion
+36
-46
paddle/fluid/jit/compilation_unit.cc
paddle/fluid/jit/compilation_unit.cc
+2
-2
paddle/fluid/jit/compilation_unit.h
paddle/fluid/jit/compilation_unit.h
+3
-4
paddle/fluid/jit/engine/executor_engine.cc
paddle/fluid/jit/engine/executor_engine.cc
+1
-1
paddle/fluid/jit/engine/executor_engine.h
paddle/fluid/jit/engine/executor_engine.h
+1
-1
paddle/fluid/jit/engine/pe_engine.cc
paddle/fluid/jit/engine/pe_engine.cc
+1
-1
paddle/fluid/jit/engine/pe_engine.h
paddle/fluid/jit/engine/pe_engine.h
+1
-1
paddle/fluid/jit/function_utils.cc
paddle/fluid/jit/function_utils.cc
+2
-2
paddle/fluid/jit/function_utils.h
paddle/fluid/jit/function_utils.h
+3
-4
paddle/fluid/jit/layer.cc
paddle/fluid/jit/layer.cc
+4
-6
paddle/fluid/jit/layer.h
paddle/fluid/jit/layer.h
+8
-13
paddle/fluid/jit/serializer.cc
paddle/fluid/jit/serializer.cc
+7
-7
paddle/fluid/jit/serializer.h
paddle/fluid/jit/serializer.h
+3
-4
未找到文件。
paddle/fluid/jit/compilation_unit.cc
浏览文件 @
be931dfe
...
@@ -27,7 +27,7 @@ std::shared_ptr<BaseEngine> CompilationUnit::GetEngine(
...
@@ -27,7 +27,7 @@ std::shared_ptr<BaseEngine> CompilationUnit::GetEngine(
engine_map_
.
count
(
name
),
engine_map_
.
count
(
name
),
1
,
1
,
phi
::
errors
::
InvalidArgument
(
phi
::
errors
::
InvalidArgument
(
"Funciton named %s is not exist in engine_map_."
,
name
));
"Funciton named %s is not exist
ed
in engine_map_."
,
name
));
return
engine_map_
.
at
(
name
);
return
engine_map_
.
at
(
name
);
}
}
...
@@ -36,7 +36,7 @@ void CompilationUnit::SetEngine(const std::string &name,
...
@@ -36,7 +36,7 @@ void CompilationUnit::SetEngine(const std::string &name,
engine_map_
[
name
]
=
engine
;
engine_map_
[
name
]
=
engine
;
}
}
const
Name2
EngineMap
&
CompilationUnit
::
EngineMap
()
const
{
return
engine_map_
;
}
const
jit
::
EngineMap
&
CompilationUnit
::
EngineMap
()
const
{
return
engine_map_
;
}
}
// namespace jit
}
// namespace jit
}
// namespace paddle
}
// namespace paddle
paddle/fluid/jit/compilation_unit.h
浏览文件 @
be931dfe
...
@@ -22,8 +22,7 @@
...
@@ -22,8 +22,7 @@
namespace
paddle
{
namespace
paddle
{
namespace
jit
{
namespace
jit
{
class
BaseEngine
;
class
BaseEngine
;
using
Name2EngineMap
=
using
EngineMap
=
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
BaseEngine
>>
;
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
BaseEngine
>>
;
class
CompilationUnit
{
class
CompilationUnit
{
public:
public:
...
@@ -35,10 +34,10 @@ class CompilationUnit {
...
@@ -35,10 +34,10 @@ class CompilationUnit {
void
SetEngine
(
const
std
::
string
&
name
,
void
SetEngine
(
const
std
::
string
&
name
,
const
std
::
shared_ptr
<
BaseEngine
>
&
engine
);
const
std
::
shared_ptr
<
BaseEngine
>
&
engine
);
const
Name2
EngineMap
&
EngineMap
()
const
;
const
jit
::
EngineMap
&
EngineMap
()
const
;
private:
private:
Name2
EngineMap
engine_map_
;
jit
::
EngineMap
engine_map_
;
};
};
}
// namespace jit
}
// namespace jit
...
...
paddle/fluid/jit/engine/executor_engine.cc
浏览文件 @
be931dfe
...
@@ -22,7 +22,7 @@ namespace paddle {
...
@@ -22,7 +22,7 @@ namespace paddle {
namespace
jit
{
namespace
jit
{
ExecutorEngine
::
ExecutorEngine
(
const
std
::
shared_ptr
<
FunctionInfo
>
&
info
,
ExecutorEngine
::
ExecutorEngine
(
const
std
::
shared_ptr
<
FunctionInfo
>
&
info
,
const
Name2
VariableMap
&
params_dict
,
const
VariableMap
&
params_dict
,
const
phi
::
Place
&
place
)
const
phi
::
Place
&
place
)
:
info_
(
info
),
place_
(
place
),
inner_exe_
(
place_
)
{
:
info_
(
info
),
place_
(
place
),
inner_exe_
(
place_
)
{
info_
->
RemoveDescFeedFetch
();
info_
->
RemoveDescFeedFetch
();
...
...
paddle/fluid/jit/engine/executor_engine.h
浏览文件 @
be931dfe
...
@@ -29,7 +29,7 @@ namespace jit {
...
@@ -29,7 +29,7 @@ namespace jit {
class
ExecutorEngine
:
public
BaseEngine
{
class
ExecutorEngine
:
public
BaseEngine
{
public:
public:
ExecutorEngine
(
const
std
::
shared_ptr
<
FunctionInfo
>
&
info
,
ExecutorEngine
(
const
std
::
shared_ptr
<
FunctionInfo
>
&
info
,
const
Name2
VariableMap
&
params_dict
,
const
VariableMap
&
params_dict
,
const
phi
::
Place
&
place
);
const
phi
::
Place
&
place
);
~
ExecutorEngine
()
noexcept
{}
~
ExecutorEngine
()
noexcept
{}
...
...
paddle/fluid/jit/engine/pe_engine.cc
浏览文件 @
be931dfe
...
@@ -58,7 +58,7 @@ static ExecutionStrategy GetExecutionStrategy(const platform::Place &place) {
...
@@ -58,7 +58,7 @@ static ExecutionStrategy GetExecutionStrategy(const platform::Place &place) {
}
}
PEEngine
::
PEEngine
(
const
std
::
shared_ptr
<
FunctionInfo
>
&
info
,
PEEngine
::
PEEngine
(
const
std
::
shared_ptr
<
FunctionInfo
>
&
info
,
const
Name2
VariableMap
&
params_dict
,
const
VariableMap
&
params_dict
,
const
phi
::
Place
&
place
)
const
phi
::
Place
&
place
)
:
info_
(
info
),
place_
(
place
)
{
:
info_
(
info
),
place_
(
place
)
{
info_
->
RemoveDescFeedFetch
();
info_
->
RemoveDescFeedFetch
();
...
...
paddle/fluid/jit/engine/pe_engine.h
浏览文件 @
be931dfe
...
@@ -42,7 +42,7 @@ using Graph = framework::ir::Graph;
...
@@ -42,7 +42,7 @@ using Graph = framework::ir::Graph;
class
PEEngine
:
public
BaseEngine
{
class
PEEngine
:
public
BaseEngine
{
public:
public:
PEEngine
(
const
std
::
shared_ptr
<
FunctionInfo
>
&
info
,
PEEngine
(
const
std
::
shared_ptr
<
FunctionInfo
>
&
info
,
const
Name2
VariableMap
&
params_dict
,
const
VariableMap
&
params_dict
,
const
phi
::
Place
&
place
);
const
phi
::
Place
&
place
);
~
PEEngine
()
noexcept
{}
~
PEEngine
()
noexcept
{}
...
...
paddle/fluid/jit/function_utils.cc
浏览文件 @
be931dfe
...
@@ -71,14 +71,14 @@ void ShareIntoScope(const std::vector<std::string> &ordered_input_names,
...
@@ -71,14 +71,14 @@ void ShareIntoScope(const std::vector<std::string> &ordered_input_names,
}
}
void
ShareParamsIntoScope
(
const
std
::
vector
<
std
::
string
>
&
param_names
,
void
ShareParamsIntoScope
(
const
std
::
vector
<
std
::
string
>
&
param_names
,
const
Name2
VariableMap
&
params_dict
,
const
VariableMap
&
params_dict
,
framework
::
Scope
*
scope
)
{
framework
::
Scope
*
scope
)
{
for
(
size_t
i
=
0
;
i
<
param_names
.
size
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
param_names
.
size
();
++
i
)
{
std
::
string
name
=
param_names
[
i
];
std
::
string
name
=
param_names
[
i
];
PADDLE_ENFORCE_EQ
(
params_dict
.
count
(
name
),
PADDLE_ENFORCE_EQ
(
params_dict
.
count
(
name
),
1
,
1
,
phi
::
errors
::
InvalidArgument
(
phi
::
errors
::
InvalidArgument
(
"Parameter named %s is not exist
in param_names
. "
"Parameter named %s is not exist
ed in params_dict
. "
"Please check that your model was saved correctly"
,
"Please check that your model was saved correctly"
,
name
));
name
));
...
...
paddle/fluid/jit/function_utils.h
浏览文件 @
be931dfe
...
@@ -33,8 +33,7 @@ class Scope;
...
@@ -33,8 +33,7 @@ class Scope;
namespace
jit
{
namespace
jit
{
using
Variable
=
paddle
::
framework
::
Variable
;
using
Variable
=
paddle
::
framework
::
Variable
;
using
Name2VariableMap
=
using
VariableMap
=
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
Variable
>>
;
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
Variable
>>
;
using
DenseTensor
=
phi
::
DenseTensor
;
using
DenseTensor
=
phi
::
DenseTensor
;
using
Tensor
=
paddle
::
experimental
::
Tensor
;
using
Tensor
=
paddle
::
experimental
::
Tensor
;
...
@@ -52,14 +51,14 @@ void ShareIntoScope(const std::vector<std::string> &ordered_input_names,
...
@@ -52,14 +51,14 @@ void ShareIntoScope(const std::vector<std::string> &ordered_input_names,
framework
::
Scope
*
scope
);
framework
::
Scope
*
scope
);
void
ShareParamsIntoScope
(
const
std
::
vector
<
std
::
string
>
&
param_names
,
void
ShareParamsIntoScope
(
const
std
::
vector
<
std
::
string
>
&
param_names
,
const
Name2
VariableMap
&
params_dict
,
const
VariableMap
&
params_dict
,
framework
::
Scope
*
scope
);
framework
::
Scope
*
scope
);
void
RemoveFeedFetch
(
framework
::
ProgramDesc
*
program_desc
);
void
RemoveFeedFetch
(
framework
::
ProgramDesc
*
program_desc
);
template
<
typename
T
>
template
<
typename
T
>
std
::
shared_ptr
<
T
>
MakeEngine
(
const
std
::
shared_ptr
<
FunctionInfo
>
&
info
,
std
::
shared_ptr
<
T
>
MakeEngine
(
const
std
::
shared_ptr
<
FunctionInfo
>
&
info
,
const
Name2
VariableMap
&
params_dict
,
const
VariableMap
&
params_dict
,
const
phi
::
Place
&
place
)
{
const
phi
::
Place
&
place
)
{
return
std
::
make_shared
<
T
>
(
info
,
params_dict
,
place
);
return
std
::
make_shared
<
T
>
(
info
,
params_dict
,
place
);
}
}
...
...
paddle/fluid/jit/layer.cc
浏览文件 @
be931dfe
...
@@ -26,9 +26,9 @@
...
@@ -26,9 +26,9 @@
namespace
paddle
{
namespace
paddle
{
namespace
jit
{
namespace
jit
{
Layer
::
Layer
(
const
Name2
VariableMap
&
params_map
,
Layer
::
Layer
(
const
VariableMap
&
params_map
,
const
Name2
VariableMap
&
attrs_map
,
const
VariableMap
&
attrs_map
,
const
Name2
FunctionInfoMap
&
info_map
,
const
FunctionInfoMap
&
info_map
,
const
phi
::
Place
&
place
)
const
phi
::
Place
&
place
)
:
params_map_
(
params_map
),
attrs_map_
(
attrs_map
),
info_map_
(
info_map
)
{
:
params_map_
(
params_map
),
attrs_map_
(
attrs_map
),
info_map_
(
info_map
)
{
unit_
.
reset
(
new
CompilationUnit
());
unit_
.
reset
(
new
CompilationUnit
());
...
@@ -56,15 +56,13 @@ void Layer::SetEngine(const std::string& name,
...
@@ -56,15 +56,13 @@ void Layer::SetEngine(const std::string& name,
unit_
->
SetEngine
(
name
,
engine
);
unit_
->
SetEngine
(
name
,
engine
);
}
}
const
Name2EngineMap
&
Layer
::
EngineMap
()
const
{
return
unit_
->
EngineMap
();
}
const
std
::
shared_ptr
<
jit
::
FunctionInfo
>&
Layer
::
FunctionInfo
(
const
std
::
shared_ptr
<
jit
::
FunctionInfo
>&
Layer
::
FunctionInfo
(
const
std
::
string
&
name
)
const
{
const
std
::
string
&
name
)
const
{
PADDLE_ENFORCE_EQ
(
PADDLE_ENFORCE_EQ
(
info_map_
.
count
(
name
),
info_map_
.
count
(
name
),
1
,
1
,
phi
::
errors
::
InvalidArgument
(
phi
::
errors
::
InvalidArgument
(
"FuncitonInfo named %s is not exist in info_map_."
,
name
));
"FuncitonInfo named %s is not exist
ed
in info_map_."
,
name
));
return
info_map_
.
at
(
name
);
return
info_map_
.
at
(
name
);
}
}
...
...
paddle/fluid/jit/layer.h
浏览文件 @
be931dfe
...
@@ -37,18 +37,15 @@ class FunctionInfo;
...
@@ -37,18 +37,15 @@ class FunctionInfo;
using
DenseTensor
=
phi
::
DenseTensor
;
using
DenseTensor
=
phi
::
DenseTensor
;
using
Tensor
=
paddle
::
experimental
::
Tensor
;
using
Tensor
=
paddle
::
experimental
::
Tensor
;
using
Variable
=
paddle
::
framework
::
Variable
;
using
Variable
=
paddle
::
framework
::
Variable
;
using
Name2VariableMap
=
using
VariableMap
=
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
Variable
>>
;
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
Variable
>>
;
using
FunctionInfoMap
=
using
Name2EngineMap
=
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
BaseEngine
>>
;
using
Name2FunctionInfoMap
=
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
FunctionInfo
>>
;
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
FunctionInfo
>>
;
class
Layer
{
class
Layer
{
public:
public:
Layer
(
const
Name2
VariableMap
&
params_map
,
Layer
(
const
VariableMap
&
params_map
,
const
Name2
VariableMap
&
attrs_map_
,
const
VariableMap
&
attrs_map_
,
const
Name2
FunctionInfoMap
&
info_map
,
const
FunctionInfoMap
&
info_map
,
const
phi
::
Place
&
place
);
const
phi
::
Place
&
place
);
jit
::
Function
Function
(
const
std
::
string
&
name
)
const
;
jit
::
Function
Function
(
const
std
::
string
&
name
)
const
;
...
@@ -65,17 +62,15 @@ class Layer {
...
@@ -65,17 +62,15 @@ class Layer {
void
SetEngine
(
const
std
::
string
&
name
,
void
SetEngine
(
const
std
::
string
&
name
,
const
std
::
shared_ptr
<
BaseEngine
>&
engine
);
const
std
::
shared_ptr
<
BaseEngine
>&
engine
);
const
Name2EngineMap
&
EngineMap
()
const
;
const
std
::
shared_ptr
<
jit
::
FunctionInfo
>&
FunctionInfo
(
const
std
::
shared_ptr
<
jit
::
FunctionInfo
>&
FunctionInfo
(
const
std
::
string
&
name
)
const
;
const
std
::
string
&
name
)
const
;
std
::
vector
<
std
::
string
>
FunctionNames
()
const
;
std
::
vector
<
std
::
string
>
FunctionNames
()
const
;
private:
private:
Name2
VariableMap
params_map_
;
VariableMap
params_map_
;
Name2
VariableMap
attrs_map_
;
VariableMap
attrs_map_
;
Name2
FunctionInfoMap
info_map_
;
FunctionInfoMap
info_map_
;
std
::
shared_ptr
<
CompilationUnit
>
unit_
;
std
::
shared_ptr
<
CompilationUnit
>
unit_
;
};
};
...
...
paddle/fluid/jit/serializer.cc
浏览文件 @
be931dfe
...
@@ -30,14 +30,14 @@ DECLARE_string(jit_engine_type);
...
@@ -30,14 +30,14 @@ DECLARE_string(jit_engine_type);
namespace
paddle
{
namespace
paddle
{
namespace
jit
{
namespace
jit
{
using
Name2
FunctionInfoMap
=
using
FunctionInfoMap
=
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
FunctionInfo
>>
;
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
FunctionInfo
>>
;
Layer
Deserializer
::
operator
()(
const
std
::
string
&
path
,
Layer
Deserializer
::
operator
()(
const
std
::
string
&
path
,
const
phi
::
Place
&
place
)
{
const
phi
::
Place
&
place
)
{
const
auto
&
pdmodel_paths
=
utils
::
PdmodelFilePaths
(
path
);
const
auto
&
pdmodel_paths
=
utils
::
PdmodelFilePaths
(
path
);
// set is ordered
// set is ordered
std
::
set
<
std
::
string
>
param_names_set
;
std
::
set
<
std
::
string
>
param_names_set
;
Name2
FunctionInfoMap
info_map
;
FunctionInfoMap
info_map
;
for
(
auto
&
it
:
pdmodel_paths
)
{
for
(
auto
&
it
:
pdmodel_paths
)
{
auto
&
func_name
=
it
.
first
;
auto
&
func_name
=
it
.
first
;
auto
program_desc
=
LoadProgram
(
it
.
second
);
auto
program_desc
=
LoadProgram
(
it
.
second
);
...
@@ -55,8 +55,8 @@ Layer Deserializer::operator()(const std::string& path,
...
@@ -55,8 +55,8 @@ Layer Deserializer::operator()(const std::string& path,
func_name
,
persist_var_names
,
program_desc
);
func_name
,
persist_var_names
,
program_desc
);
}
}
Name2
VariableMap
params_dict
;
VariableMap
params_dict
;
Name2
VariableMap
attrs_dict
;
VariableMap
attrs_dict
;
ReadTensorData
(
path
+
PDPARAMS_SUFFIX
,
param_names_set
,
place
,
&
params_dict
);
ReadTensorData
(
path
+
PDPARAMS_SUFFIX
,
param_names_set
,
place
,
&
params_dict
);
if
(
utils
::
FileExists
(
path
+
PROPERTY_SUFFIX
))
{
if
(
utils
::
FileExists
(
path
+
PROPERTY_SUFFIX
))
{
...
@@ -90,7 +90,7 @@ Layer Deserializer::operator()(const std::string& path,
...
@@ -90,7 +90,7 @@ Layer Deserializer::operator()(const std::string& path,
void
Deserializer
::
ReadTensorData
(
const
std
::
string
&
file_name
,
void
Deserializer
::
ReadTensorData
(
const
std
::
string
&
file_name
,
const
std
::
set
<
std
::
string
>&
var_name
,
const
std
::
set
<
std
::
string
>&
var_name
,
const
phi
::
Place
&
place
,
const
phi
::
Place
&
place
,
Name2
VariableMap
*
params_dict
)
const
{
VariableMap
*
params_dict
)
const
{
VLOG
(
3
)
<<
"ReadTensorData from: "
<<
file_name
;
VLOG
(
3
)
<<
"ReadTensorData from: "
<<
file_name
;
std
::
ifstream
fin
(
file_name
,
std
::
ios
::
binary
);
std
::
ifstream
fin
(
file_name
,
std
::
ios
::
binary
);
platform
::
DeviceContextPool
&
pool
=
platform
::
DeviceContextPool
::
Instance
();
platform
::
DeviceContextPool
&
pool
=
platform
::
DeviceContextPool
::
Instance
();
...
@@ -106,11 +106,11 @@ void Deserializer::ReadTensorData(const std::string& file_name,
...
@@ -106,11 +106,11 @@ void Deserializer::ReadTensorData(const std::string& file_name,
}
}
void
Deserializer
::
ReadAttributeData
(
const
std
::
string
&
file_path
,
void
Deserializer
::
ReadAttributeData
(
const
std
::
string
&
file_path
,
Name2
VariableMap
*
attrs_dict
)
const
{
VariableMap
*
attrs_dict
)
const
{
VLOG
(
3
)
<<
"ReadPropertyData from: "
<<
file_path
;
VLOG
(
3
)
<<
"ReadPropertyData from: "
<<
file_path
;
Property
p
;
Property
p
;
p
.
Deserialization
(
file_path
);
p
.
Deserialization
(
file_path
);
*
attrs_dict
=
static_cast
<
Name2
VariableMap
>
(
p
.
Values
());
*
attrs_dict
=
static_cast
<
VariableMap
>
(
p
.
Values
());
return
;
return
;
}
}
...
...
paddle/fluid/jit/serializer.h
浏览文件 @
be931dfe
...
@@ -31,8 +31,7 @@ class ProgramDesc;
...
@@ -31,8 +31,7 @@ class ProgramDesc;
namespace
jit
{
namespace
jit
{
class
Layer
;
class
Layer
;
using
Variable
=
paddle
::
framework
::
Variable
;
using
Variable
=
paddle
::
framework
::
Variable
;
using
Name2VariableMap
=
using
VariableMap
=
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
Variable
>>
;
std
::
unordered_map
<
std
::
string
,
std
::
shared_ptr
<
Variable
>>
;
// Export Layer into local disk
// Export Layer into local disk
class
Serializer
{
class
Serializer
{
...
@@ -56,11 +55,11 @@ class Deserializer {
...
@@ -56,11 +55,11 @@ class Deserializer {
void
ReadTensorData
(
const
std
::
string
&
file_name
,
void
ReadTensorData
(
const
std
::
string
&
file_name
,
const
std
::
set
<
std
::
string
>&
var_name
,
const
std
::
set
<
std
::
string
>&
var_name
,
const
phi
::
Place
&
place
,
const
phi
::
Place
&
place
,
Name2
VariableMap
*
params_dict
)
const
;
VariableMap
*
params_dict
)
const
;
// property pb
// property pb
void
ReadAttributeData
(
const
std
::
string
&
file_path
,
void
ReadAttributeData
(
const
std
::
string
&
file_path
,
Name2
VariableMap
*
attrs_dict
)
const
;
VariableMap
*
attrs_dict
)
const
;
// void ReadExtraInfo(const std::string& file_name) const;
// void ReadExtraInfo(const std::string& file_name) const;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录