Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle
提交
2cebcf4a
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看板
未验证
提交
2cebcf4a
编写于
4月 27, 2022
作者:
C
Chen Weihang
提交者:
GitHub
4月 27, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Unify utils naming style (#42264)
* unify utils naming style * polish details
上级
4c80385a
变更
30
展开全部
显示空白变更内容
内联
并排
Showing
30 changed file
with
408 addition
and
395 deletion
+408
-395
paddle/fluid/framework/infershape_utils.cc
paddle/fluid/framework/infershape_utils.cc
+4
-4
paddle/fluid/framework/infershape_utils.h
paddle/fluid/framework/infershape_utils.h
+5
-4
paddle/fluid/framework/new_executor/new_executor_defs.cc
paddle/fluid/framework/new_executor/new_executor_defs.cc
+4
-4
paddle/fluid/framework/new_executor/new_executor_defs.h
paddle/fluid/framework/new_executor/new_executor_defs.h
+2
-2
paddle/fluid/framework/op_desc.cc
paddle/fluid/framework/op_desc.cc
+4
-4
paddle/fluid/framework/operator.cc
paddle/fluid/framework/operator.cc
+6
-6
paddle/fluid/framework/operator.h
paddle/fluid/framework/operator.h
+2
-2
paddle/fluid/framework/phi_utils.cc
paddle/fluid/framework/phi_utils.cc
+9
-9
paddle/fluid/framework/phi_utils.h
paddle/fluid/framework/phi_utils.h
+3
-3
paddle/fluid/framework/shape_inference.h
paddle/fluid/framework/shape_inference.h
+2
-2
paddle/fluid/imperative/execution_context.h
paddle/fluid/imperative/execution_context.h
+2
-2
paddle/fluid/imperative/infer_shape_context.h
paddle/fluid/imperative/infer_shape_context.h
+6
-5
paddle/fluid/imperative/prepared_operator.h
paddle/fluid/imperative/prepared_operator.h
+2
-2
paddle/fluid/pybind/imperative.cc
paddle/fluid/pybind/imperative.cc
+29
-29
paddle/infrt/dialect/phi/pass/kernel_op_desc.cc
paddle/infrt/dialect/phi/pass/kernel_op_desc.cc
+2
-2
paddle/phi/core/compat/arg_map_context.h
paddle/phi/core/compat/arg_map_context.h
+12
-12
paddle/phi/core/infermeta_utils.cc
paddle/phi/core/infermeta_utils.cc
+2
-2
paddle/phi/core/infermeta_utils.h
paddle/phi/core/infermeta_utils.h
+7
-7
paddle/phi/core/kernel_context.cc
paddle/phi/core/kernel_context.cc
+4
-4
paddle/phi/core/kernel_context.h
paddle/phi/core/kernel_context.h
+9
-9
paddle/phi/core/kernel_factory.h
paddle/phi/core/kernel_factory.h
+11
-10
paddle/phi/ops/compat/adam_sig.cc
paddle/phi/ops/compat/adam_sig.cc
+16
-16
paddle/phi/ops/compat/adamw_sig.cc
paddle/phi/ops/compat/adamw_sig.cc
+16
-16
paddle/phi/ops/compat/clip_sig.cc
paddle/phi/ops/compat/clip_sig.cc
+1
-1
paddle/phi/ops/compat/strided_slice_sig.cc
paddle/phi/ops/compat/strided_slice_sig.cc
+16
-16
paddle/phi/tests/core/test_meta_fn_utils.cc
paddle/phi/tests/core/test_meta_fn_utils.cc
+1
-1
paddle/utils/array_ref.h
paddle/utils/array_ref.h
+84
-82
paddle/utils/array_ref_test.cc
paddle/utils/array_ref_test.cc
+17
-17
paddle/utils/small_vector.h
paddle/utils/small_vector.h
+128
-120
paddle/utils/small_vector_test.cc
paddle/utils/small_vector_test.cc
+2
-2
未找到文件。
paddle/fluid/framework/infershape_utils.cc
浏览文件 @
2cebcf4a
...
@@ -323,7 +323,7 @@ void CompatInferMetaContext::EmplaceBackOutput(CompatMetaTensor output) {
...
@@ -323,7 +323,7 @@ void CompatInferMetaContext::EmplaceBackOutput(CompatMetaTensor output) {
}
}
void
CompatInferMetaContext
::
EmplaceBackInputs
(
void
CompatInferMetaContext
::
EmplaceBackInputs
(
paddle
::
SmallV
ector
<
CompatMetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs
)
{
paddle
::
small_v
ector
<
CompatMetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs
)
{
int
index
=
compat_inputs_
.
size
();
int
index
=
compat_inputs_
.
size
();
input_range_
.
emplace_back
(
std
::
pair
<
int
,
int
>
(
index
,
index
+
inputs
.
size
()));
input_range_
.
emplace_back
(
std
::
pair
<
int
,
int
>
(
index
,
index
+
inputs
.
size
()));
compat_inputs_
.
insert
(
compat_inputs_
.
end
(),
compat_inputs_
.
insert
(
compat_inputs_
.
end
(),
...
@@ -332,7 +332,7 @@ void CompatInferMetaContext::EmplaceBackInputs(
...
@@ -332,7 +332,7 @@ void CompatInferMetaContext::EmplaceBackInputs(
}
}
void
CompatInferMetaContext
::
EmplaceBackOutputs
(
void
CompatInferMetaContext
::
EmplaceBackOutputs
(
paddle
::
SmallV
ector
<
CompatMetaTensor
,
phi
::
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
CompatMetaTensor
,
phi
::
kOutputSmallVectorSize
>
outputs
)
{
outputs
)
{
int
index
=
compat_outputs_
.
size
();
int
index
=
compat_outputs_
.
size
();
output_range_
.
emplace_back
(
output_range_
.
emplace_back
(
...
@@ -431,7 +431,7 @@ CompatInferMetaContext BuildInferMetaContext(InferShapeContext* ctx,
...
@@ -431,7 +431,7 @@ CompatInferMetaContext BuildInferMetaContext(InferShapeContext* ctx,
infer_meta_context
.
EmplaceBackInput
(
infer_meta_context
.
EmplaceBackInput
(
std
::
move
(
CompatMetaTensor
(
input_var
[
0
],
ctx
->
IsRuntime
())));
std
::
move
(
CompatMetaTensor
(
input_var
[
0
],
ctx
->
IsRuntime
())));
}
else
{
}
else
{
paddle
::
SmallV
ector
<
CompatMetaTensor
,
phi
::
kInputSmallVectorSize
>
paddle
::
small_v
ector
<
CompatMetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs
;
inputs
;
for
(
const
auto
&
in
:
input_var
)
{
for
(
const
auto
&
in
:
input_var
)
{
inputs
.
emplace_back
(
inputs
.
emplace_back
(
...
@@ -672,7 +672,7 @@ CompatInferMetaContext BuildInferMetaContext(InferShapeContext* ctx,
...
@@ -672,7 +672,7 @@ CompatInferMetaContext BuildInferMetaContext(InferShapeContext* ctx,
infer_meta_context
.
EmplaceBackOutput
(
infer_meta_context
.
EmplaceBackOutput
(
std
::
move
(
CompatMetaTensor
(
output_var
[
0
],
ctx
->
IsRuntime
())));
std
::
move
(
CompatMetaTensor
(
output_var
[
0
],
ctx
->
IsRuntime
())));
}
else
{
}
else
{
paddle
::
SmallV
ector
<
CompatMetaTensor
,
phi
::
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
CompatMetaTensor
,
phi
::
kOutputSmallVectorSize
>
outputs
;
outputs
;
for
(
const
auto
&
out
:
output_var
)
{
for
(
const
auto
&
out
:
output_var
)
{
if
(
ctx
->
IsRuntime
())
{
if
(
ctx
->
IsRuntime
())
{
...
...
paddle/fluid/framework/infershape_utils.h
浏览文件 @
2cebcf4a
...
@@ -100,9 +100,10 @@ class CompatInferMetaContext : public phi::InferMetaContext {
...
@@ -100,9 +100,10 @@ class CompatInferMetaContext : public phi::InferMetaContext {
void
EmplaceBackOutput
(
CompatMetaTensor
output
);
void
EmplaceBackOutput
(
CompatMetaTensor
output
);
void
EmplaceBackInputs
(
void
EmplaceBackInputs
(
paddle
::
SmallVector
<
CompatMetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs
);
paddle
::
small_vector
<
CompatMetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs
);
void
EmplaceBackOutputs
(
void
EmplaceBackOutputs
(
paddle
::
SmallV
ector
<
CompatMetaTensor
,
phi
::
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
CompatMetaTensor
,
phi
::
kOutputSmallVectorSize
>
outputs
);
outputs
);
const
phi
::
MetaTensor
&
InputAt
(
size_t
idx
)
const
override
;
const
phi
::
MetaTensor
&
InputAt
(
size_t
idx
)
const
override
;
...
@@ -121,9 +122,9 @@ class CompatInferMetaContext : public phi::InferMetaContext {
...
@@ -121,9 +122,9 @@ class CompatInferMetaContext : public phi::InferMetaContext {
virtual
~
CompatInferMetaContext
()
=
default
;
virtual
~
CompatInferMetaContext
()
=
default
;
private:
private:
paddle
::
SmallV
ector
<
CompatMetaTensor
,
phi
::
kInputSmallVectorSize
>
paddle
::
small_v
ector
<
CompatMetaTensor
,
phi
::
kInputSmallVectorSize
>
compat_inputs_
;
compat_inputs_
;
paddle
::
SmallV
ector
<
CompatMetaTensor
,
phi
::
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
CompatMetaTensor
,
phi
::
kOutputSmallVectorSize
>
compat_outputs_
;
compat_outputs_
;
};
};
...
...
paddle/fluid/framework/new_executor/new_executor_defs.cc
浏览文件 @
2cebcf4a
...
@@ -328,21 +328,21 @@ bool InterpretercoreInferShapeContext::IsRunMKLDNNKernel() const {
...
@@ -328,21 +328,21 @@ bool InterpretercoreInferShapeContext::IsRunMKLDNNKernel() const {
}
}
// TODO(paddle-dev): Can this be template?
// TODO(paddle-dev): Can this be template?
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
InterpretercoreInferShapeContext
::
GetInputVarPtrs
(
InterpretercoreInferShapeContext
::
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
{
const
std
::
string
&
name
)
const
{
const
std
::
vector
<
Variable
*>&
vars
=
InputVars
(
name
);
const
std
::
vector
<
Variable
*>&
vars
=
InputVars
(
name
);
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
res
;
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
res
;
res
.
reserve
(
vars
.
size
());
res
.
reserve
(
vars
.
size
());
res
.
insert
(
res
.
begin
(),
vars
.
begin
(),
vars
.
end
());
res
.
insert
(
res
.
begin
(),
vars
.
begin
(),
vars
.
end
());
return
res
;
return
res
;
}
}
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
InterpretercoreInferShapeContext
::
GetOutputVarPtrs
(
InterpretercoreInferShapeContext
::
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
{
const
std
::
string
&
name
)
const
{
const
std
::
vector
<
Variable
*>&
vars
=
OutputVars
(
name
);
const
std
::
vector
<
Variable
*>&
vars
=
OutputVars
(
name
);
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
res
;
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
res
;
res
.
reserve
(
vars
.
size
());
res
.
reserve
(
vars
.
size
());
res
.
insert
(
res
.
begin
(),
vars
.
begin
(),
vars
.
end
());
res
.
insert
(
res
.
begin
(),
vars
.
begin
(),
vars
.
end
());
return
res
;
return
res
;
...
...
paddle/fluid/framework/new_executor/new_executor_defs.h
浏览文件 @
2cebcf4a
...
@@ -90,10 +90,10 @@ class InterpretercoreInferShapeContext : public InferShapeContext {
...
@@ -90,10 +90,10 @@ class InterpretercoreInferShapeContext : public InferShapeContext {
bool
IsRunMKLDNNKernel
()
const
override
;
bool
IsRunMKLDNNKernel
()
const
override
;
// TODO(paddle-dev): Can this be template?
// TODO(paddle-dev): Can this be template?
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
override
;
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
override
;
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
override
;
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
override
;
DDim
GetInputDim
(
const
std
::
string
&
name
)
const
override
;
DDim
GetInputDim
(
const
std
::
string
&
name
)
const
override
;
...
...
paddle/fluid/framework/op_desc.cc
浏览文件 @
2cebcf4a
...
@@ -202,10 +202,10 @@ class CompileTimeInferShapeContext : public InferShapeContext {
...
@@ -202,10 +202,10 @@ class CompileTimeInferShapeContext : public InferShapeContext {
}
}
}
}
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
const
std
::
vector
<
std
::
string
>
arg_names
=
Inputs
(
name
);
const
std
::
vector
<
std
::
string
>
arg_names
=
Inputs
(
name
);
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
res
;
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
res
;
res
.
reserve
(
arg_names
.
size
());
res
.
reserve
(
arg_names
.
size
());
std
::
transform
(
arg_names
.
begin
(),
arg_names
.
end
(),
std
::
back_inserter
(
res
),
std
::
transform
(
arg_names
.
begin
(),
arg_names
.
end
(),
std
::
back_inserter
(
res
),
[
this
](
const
std
::
string
&
name
)
{
[
this
](
const
std
::
string
&
name
)
{
...
@@ -214,10 +214,10 @@ class CompileTimeInferShapeContext : public InferShapeContext {
...
@@ -214,10 +214,10 @@ class CompileTimeInferShapeContext : public InferShapeContext {
return
res
;
return
res
;
}
}
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
const
std
::
vector
<
std
::
string
>
arg_names
=
Outputs
(
name
);
const
std
::
vector
<
std
::
string
>
arg_names
=
Outputs
(
name
);
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
res
;
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
res
;
res
.
reserve
(
arg_names
.
size
());
res
.
reserve
(
arg_names
.
size
());
std
::
transform
(
arg_names
.
begin
(),
arg_names
.
end
(),
std
::
back_inserter
(
res
),
std
::
transform
(
arg_names
.
begin
(),
arg_names
.
end
(),
std
::
back_inserter
(
res
),
[
this
](
const
std
::
string
&
name
)
{
[
this
](
const
std
::
string
&
name
)
{
...
...
paddle/fluid/framework/operator.cc
浏览文件 @
2cebcf4a
...
@@ -946,19 +946,19 @@ class RuntimeInferShapeContext : public InferShapeContext {
...
@@ -946,19 +946,19 @@ class RuntimeInferShapeContext : public InferShapeContext {
}
}
// TODO(paddle-dev): Can this be template?
// TODO(paddle-dev): Can this be template?
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
const
std
::
vector
<
Variable
*>&
vars
=
InputVars
(
name
);
const
std
::
vector
<
Variable
*>&
vars
=
InputVars
(
name
);
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
res
;
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
res
;
res
.
reserve
(
vars
.
size
());
res
.
reserve
(
vars
.
size
());
res
.
insert
(
res
.
begin
(),
vars
.
begin
(),
vars
.
end
());
res
.
insert
(
res
.
begin
(),
vars
.
begin
(),
vars
.
end
());
return
res
;
return
res
;
}
}
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
const
std
::
vector
<
Variable
*>&
vars
=
OutputVars
(
name
);
const
std
::
vector
<
Variable
*>&
vars
=
OutputVars
(
name
);
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
res
;
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
res
;
res
.
reserve
(
vars
.
size
());
res
.
reserve
(
vars
.
size
());
res
.
insert
(
res
.
begin
(),
vars
.
begin
(),
vars
.
end
());
res
.
insert
(
res
.
begin
(),
vars
.
begin
(),
vars
.
end
());
return
res
;
return
res
;
...
@@ -2344,7 +2344,7 @@ void OperatorWithKernel::BuildPhiKernelContext(
...
@@ -2344,7 +2344,7 @@ void OperatorWithKernel::BuildPhiKernelContext(
tensor_in
=
&
(
var
->
Get
<
phi
::
SelectedRows
>
());
tensor_in
=
&
(
var
->
Get
<
phi
::
SelectedRows
>
());
pt_kernel_context
->
EmplaceBackInputWithoutSetRange
(
tensor_in
);
pt_kernel_context
->
EmplaceBackInputWithoutSetRange
(
tensor_in
);
}
else
if
(
var
->
IsType
<
framework
::
LoDTensorArray
>
())
{
}
else
if
(
var
->
IsType
<
framework
::
LoDTensorArray
>
())
{
paddle
::
SmallV
ector
<
const
phi
::
TensorBase
*>
tensor_vector
;
paddle
::
small_v
ector
<
const
phi
::
TensorBase
*>
tensor_vector
;
auto
&
tensor_array
=
var
->
Get
<
framework
::
LoDTensorArray
>
();
auto
&
tensor_array
=
var
->
Get
<
framework
::
LoDTensorArray
>
();
for
(
auto
&
t
:
tensor_array
)
{
for
(
auto
&
t
:
tensor_array
)
{
tensor_vector
.
emplace_back
(
&
t
);
tensor_vector
.
emplace_back
(
&
t
);
...
@@ -2393,7 +2393,7 @@ void OperatorWithKernel::BuildPhiKernelContext(
...
@@ -2393,7 +2393,7 @@ void OperatorWithKernel::BuildPhiKernelContext(
tensor_out
=
var
->
template
GetMutable
<
phi
::
SelectedRows
>();
tensor_out
=
var
->
template
GetMutable
<
phi
::
SelectedRows
>();
pt_kernel_context
->
EmplaceBackOutputWithoutSetRange
(
tensor_out
);
pt_kernel_context
->
EmplaceBackOutputWithoutSetRange
(
tensor_out
);
}
else
if
(
var
->
template
IsType
<
framework
::
LoDTensorArray
>())
{
}
else
if
(
var
->
template
IsType
<
framework
::
LoDTensorArray
>())
{
paddle
::
SmallV
ector
<
phi
::
TensorBase
*>
tensor_vector
;
paddle
::
small_v
ector
<
phi
::
TensorBase
*>
tensor_vector
;
auto
*
tensor_array
=
auto
*
tensor_array
=
var
->
template
GetMutable
<
framework
::
LoDTensorArray
>();
var
->
template
GetMutable
<
framework
::
LoDTensorArray
>();
// Note: If the input LoDTensorArray size is 0, the output
// Note: If the input LoDTensorArray size is 0, the output
...
...
paddle/fluid/framework/operator.h
浏览文件 @
2cebcf4a
...
@@ -333,8 +333,8 @@ class ExecutionContext {
...
@@ -333,8 +333,8 @@ class ExecutionContext {
return
it
->
second
;
return
it
->
second
;
}
}
virtual
paddle
::
SmallV
ector
<
const
std
::
string
*>
InNameList
()
const
{
virtual
paddle
::
small_v
ector
<
const
std
::
string
*>
InNameList
()
const
{
paddle
::
SmallV
ector
<
const
std
::
string
*>
vec_temp
;
paddle
::
small_v
ector
<
const
std
::
string
*>
vec_temp
;
vec_temp
.
reserve
(
ctx_
.
inputs
.
size
());
vec_temp
.
reserve
(
ctx_
.
inputs
.
size
());
for
(
auto
&
input
:
ctx_
.
inputs
)
{
for
(
auto
&
input
:
ctx_
.
inputs
)
{
...
...
paddle/fluid/framework/phi_utils.cc
浏览文件 @
2cebcf4a
...
@@ -41,9 +41,9 @@ class KernelArgsNameMakerByOpProto : public KernelArgsNameMaker {
...
@@ -41,9 +41,9 @@ class KernelArgsNameMakerByOpProto : public KernelArgsNameMaker {
~
KernelArgsNameMakerByOpProto
()
{}
~
KernelArgsNameMakerByOpProto
()
{}
const
paddle
::
SmallV
ector
<
const
char
*>&
GetInputArgsNames
()
override
;
const
paddle
::
small_v
ector
<
const
char
*>&
GetInputArgsNames
()
override
;
const
paddle
::
SmallV
ector
<
const
char
*>&
GetOutputArgsNames
()
override
;
const
paddle
::
small_v
ector
<
const
char
*>&
GetOutputArgsNames
()
override
;
const
paddle
::
SmallV
ector
<
const
char
*>&
GetAttrsArgsNames
()
override
;
const
paddle
::
small_v
ector
<
const
char
*>&
GetAttrsArgsNames
()
override
;
phi
::
KernelSignature
GetKernelSignature
();
phi
::
KernelSignature
GetKernelSignature
();
...
@@ -53,9 +53,9 @@ class KernelArgsNameMakerByOpProto : public KernelArgsNameMaker {
...
@@ -53,9 +53,9 @@ class KernelArgsNameMakerByOpProto : public KernelArgsNameMaker {
private:
private:
const
framework
::
proto
::
OpProto
*
op_proto_
;
const
framework
::
proto
::
OpProto
*
op_proto_
;
paddle
::
SmallV
ector
<
const
char
*>
input_names_
;
paddle
::
small_v
ector
<
const
char
*>
input_names_
;
paddle
::
SmallV
ector
<
const
char
*>
output_names_
;
paddle
::
small_v
ector
<
const
char
*>
output_names_
;
paddle
::
SmallV
ector
<
const
char
*>
attr_names_
;
paddle
::
small_v
ector
<
const
char
*>
attr_names_
;
};
};
OpKernelType
TransPhiKernelKeyToOpKernelType
(
const
phi
::
KernelKey
&
kernel_key
)
{
OpKernelType
TransPhiKernelKeyToOpKernelType
(
const
phi
::
KernelKey
&
kernel_key
)
{
...
@@ -149,7 +149,7 @@ phi::KernelKey FallBackToCpu(const OpKernelType& expected_kernel_key,
...
@@ -149,7 +149,7 @@ phi::KernelKey FallBackToCpu(const OpKernelType& expected_kernel_key,
return
phi
::
KernelKey
();
return
phi
::
KernelKey
();
}
}
const
paddle
::
SmallV
ector
<
const
char
*>&
const
paddle
::
small_v
ector
<
const
char
*>&
KernelArgsNameMakerByOpProto
::
GetInputArgsNames
()
{
KernelArgsNameMakerByOpProto
::
GetInputArgsNames
()
{
for
(
int
i
=
0
;
i
<
op_proto_
->
inputs_size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
op_proto_
->
inputs_size
();
++
i
)
{
auto
&
in
=
op_proto_
->
inputs
()[
i
];
auto
&
in
=
op_proto_
->
inputs
()[
i
];
...
@@ -174,7 +174,7 @@ KernelArgsNameMakerByOpProto::GetInputArgsNames() {
...
@@ -174,7 +174,7 @@ KernelArgsNameMakerByOpProto::GetInputArgsNames() {
return
input_names_
;
return
input_names_
;
}
}
const
paddle
::
SmallV
ector
<
const
char
*>&
const
paddle
::
small_v
ector
<
const
char
*>&
KernelArgsNameMakerByOpProto
::
GetOutputArgsNames
()
{
KernelArgsNameMakerByOpProto
::
GetOutputArgsNames
()
{
for
(
int
i
=
0
;
i
<
op_proto_
->
outputs_size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
op_proto_
->
outputs_size
();
++
i
)
{
auto
&
out
=
op_proto_
->
outputs
()[
i
];
auto
&
out
=
op_proto_
->
outputs
()[
i
];
...
@@ -194,7 +194,7 @@ KernelArgsNameMakerByOpProto::GetOutputArgsNames() {
...
@@ -194,7 +194,7 @@ KernelArgsNameMakerByOpProto::GetOutputArgsNames() {
return
output_names_
;
return
output_names_
;
}
}
const
paddle
::
SmallV
ector
<
const
char
*>&
const
paddle
::
small_v
ector
<
const
char
*>&
KernelArgsNameMakerByOpProto
::
GetAttrsArgsNames
()
{
KernelArgsNameMakerByOpProto
::
GetAttrsArgsNames
()
{
for
(
int
i
=
0
;
i
<
op_proto_
->
attrs_size
();
++
i
)
{
for
(
int
i
=
0
;
i
<
op_proto_
->
attrs_size
();
++
i
)
{
auto
&
attr
=
op_proto_
->
attrs
()[
i
];
auto
&
attr
=
op_proto_
->
attrs
()[
i
];
...
...
paddle/fluid/framework/phi_utils.h
浏览文件 @
2cebcf4a
...
@@ -53,9 +53,9 @@ phi::KernelKey FallBackToCpu(const OpKernelType& expected_kernel_key,
...
@@ -53,9 +53,9 @@ phi::KernelKey FallBackToCpu(const OpKernelType& expected_kernel_key,
class
KernelArgsNameMaker
{
class
KernelArgsNameMaker
{
public:
public:
virtual
~
KernelArgsNameMaker
()
{}
virtual
~
KernelArgsNameMaker
()
{}
virtual
const
paddle
::
SmallV
ector
<
const
char
*>&
GetInputArgsNames
()
=
0
;
virtual
const
paddle
::
small_v
ector
<
const
char
*>&
GetInputArgsNames
()
=
0
;
virtual
const
paddle
::
SmallV
ector
<
const
char
*>&
GetOutputArgsNames
()
=
0
;
virtual
const
paddle
::
small_v
ector
<
const
char
*>&
GetOutputArgsNames
()
=
0
;
virtual
const
paddle
::
SmallV
ector
<
const
char
*>&
GetAttrsArgsNames
()
=
0
;
virtual
const
paddle
::
small_v
ector
<
const
char
*>&
GetAttrsArgsNames
()
=
0
;
};
};
void
InitDefaultKernelSignatureMap
();
void
InitDefaultKernelSignatureMap
();
...
...
paddle/fluid/framework/shape_inference.h
浏览文件 @
2cebcf4a
...
@@ -110,9 +110,9 @@ class InferShapeContext {
...
@@ -110,9 +110,9 @@ class InferShapeContext {
virtual
bool
IsRunMKLDNNKernel
()
const
=
0
;
virtual
bool
IsRunMKLDNNKernel
()
const
=
0
;
virtual
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
virtual
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
=
0
;
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
=
0
;
virtual
paddle
::
SmallV
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
virtual
paddle
::
small_v
ector
<
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
=
0
;
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
=
0
;
virtual
const
phi
::
ArgumentMappingFn
*
GetPhiArgumentMappingFn
()
const
=
0
;
virtual
const
phi
::
ArgumentMappingFn
*
GetPhiArgumentMappingFn
()
const
=
0
;
...
...
paddle/fluid/imperative/execution_context.h
浏览文件 @
2cebcf4a
...
@@ -117,8 +117,8 @@ class DygraphExecutionContext : public framework::ExecutionContext {
...
@@ -117,8 +117,8 @@ class DygraphExecutionContext : public framework::ExecutionContext {
return
it
->
second
;
return
it
->
second
;
}
}
paddle
::
SmallV
ector
<
const
std
::
string
*>
InNameList
()
const
override
{
paddle
::
small_v
ector
<
const
std
::
string
*>
InNameList
()
const
override
{
paddle
::
SmallV
ector
<
const
std
::
string
*>
vec_temp
;
paddle
::
small_v
ector
<
const
std
::
string
*>
vec_temp
;
vec_temp
.
reserve
(
var_map_in_
.
size
());
vec_temp
.
reserve
(
var_map_in_
.
size
());
for
(
auto
&
v
:
var_map_in_
)
{
for
(
auto
&
v
:
var_map_in_
)
{
...
...
paddle/fluid/imperative/infer_shape_context.h
浏览文件 @
2cebcf4a
...
@@ -239,9 +239,10 @@ class DygraphInferShapeContext : public framework::InferShapeContext {
...
@@ -239,9 +239,10 @@ class DygraphInferShapeContext : public framework::InferShapeContext {
(
op_kernel_type_
->
data_layout_
==
framework
::
DataLayout
::
kMKLDNN
));
(
op_kernel_type_
->
data_layout_
==
framework
::
DataLayout
::
kMKLDNN
));
}
}
paddle
::
SmallV
ector
<
framework
::
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
paddle
::
small_v
ector
<
framework
::
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
GetInputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
paddle
::
SmallVector
<
framework
::
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
paddle
::
small_vector
<
framework
::
InferShapeVarPtr
,
phi
::
kInputSmallVectorSize
>
res
;
res
;
auto
it
=
var_map_in_
->
find
(
name
);
auto
it
=
var_map_in_
->
find
(
name
);
PADDLE_ENFORCE_NE
(
PADDLE_ENFORCE_NE
(
...
@@ -253,9 +254,9 @@ class DygraphInferShapeContext : public framework::InferShapeContext {
...
@@ -253,9 +254,9 @@ class DygraphInferShapeContext : public framework::InferShapeContext {
return
res
;
return
res
;
}
}
paddle
::
SmallV
ector
<
framework
::
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
framework
::
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
GetOutputVarPtrs
(
const
std
::
string
&
name
)
const
override
{
paddle
::
SmallV
ector
<
framework
::
InferShapeVarPtr
,
paddle
::
small_v
ector
<
framework
::
InferShapeVarPtr
,
phi
::
kOutputSmallVectorSize
>
phi
::
kOutputSmallVectorSize
>
res
;
res
;
auto
it
=
var_map_out_
->
find
(
name
);
auto
it
=
var_map_out_
->
find
(
name
);
...
...
paddle/fluid/imperative/prepared_operator.h
浏览文件 @
2cebcf4a
...
@@ -311,7 +311,7 @@ void BuildDygraphPhiKernelContext(const phi::KernelSignature& kernel_signature,
...
@@ -311,7 +311,7 @@ void BuildDygraphPhiKernelContext(const phi::KernelSignature& kernel_signature,
tensor_in
=
&
(
var
.
template
Get
<
phi
::
SelectedRows
>());
tensor_in
=
&
(
var
.
template
Get
<
phi
::
SelectedRows
>());
kernel_ctx
->
EmplaceBackInputWithoutSetRange
(
tensor_in
);
kernel_ctx
->
EmplaceBackInputWithoutSetRange
(
tensor_in
);
}
else
if
(
var
.
template
IsType
<
framework
::
LoDTensorArray
>())
{
}
else
if
(
var
.
template
IsType
<
framework
::
LoDTensorArray
>())
{
paddle
::
SmallV
ector
<
const
phi
::
TensorBase
*>
tensor_vector
;
paddle
::
small_v
ector
<
const
phi
::
TensorBase
*>
tensor_vector
;
auto
&
tensor_array
=
var
.
template
Get
<
framework
::
LoDTensorArray
>();
auto
&
tensor_array
=
var
.
template
Get
<
framework
::
LoDTensorArray
>();
for
(
auto
&
t
:
tensor_array
)
{
for
(
auto
&
t
:
tensor_array
)
{
tensor_vector
.
emplace_back
(
&
t
);
tensor_vector
.
emplace_back
(
&
t
);
...
@@ -357,7 +357,7 @@ void BuildDygraphPhiKernelContext(const phi::KernelSignature& kernel_signature,
...
@@ -357,7 +357,7 @@ void BuildDygraphPhiKernelContext(const phi::KernelSignature& kernel_signature,
tensor_out
=
var
->
template
GetMutable
<
phi
::
SelectedRows
>();
tensor_out
=
var
->
template
GetMutable
<
phi
::
SelectedRows
>();
kernel_ctx
->
EmplaceBackOutputWithoutSetRange
(
tensor_out
);
kernel_ctx
->
EmplaceBackOutputWithoutSetRange
(
tensor_out
);
}
else
if
(
var
->
template
IsType
<
framework
::
LoDTensorArray
>())
{
}
else
if
(
var
->
template
IsType
<
framework
::
LoDTensorArray
>())
{
paddle
::
SmallV
ector
<
phi
::
TensorBase
*>
tensor_vector
;
paddle
::
small_v
ector
<
phi
::
TensorBase
*>
tensor_vector
;
auto
*
tensor_array
=
auto
*
tensor_array
=
var
->
template
GetMutable
<
framework
::
LoDTensorArray
>();
var
->
template
GetMutable
<
framework
::
LoDTensorArray
>();
for
(
auto
&
t
:
*
tensor_array
)
{
for
(
auto
&
t
:
*
tensor_array
)
{
...
...
paddle/fluid/pybind/imperative.cc
浏览文件 @
2cebcf4a
...
@@ -2028,8 +2028,7 @@ void BindImperative(py::module *m_ptr) {
...
@@ -2028,8 +2028,7 @@ void BindImperative(py::module *m_ptr) {
*
(
imperative
::
AmpOperators
::
Instance
().
GetMutableAllowOps
()),
*
(
imperative
::
AmpOperators
::
Instance
().
GetMutableAllowOps
()),
*
(
imperative
::
AmpOperators
::
Instance
().
GetMutableBlockOps
()));
*
(
imperative
::
AmpOperators
::
Instance
().
GetMutableBlockOps
()));
})
})
.
def
(
.
def
(
"_get_kernel_signature"
,
"_get_kernel_signature"
,
[](
imperative
::
Tracer
&
self
,
const
std
::
string
&
type
,
[](
imperative
::
Tracer
&
self
,
const
std
::
string
&
type
,
const
PyNameVarBaseMap
&
ins
,
const
PyNameVarBaseMap
&
outs
,
const
PyNameVarBaseMap
&
ins
,
const
PyNameVarBaseMap
&
outs
,
framework
::
AttributeMap
attrs
)
{
framework
::
AttributeMap
attrs
)
{
...
@@ -2038,14 +2037,15 @@ void BindImperative(py::module *m_ptr) {
...
@@ -2038,14 +2037,15 @@ void BindImperative(py::module *m_ptr) {
auto
outs_map
=
ConvertToNameTensorMap
(
outs
);
auto
outs_map
=
ConvertToNameTensorMap
(
outs
);
{
{
auto
input_to_vector
=
auto
input_to_vector
=
[](
paddle
::
SmallV
ector
<
const
char
*>
&
vec
)
{
[](
paddle
::
small_v
ector
<
const
char
*>
&
vec
)
{
return
std
::
vector
<
std
::
string
>
(
vec
.
begin
(),
vec
.
end
());
return
std
::
vector
<
std
::
string
>
(
vec
.
begin
(),
vec
.
end
());
};
};
auto
output_to_vector
=
auto
output_to_vector
=
[](
paddle
::
SmallV
ector
<
const
char
*>
&
vec
)
{
[](
paddle
::
small_v
ector
<
const
char
*>
&
vec
)
{
return
std
::
vector
<
std
::
string
>
(
vec
.
begin
(),
vec
.
end
());
return
std
::
vector
<
std
::
string
>
(
vec
.
begin
(),
vec
.
end
());
};
};
auto
attr_to_vector
=
[](
paddle
::
SmallVector
<
const
char
*>
&
vec
)
{
auto
attr_to_vector
=
[](
paddle
::
small_vector
<
const
char
*>
&
vec
)
{
return
std
::
vector
<
std
::
string
>
(
vec
.
begin
(),
vec
.
end
());
return
std
::
vector
<
std
::
string
>
(
vec
.
begin
(),
vec
.
end
());
};
};
auto
ret
=
self
.
GetExpectedKernelSignature
(
type
,
ins_map
,
auto
ret
=
self
.
GetExpectedKernelSignature
(
type
,
ins_map
,
...
...
paddle/infrt/dialect/phi/pass/kernel_op_desc.cc
浏览文件 @
2cebcf4a
...
@@ -93,9 +93,9 @@ std::vector<PhiKernelDesc> GetCandidateKernels(
...
@@ -93,9 +93,9 @@ std::vector<PhiKernelDesc> GetCandidateKernels(
phi_kernel_desc
.
input_types
.
clear
();
phi_kernel_desc
.
input_types
.
clear
();
phi_kernel_desc
.
output_types
.
clear
();
phi_kernel_desc
.
output_types
.
clear
();
phi
::
KernelArgsDef
args_def
=
kernel_key_map
.
at
(
kernel_key
).
args_def
();
phi
::
KernelArgsDef
args_def
=
kernel_key_map
.
at
(
kernel_key
).
args_def
();
const
paddle
::
SmallV
ector
<
phi
::
TensorArgDef
,
phi
::
kInputSmallVectorSize
>&
const
paddle
::
small_v
ector
<
phi
::
TensorArgDef
,
phi
::
kInputSmallVectorSize
>&
input_arg
=
args_def
.
input_defs
();
input_arg
=
args_def
.
input_defs
();
const
paddle
::
SmallV
ector
<
phi
::
TensorArgDef
,
phi
::
kOutputSmallVectorSize
>&
const
paddle
::
small_v
ector
<
phi
::
TensorArgDef
,
phi
::
kOutputSmallVectorSize
>&
output_arg
=
args_def
.
output_defs
();
output_arg
=
args_def
.
output_defs
();
for
(
auto
tensor_arg
:
input_arg
)
{
for
(
auto
tensor_arg
:
input_arg
)
{
phi_kernel_desc
.
input_types
.
emplace_back
(
ConvertPlaceFromPhi
(
tensor_arg
));
phi_kernel_desc
.
input_types
.
emplace_back
(
ConvertPlaceFromPhi
(
tensor_arg
));
...
...
paddle/phi/core/compat/arg_map_context.h
浏览文件 @
2cebcf4a
...
@@ -27,30 +27,30 @@ limitations under the License. */
...
@@ -27,30 +27,30 @@ limitations under the License. */
namespace
phi
{
namespace
phi
{
// tuple(input_names, attr_names, output_names)
// tuple(input_names, attr_names, output_names)
using
KernelArgsTuple
=
std
::
tuple
<
paddle
::
SmallV
ector
<
const
char
*>
,
using
KernelArgsTuple
=
std
::
tuple
<
paddle
::
small_v
ector
<
const
char
*>
,
paddle
::
SmallV
ector
<
const
char
*>
,
paddle
::
small_v
ector
<
const
char
*>
,
paddle
::
SmallV
ector
<
const
char
*>>
;
paddle
::
small_v
ector
<
const
char
*>>
;
struct
KernelSignature
{
struct
KernelSignature
{
const
char
*
name
;
const
char
*
name
;
paddle
::
SmallV
ector
<
const
char
*>
input_names
;
paddle
::
small_v
ector
<
const
char
*>
input_names
;
paddle
::
SmallV
ector
<
const
char
*>
attr_names
;
paddle
::
small_v
ector
<
const
char
*>
attr_names
;
paddle
::
SmallV
ector
<
const
char
*>
output_names
;
paddle
::
small_v
ector
<
const
char
*>
output_names
;
KernelSignature
()
=
default
;
KernelSignature
()
=
default
;
KernelSignature
(
const
char
*
kernel_name
,
KernelSignature
(
const
char
*
kernel_name
,
paddle
::
SmallV
ector
<
const
char
*>&&
inputs
,
paddle
::
small_v
ector
<
const
char
*>&&
inputs
,
paddle
::
SmallV
ector
<
const
char
*>&&
attrs
,
paddle
::
small_v
ector
<
const
char
*>&&
attrs
,
paddle
::
SmallV
ector
<
const
char
*>&&
outputs
)
paddle
::
small_v
ector
<
const
char
*>&&
outputs
)
:
name
(
kernel_name
),
:
name
(
kernel_name
),
input_names
(
std
::
move
(
inputs
)),
input_names
(
std
::
move
(
inputs
)),
attr_names
(
std
::
move
(
attrs
)),
attr_names
(
std
::
move
(
attrs
)),
output_names
(
std
::
move
(
outputs
))
{}
output_names
(
std
::
move
(
outputs
))
{}
KernelSignature
(
const
char
*
kernel_name
,
KernelSignature
(
const
char
*
kernel_name
,
const
paddle
::
SmallV
ector
<
const
char
*>&
inputs
,
const
paddle
::
small_v
ector
<
const
char
*>&
inputs
,
const
paddle
::
SmallV
ector
<
const
char
*>&
attrs
,
const
paddle
::
small_v
ector
<
const
char
*>&
attrs
,
const
paddle
::
SmallV
ector
<
const
char
*>&
outputs
)
const
paddle
::
small_v
ector
<
const
char
*>&
outputs
)
:
name
(
kernel_name
),
:
name
(
kernel_name
),
input_names
(
inputs
),
input_names
(
inputs
),
attr_names
(
attrs
),
attr_names
(
attrs
),
...
...
paddle/phi/core/infermeta_utils.cc
浏览文件 @
2cebcf4a
...
@@ -35,7 +35,7 @@ void InferMetaContext::EmplaceBackAttr(Attribute attr) {
...
@@ -35,7 +35,7 @@ void InferMetaContext::EmplaceBackAttr(Attribute attr) {
}
}
void
InferMetaContext
::
EmplaceBackInputs
(
void
InferMetaContext
::
EmplaceBackInputs
(
paddle
::
SmallV
ector
<
MetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs
)
{
paddle
::
small_v
ector
<
MetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs
)
{
int
index
=
inputs_
.
size
();
int
index
=
inputs_
.
size
();
input_range_
.
emplace_back
(
std
::
pair
<
int
,
int
>
(
index
,
index
+
inputs
.
size
()));
input_range_
.
emplace_back
(
std
::
pair
<
int
,
int
>
(
index
,
index
+
inputs
.
size
()));
inputs_
.
insert
(
inputs_
.
end
(),
inputs_
.
insert
(
inputs_
.
end
(),
...
@@ -43,7 +43,7 @@ void InferMetaContext::EmplaceBackInputs(
...
@@ -43,7 +43,7 @@ void InferMetaContext::EmplaceBackInputs(
std
::
make_move_iterator
(
inputs
.
end
()));
std
::
make_move_iterator
(
inputs
.
end
()));
}
}
void
InferMetaContext
::
EmplaceBackOutputs
(
void
InferMetaContext
::
EmplaceBackOutputs
(
paddle
::
SmallV
ector
<
MetaTensor
,
phi
::
kOutputSmallVectorSize
>
outputs
)
{
paddle
::
small_v
ector
<
MetaTensor
,
phi
::
kOutputSmallVectorSize
>
outputs
)
{
int
index
=
outputs_
.
size
();
int
index
=
outputs_
.
size
();
output_range_
.
emplace_back
(
output_range_
.
emplace_back
(
std
::
pair
<
int
,
int
>
(
index
,
index
+
outputs
.
size
()));
std
::
pair
<
int
,
int
>
(
index
,
index
+
outputs
.
size
()));
...
...
paddle/phi/core/infermeta_utils.h
浏览文件 @
2cebcf4a
...
@@ -45,9 +45,9 @@ class InferMetaContext {
...
@@ -45,9 +45,9 @@ class InferMetaContext {
void
EmplaceBackAttr
(
Attribute
attr
);
void
EmplaceBackAttr
(
Attribute
attr
);
void
EmplaceBackInputs
(
void
EmplaceBackInputs
(
paddle
::
SmallV
ector
<
MetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs
);
paddle
::
small_v
ector
<
MetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs
);
void
EmplaceBackOutputs
(
void
EmplaceBackOutputs
(
paddle
::
SmallV
ector
<
MetaTensor
,
phi
::
kOutputSmallVectorSize
>
outputs
);
paddle
::
small_v
ector
<
MetaTensor
,
phi
::
kOutputSmallVectorSize
>
outputs
);
virtual
const
MetaTensor
&
InputAt
(
size_t
idx
)
const
;
virtual
const
MetaTensor
&
InputAt
(
size_t
idx
)
const
;
virtual
paddle
::
optional
<
const
MetaTensor
&>
OptionalInputAt
(
size_t
idx
)
const
;
virtual
paddle
::
optional
<
const
MetaTensor
&>
OptionalInputAt
(
size_t
idx
)
const
;
...
@@ -72,16 +72,16 @@ class InferMetaContext {
...
@@ -72,16 +72,16 @@ class InferMetaContext {
protected:
protected:
MetaConfig
config_
;
MetaConfig
config_
;
paddle
::
SmallV
ector
<
Attribute
,
kAttrSmallVectorSize
>
attrs_
;
paddle
::
small_v
ector
<
Attribute
,
kAttrSmallVectorSize
>
attrs_
;
paddle
::
SmallV
ector
<
std
::
pair
<
int
,
int
>
,
phi
::
kInputSmallVectorSize
>
paddle
::
small_v
ector
<
std
::
pair
<
int
,
int
>
,
phi
::
kInputSmallVectorSize
>
input_range_
;
input_range_
;
paddle
::
SmallV
ector
<
std
::
pair
<
int
,
int
>
,
phi
::
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
std
::
pair
<
int
,
int
>
,
phi
::
kOutputSmallVectorSize
>
output_range_
;
output_range_
;
private:
private:
paddle
::
SmallV
ector
<
MetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs_
;
paddle
::
small_v
ector
<
MetaTensor
,
phi
::
kInputSmallVectorSize
>
inputs_
;
paddle
::
SmallV
ector
<
MetaTensor
,
phi
::
kOutputSmallVectorSize
>
outputs_
;
paddle
::
small_v
ector
<
MetaTensor
,
phi
::
kOutputSmallVectorSize
>
outputs_
;
};
};
#define PD_INFER_META(...) \
#define PD_INFER_META(...) \
...
...
paddle/phi/core/kernel_context.cc
浏览文件 @
2cebcf4a
...
@@ -28,7 +28,7 @@ void KernelContext::EmplaceBackInputWithoutSetRange(const TensorBase* input) {
...
@@ -28,7 +28,7 @@ void KernelContext::EmplaceBackInputWithoutSetRange(const TensorBase* input) {
}
}
void
KernelContext
::
EmplaceBackInputs
(
void
KernelContext
::
EmplaceBackInputs
(
paddle
::
SmallV
ector
<
const
TensorBase
*>
inputs
)
{
paddle
::
small_v
ector
<
const
TensorBase
*>
inputs
)
{
int
index
=
inputs_
.
size
();
int
index
=
inputs_
.
size
();
// Record the start and end index of the input
// Record the start and end index of the input
input_range_
.
emplace_back
(
std
::
pair
<
int
,
int
>
(
index
,
index
+
inputs
.
size
()));
input_range_
.
emplace_back
(
std
::
pair
<
int
,
int
>
(
index
,
index
+
inputs
.
size
()));
...
@@ -38,7 +38,7 @@ void KernelContext::EmplaceBackInputs(
...
@@ -38,7 +38,7 @@ void KernelContext::EmplaceBackInputs(
}
}
void
KernelContext
::
EmplaceBackInputsWithoutSetRange
(
void
KernelContext
::
EmplaceBackInputsWithoutSetRange
(
paddle
::
SmallV
ector
<
const
TensorBase
*>
inputs
)
{
paddle
::
small_v
ector
<
const
TensorBase
*>
inputs
)
{
inputs_
.
insert
(
inputs_
.
end
(),
inputs_
.
insert
(
inputs_
.
end
(),
std
::
make_move_iterator
(
inputs
.
begin
()),
std
::
make_move_iterator
(
inputs
.
begin
()),
std
::
make_move_iterator
(
inputs
.
end
()));
std
::
make_move_iterator
(
inputs
.
end
()));
...
@@ -56,7 +56,7 @@ void KernelContext::EmplaceBackOutputWithoutSetRange(TensorBase* output) {
...
@@ -56,7 +56,7 @@ void KernelContext::EmplaceBackOutputWithoutSetRange(TensorBase* output) {
}
}
void
KernelContext
::
EmplaceBackOutputs
(
void
KernelContext
::
EmplaceBackOutputs
(
paddle
::
SmallV
ector
<
TensorBase
*>
outputs
)
{
paddle
::
small_v
ector
<
TensorBase
*>
outputs
)
{
int
index
=
outputs_
.
size
();
int
index
=
outputs_
.
size
();
// Record the start and end index of the input
// Record the start and end index of the input
output_range_
.
emplace_back
(
output_range_
.
emplace_back
(
...
@@ -67,7 +67,7 @@ void KernelContext::EmplaceBackOutputs(
...
@@ -67,7 +67,7 @@ void KernelContext::EmplaceBackOutputs(
}
}
void
KernelContext
::
EmplaceBackOutputsWithoutSetRange
(
void
KernelContext
::
EmplaceBackOutputsWithoutSetRange
(
paddle
::
SmallV
ector
<
TensorBase
*>
outputs
)
{
paddle
::
small_v
ector
<
TensorBase
*>
outputs
)
{
outputs_
.
insert
(
outputs_
.
end
(),
outputs_
.
insert
(
outputs_
.
end
(),
std
::
make_move_iterator
(
outputs
.
begin
()),
std
::
make_move_iterator
(
outputs
.
begin
()),
std
::
make_move_iterator
(
outputs
.
end
()));
std
::
make_move_iterator
(
outputs
.
end
()));
...
...
paddle/phi/core/kernel_context.h
浏览文件 @
2cebcf4a
...
@@ -51,19 +51,19 @@ class KernelContext {
...
@@ -51,19 +51,19 @@ class KernelContext {
void
EmplaceBackInputWithoutSetRange
(
const
TensorBase
*
input
);
void
EmplaceBackInputWithoutSetRange
(
const
TensorBase
*
input
);
void
EmplaceBackInputs
(
paddle
::
SmallV
ector
<
const
TensorBase
*>
inputs
);
void
EmplaceBackInputs
(
paddle
::
small_v
ector
<
const
TensorBase
*>
inputs
);
void
EmplaceBackInputsWithoutSetRange
(
void
EmplaceBackInputsWithoutSetRange
(
paddle
::
SmallV
ector
<
const
TensorBase
*>
inputs
);
paddle
::
small_v
ector
<
const
TensorBase
*>
inputs
);
void
EmplaceBackOutput
(
TensorBase
*
output
);
void
EmplaceBackOutput
(
TensorBase
*
output
);
void
EmplaceBackOutputWithoutSetRange
(
TensorBase
*
output
);
void
EmplaceBackOutputWithoutSetRange
(
TensorBase
*
output
);
void
EmplaceBackOutputs
(
paddle
::
SmallV
ector
<
TensorBase
*>
outputs
);
void
EmplaceBackOutputs
(
paddle
::
small_v
ector
<
TensorBase
*>
outputs
);
void
EmplaceBackOutputsWithoutSetRange
(
void
EmplaceBackOutputsWithoutSetRange
(
paddle
::
SmallV
ector
<
TensorBase
*>
outputs
);
paddle
::
small_v
ector
<
TensorBase
*>
outputs
);
void
EmplaceBackAttr
(
Attribute
attr
);
void
EmplaceBackAttr
(
Attribute
attr
);
...
@@ -138,12 +138,12 @@ class KernelContext {
...
@@ -138,12 +138,12 @@ class KernelContext {
private:
private:
DeviceContext
*
dev_ctx_
;
DeviceContext
*
dev_ctx_
;
paddle
::
SmallV
ector
<
const
TensorBase
*>
inputs_
;
paddle
::
small_v
ector
<
const
TensorBase
*>
inputs_
;
paddle
::
SmallV
ector
<
TensorBase
*>
outputs_
;
paddle
::
small_v
ector
<
TensorBase
*>
outputs_
;
paddle
::
SmallV
ector
<
Attribute
,
kAttrSmallVectorSize
>
attrs_
;
paddle
::
small_v
ector
<
Attribute
,
kAttrSmallVectorSize
>
attrs_
;
paddle
::
SmallV
ector
<
std
::
pair
<
int
,
int
>
,
kInputSmallVectorSize
>
input_range_
;
paddle
::
small_v
ector
<
std
::
pair
<
int
,
int
>
,
kInputSmallVectorSize
>
input_range_
;
paddle
::
SmallV
ector
<
std
::
pair
<
int
,
int
>
,
kOutputSmallVectorSize
>
paddle
::
small_v
ector
<
std
::
pair
<
int
,
int
>
,
kOutputSmallVectorSize
>
output_range_
;
output_range_
;
};
};
...
...
paddle/phi/core/kernel_factory.h
浏览文件 @
2cebcf4a
...
@@ -173,37 +173,38 @@ class KernelArgsDef {
...
@@ -173,37 +173,38 @@ class KernelArgsDef {
attribute_defs_
.
emplace_back
(
AttributeArgDef
(
type_index
));
attribute_defs_
.
emplace_back
(
AttributeArgDef
(
type_index
));
}
}
const
paddle
::
SmallV
ector
<
TensorArgDef
,
kInputSmallVectorSize
>&
input_defs
()
const
paddle
::
small_v
ector
<
TensorArgDef
,
kInputSmallVectorSize
>&
input_defs
()
const
{
const
{
return
input_defs_
;
return
input_defs_
;
}
}
const
paddle
::
SmallVector
<
TensorArgDef
,
kOutputSmallVectorSize
>&
output_defs
()
const
paddle
::
small_vector
<
TensorArgDef
,
kOutputSmallVectorSize
>&
const
{
output_defs
()
const
{
return
output_defs_
;
return
output_defs_
;
}
}
const
paddle
::
SmallV
ector
<
AttributeArgDef
,
kAttrSmallVectorSize
>&
const
paddle
::
small_v
ector
<
AttributeArgDef
,
kAttrSmallVectorSize
>&
attribute_defs
()
const
{
attribute_defs
()
const
{
return
attribute_defs_
;
return
attribute_defs_
;
}
}
paddle
::
SmallV
ector
<
TensorArgDef
,
kInputSmallVectorSize
>&
input_defs
()
{
paddle
::
small_v
ector
<
TensorArgDef
,
kInputSmallVectorSize
>&
input_defs
()
{
return
input_defs_
;
return
input_defs_
;
}
}
paddle
::
SmallV
ector
<
TensorArgDef
,
kOutputSmallVectorSize
>&
output_defs
()
{
paddle
::
small_v
ector
<
TensorArgDef
,
kOutputSmallVectorSize
>&
output_defs
()
{
return
output_defs_
;
return
output_defs_
;
}
}
paddle
::
SmallVector
<
AttributeArgDef
,
kAttrSmallVectorSize
>&
attribute_defs
()
{
paddle
::
small_vector
<
AttributeArgDef
,
kAttrSmallVectorSize
>&
attribute_defs
()
{
return
attribute_defs_
;
return
attribute_defs_
;
}
}
private:
private:
paddle
::
SmallV
ector
<
TensorArgDef
,
kInputSmallVectorSize
>
input_defs_
{{}};
paddle
::
small_v
ector
<
TensorArgDef
,
kInputSmallVectorSize
>
input_defs_
{{}};
paddle
::
SmallV
ector
<
TensorArgDef
,
kOutputSmallVectorSize
>
output_defs_
{{}};
paddle
::
small_v
ector
<
TensorArgDef
,
kOutputSmallVectorSize
>
output_defs_
{{}};
paddle
::
SmallV
ector
<
AttributeArgDef
,
kAttrSmallVectorSize
>
attribute_defs_
{
paddle
::
small_v
ector
<
AttributeArgDef
,
kAttrSmallVectorSize
>
attribute_defs_
{
{}};
{}};
};
};
...
...
paddle/phi/ops/compat/adam_sig.cc
浏览文件 @
2cebcf4a
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
namespace
phi
{
namespace
phi
{
KernelSignature
AdamOpArgumentMapping
(
const
ArgumentMappingContext
&
ctx
)
{
KernelSignature
AdamOpArgumentMapping
(
const
ArgumentMappingContext
&
ctx
)
{
paddle
::
SmallV
ector
<
const
char
*>
in_names
=
{
"Param"
,
paddle
::
small_v
ector
<
const
char
*>
in_names
=
{
"Param"
,
"Grad"
,
"Grad"
,
"LearningRate"
,
"LearningRate"
,
"Moment1"
,
"Moment1"
,
...
@@ -28,13 +28,13 @@ KernelSignature AdamOpArgumentMapping(const ArgumentMappingContext& ctx) {
...
@@ -28,13 +28,13 @@ KernelSignature AdamOpArgumentMapping(const ArgumentMappingContext& ctx) {
"Beta2Pow"
,
"Beta2Pow"
,
"MasterParam"
,
"MasterParam"
,
"SkipUpdate"
};
"SkipUpdate"
};
paddle
::
SmallV
ector
<
const
char
*>
out_names
=
{
"ParamOut"
,
paddle
::
small_v
ector
<
const
char
*>
out_names
=
{
"ParamOut"
,
"Moment1Out"
,
"Moment1Out"
,
"Moment2Out"
,
"Moment2Out"
,
"Beta1PowOut"
,
"Beta1PowOut"
,
"Beta2PowOut"
,
"Beta2PowOut"
,
"MasterParamOut"
};
"MasterParamOut"
};
paddle
::
SmallV
ector
<
const
char
*>
attr_names
;
paddle
::
small_v
ector
<
const
char
*>
attr_names
;
attr_names
.
emplace_back
(
ctx
.
HasInput
(
"Beta1Tensor"
)
?
"Beta1Tensor"
attr_names
.
emplace_back
(
ctx
.
HasInput
(
"Beta1Tensor"
)
?
"Beta1Tensor"
:
"beta1"
);
:
"beta1"
);
...
...
paddle/phi/ops/compat/adamw_sig.cc
浏览文件 @
2cebcf4a
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
namespace
phi
{
namespace
phi
{
KernelSignature
AdamwOpArgumentMapping
(
const
ArgumentMappingContext
&
ctx
)
{
KernelSignature
AdamwOpArgumentMapping
(
const
ArgumentMappingContext
&
ctx
)
{
paddle
::
SmallV
ector
<
const
char
*>
in_names
=
{
"Param"
,
paddle
::
small_v
ector
<
const
char
*>
in_names
=
{
"Param"
,
"Grad"
,
"Grad"
,
"LearningRate"
,
"LearningRate"
,
"Moment1"
,
"Moment1"
,
...
@@ -28,13 +28,13 @@ KernelSignature AdamwOpArgumentMapping(const ArgumentMappingContext& ctx) {
...
@@ -28,13 +28,13 @@ KernelSignature AdamwOpArgumentMapping(const ArgumentMappingContext& ctx) {
"Beta2Pow"
,
"Beta2Pow"
,
"MasterParam"
,
"MasterParam"
,
"SkipUpdate"
};
"SkipUpdate"
};
paddle
::
SmallV
ector
<
const
char
*>
out_names
=
{
"ParamOut"
,
paddle
::
small_v
ector
<
const
char
*>
out_names
=
{
"ParamOut"
,
"Moment1Out"
,
"Moment1Out"
,
"Moment2Out"
,
"Moment2Out"
,
"Beta1PowOut"
,
"Beta1PowOut"
,
"Beta2PowOut"
,
"Beta2PowOut"
,
"MasterParamOut"
};
"MasterParamOut"
};
paddle
::
SmallV
ector
<
const
char
*>
attr_names
;
paddle
::
small_v
ector
<
const
char
*>
attr_names
;
attr_names
.
emplace_back
(
ctx
.
HasInput
(
"Beta1Tensor"
)
?
"Beta1Tensor"
attr_names
.
emplace_back
(
ctx
.
HasInput
(
"Beta1Tensor"
)
?
"Beta1Tensor"
:
"beta1"
);
:
"beta1"
);
...
...
paddle/phi/ops/compat/clip_sig.cc
浏览文件 @
2cebcf4a
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
namespace
phi
{
namespace
phi
{
KernelSignature
ClipOpArgumentMapping
(
const
ArgumentMappingContext
&
ctx
)
{
KernelSignature
ClipOpArgumentMapping
(
const
ArgumentMappingContext
&
ctx
)
{
paddle
::
SmallV
ector
<
std
::
string
,
kAttrSmallVectorSize
>
attr_names
;
paddle
::
small_v
ector
<
std
::
string
,
kAttrSmallVectorSize
>
attr_names
;
attr_names
.
emplace_back
(
ctx
.
HasInput
(
"Min"
)
?
"Min"
:
"min"
);
attr_names
.
emplace_back
(
ctx
.
HasInput
(
"Min"
)
?
"Min"
:
"min"
);
attr_names
.
emplace_back
(
ctx
.
HasInput
(
"Max"
)
?
"Max"
:
"max"
);
attr_names
.
emplace_back
(
ctx
.
HasInput
(
"Max"
)
?
"Max"
:
"max"
);
if
(
ctx
.
IsDenseTensorInput
(
"X"
))
{
if
(
ctx
.
IsDenseTensorInput
(
"X"
))
{
...
...
paddle/phi/ops/compat/strided_slice_sig.cc
浏览文件 @
2cebcf4a
...
@@ -48,14 +48,14 @@ KernelSignature StridedSliceOpArgumentMapping(
...
@@ -48,14 +48,14 @@ KernelSignature StridedSliceOpArgumentMapping(
?
(
use_attr_strides
?
"strides"
:
"StridesTensorList"
)
?
(
use_attr_strides
?
"strides"
:
"StridesTensorList"
)
:
"strides"
);
:
"strides"
);
paddle
::
SmallV
ector
<
const
char
*>
inputs
=
{
"Input"
};
paddle
::
small_v
ector
<
const
char
*>
inputs
=
{
"Input"
};
paddle
::
SmallV
ector
<
const
char
*>
attrs
=
{
"axes"
,
paddle
::
small_v
ector
<
const
char
*>
attrs
=
{
"axes"
,
starts_key
,
starts_key
,
ends_key
,
ends_key
,
strides_key
,
strides_key
,
"infer_flags"
,
"infer_flags"
,
"decrease_axis"
};
"decrease_axis"
};
paddle
::
SmallV
ector
<
const
char
*>
outputs
=
{
"Out"
};
paddle
::
small_v
ector
<
const
char
*>
outputs
=
{
"Out"
};
const
char
*
kernel_name
;
const
char
*
kernel_name
;
if
(
ctx
.
IsDenseTensorVectorInput
(
"Input"
))
{
if
(
ctx
.
IsDenseTensorVectorInput
(
"Input"
))
{
...
@@ -97,14 +97,14 @@ KernelSignature StridedSliceGradOpArgumentMapping(
...
@@ -97,14 +97,14 @@ KernelSignature StridedSliceGradOpArgumentMapping(
?
(
use_attr_strides
?
"strides"
:
"StridesTensorList"
)
?
(
use_attr_strides
?
"strides"
:
"StridesTensorList"
)
:
"strides"
);
:
"strides"
);
paddle
::
SmallV
ector
<
const
char
*>
inputs
=
{
"Input"
,
"Out@GRAD"
};
paddle
::
small_v
ector
<
const
char
*>
inputs
=
{
"Input"
,
"Out@GRAD"
};
paddle
::
SmallV
ector
<
const
char
*>
attrs
=
{
"axes"
,
paddle
::
small_v
ector
<
const
char
*>
attrs
=
{
"axes"
,
starts_key
,
starts_key
,
ends_key
,
ends_key
,
strides_key
,
strides_key
,
"infer_flags"
,
"infer_flags"
,
"decrease_axis"
};
"decrease_axis"
};
paddle
::
SmallV
ector
<
const
char
*>
outputs
=
{
"Input@GRAD"
};
paddle
::
small_v
ector
<
const
char
*>
outputs
=
{
"Input@GRAD"
};
const
char
*
kernel_name
;
const
char
*
kernel_name
;
if
(
ctx
.
IsDenseTensorVectorInput
(
"Input"
))
{
if
(
ctx
.
IsDenseTensorVectorInput
(
"Input"
))
{
...
...
paddle/phi/tests/core/test_meta_fn_utils.cc
浏览文件 @
2cebcf4a
...
@@ -68,7 +68,7 @@ TEST(MetaFnFactory, SplitInferMetaFn) {
...
@@ -68,7 +68,7 @@ TEST(MetaFnFactory, SplitInferMetaFn) {
phi
::
DenseTensor
dense_out1
;
phi
::
DenseTensor
dense_out1
;
phi
::
DenseTensor
dense_out2
;
phi
::
DenseTensor
dense_out2
;
paddle
::
SmallV
ector
<
phi
::
MetaTensor
,
kOutputSmallVectorSize
>
out
;
paddle
::
small_v
ector
<
phi
::
MetaTensor
,
kOutputSmallVectorSize
>
out
;
out
.
emplace_back
(
phi
::
MetaTensor
(
&
dense_out1
));
out
.
emplace_back
(
phi
::
MetaTensor
(
&
dense_out1
));
out
.
emplace_back
(
phi
::
MetaTensor
(
&
dense_out2
));
out
.
emplace_back
(
phi
::
MetaTensor
(
&
dense_out2
));
...
...
paddle/utils/array_ref.h
浏览文件 @
2cebcf4a
...
@@ -3,8 +3,10 @@
...
@@ -3,8 +3,10 @@
// 1. remove hash_value functions
// 1. remove hash_value functions
// 2. replace with the llvm::NoneType with paddle::none_t
// 2. replace with the llvm::NoneType with paddle::none_t
// 3. remove drop_while, drop_until, take_while, take_until methods
// 3. remove drop_while, drop_until, take_while, take_until methods
// 4. change ArrayRef to array_ref to unify naming style of utils
//===- ArrayRef.h - Array Reference Wrapper ---------------------*- C++ -*-===//
//===- ArrayRef.h - Array Reference Wrapper ---------------------*- C++
//-*-===//
//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// See https://llvm.org/LICENSE.txt for license information.
...
@@ -29,19 +31,19 @@
...
@@ -29,19 +31,19 @@
namespace
paddle
{
namespace
paddle
{
///
ArrayR
ef - Represent a constant reference to an array (0 or more elements
///
array_r
ef - Represent a constant reference to an array (0 or more elements
/// consecutively in memory), i.e. a start pointer and a length. It allows
/// consecutively in memory), i.e. a start pointer and a length. It allows
/// various APIs to take consecutive elements easily and conveniently.
/// various APIs to take consecutive elements easily and conveniently.
///
///
/// This class does not own the underlying data, it is expected to be used in
/// This class does not own the underlying data, it is expected to be used in
/// situations where the data resides in some other buffer, whose lifetime
/// situations where the data resides in some other buffer, whose lifetime
/// extends past that of the
ArrayR
ef. For this reason, it is not in general
/// extends past that of the
array_r
ef. For this reason, it is not in general
/// safe to store an
ArrayR
ef.
/// safe to store an
array_r
ef.
///
///
/// This is intended to be trivially copyable, so it should be passed by
/// This is intended to be trivially copyable, so it should be passed by
/// value.
/// value.
template
<
typename
T
>
template
<
typename
T
>
class
ArrayR
ef
{
class
array_r
ef
{
public:
public:
using
iterator
=
const
T
*
;
using
iterator
=
const
T
*
;
using
const_iterator
=
const
T
*
;
using
const_iterator
=
const
T
*
;
...
@@ -59,81 +61,81 @@ class ArrayRef {
...
@@ -59,81 +61,81 @@ class ArrayRef {
/// @name Constructors
/// @name Constructors
/// @{
/// @{
/// Construct an empty
ArrayR
ef.
/// Construct an empty
array_r
ef.
/*implicit*/
ArrayR
ef
()
=
default
;
/*implicit*/
array_r
ef
()
=
default
;
/// Construct an empty
ArrayR
ef from None.
/// Construct an empty
array_r
ef from None.
/*implicit*/
ArrayR
ef
(
none_t
)
{}
/*implicit*/
array_r
ef
(
none_t
)
{}
/// Construct an
ArrayR
ef from a single element.
/// Construct an
array_r
ef from a single element.
/*implicit*/
ArrayR
ef
(
const
T
&
OneElt
)
:
Data
(
&
OneElt
),
Length
(
1
)
{}
/*implicit*/
array_r
ef
(
const
T
&
OneElt
)
:
Data
(
&
OneElt
),
Length
(
1
)
{}
/// Construct an
ArrayR
ef from a pointer and length.
/// Construct an
array_r
ef from a pointer and length.
/*implicit*/
ArrayR
ef
(
const
T
*
data
,
size_t
length
)
/*implicit*/
array_r
ef
(
const
T
*
data
,
size_t
length
)
:
Data
(
data
),
Length
(
length
)
{}
:
Data
(
data
),
Length
(
length
)
{}
/// Construct an
ArrayR
ef from a range.
/// Construct an
array_r
ef from a range.
ArrayR
ef
(
const
T
*
begin
,
const
T
*
end
)
:
Data
(
begin
),
Length
(
end
-
begin
)
{}
array_r
ef
(
const
T
*
begin
,
const
T
*
end
)
:
Data
(
begin
),
Length
(
end
-
begin
)
{}
/// Construct an
ArrayRef from a SmallV
ector. This is templated in order to
/// Construct an
array_ref from a small_v
ector. This is templated in order to
/// avoid instantiating
SmallVectorTemplateC
ommon<T> whenever we
/// avoid instantiating
small_vector_template_c
ommon<T> whenever we
/// copy-construct an
ArrayR
ef.
/// copy-construct an
array_r
ef.
template
<
typename
U
>
template
<
typename
U
>
/*implicit*/
ArrayRef
(
const
SmallVectorTemplateC
ommon
<
T
,
U
>
&
Vec
)
/*implicit*/
array_ref
(
const
small_vector_template_c
ommon
<
T
,
U
>
&
Vec
)
:
Data
(
Vec
.
data
()),
Length
(
Vec
.
size
())
{}
:
Data
(
Vec
.
data
()),
Length
(
Vec
.
size
())
{}
/// Construct an
ArrayR
ef from a std::vector.
/// Construct an
array_r
ef from a std::vector.
template
<
typename
A
>
template
<
typename
A
>
/*implicit*/
ArrayR
ef
(
const
std
::
vector
<
T
,
A
>
&
Vec
)
/*implicit*/
array_r
ef
(
const
std
::
vector
<
T
,
A
>
&
Vec
)
:
Data
(
Vec
.
data
()),
Length
(
Vec
.
size
())
{}
:
Data
(
Vec
.
data
()),
Length
(
Vec
.
size
())
{}
/// Construct an
ArrayR
ef from a std::array
/// Construct an
array_r
ef from a std::array
template
<
size_t
N
>
template
<
size_t
N
>
/*implicit*/
constexpr
ArrayR
ef
(
const
std
::
array
<
T
,
N
>
&
Arr
)
/*implicit*/
constexpr
array_r
ef
(
const
std
::
array
<
T
,
N
>
&
Arr
)
:
Data
(
Arr
.
data
()),
Length
(
N
)
{}
:
Data
(
Arr
.
data
()),
Length
(
N
)
{}
/// Construct an
ArrayR
ef from a C array.
/// Construct an
array_r
ef from a C array.
template
<
size_t
N
>
template
<
size_t
N
>
/*implicit*/
constexpr
ArrayR
ef
(
const
T
(
&
Arr
)[
N
])
:
Data
(
Arr
),
Length
(
N
)
{}
/*implicit*/
constexpr
array_r
ef
(
const
T
(
&
Arr
)[
N
])
:
Data
(
Arr
),
Length
(
N
)
{}
/// Construct an
ArrayR
ef from a std::initializer_list.
/// Construct an
array_r
ef from a std::initializer_list.
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 9
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 9
// Disable gcc's warning in this constructor as it generates an enormous
// Disable gcc's warning in this constructor as it generates an enormous
// amount
// amount
// of messages. Anyone using
ArrayR
ef should already be aware of the fact that
// of messages. Anyone using
array_r
ef should already be aware of the fact that
// it does not do lifetime extension.
// it does not do lifetime extension.
#pragma GCC diagnostic push
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Winit-list-lifetime"
#pragma GCC diagnostic ignored "-Winit-list-lifetime"
#endif
#endif
/*implicit*/
ArrayR
ef
(
const
std
::
initializer_list
<
T
>
&
Vec
)
/*implicit*/
array_r
ef
(
const
std
::
initializer_list
<
T
>
&
Vec
)
:
Data
(
Vec
.
begin
()
==
Vec
.
end
()
?
(
T
*
)
nullptr
:
Vec
.
begin
()),
:
Data
(
Vec
.
begin
()
==
Vec
.
end
()
?
(
T
*
)
nullptr
:
Vec
.
begin
()),
Length
(
Vec
.
size
())
{}
Length
(
Vec
.
size
())
{}
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 9
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 9
#pragma GCC diagnostic pop
#pragma GCC diagnostic pop
#endif
#endif
/// Construct an
ArrayRef<const T*> from ArrayR
ef<T*>. This uses SFINAE to
/// Construct an
array_ref<const T*> from array_r
ef<T*>. This uses SFINAE to
/// ensure that only ArrayRefs of pointers can be converted.
/// ensure that only ArrayRefs of pointers can be converted.
template
<
typename
U
>
template
<
typename
U
>
ArrayRef
(
const
ArrayR
ef
<
U
*>
&
A
,
array_ref
(
const
array_r
ef
<
U
*>
&
A
,
std
::
enable_if_t
<
std
::
is_convertible
<
U
*
const
*
,
T
const
*>::
value
>
std
::
enable_if_t
<
std
::
is_convertible
<
U
*
const
*
,
T
const
*>::
value
>
*
=
nullptr
)
*
=
nullptr
)
:
Data
(
A
.
data
()),
Length
(
A
.
size
())
{}
:
Data
(
A
.
data
()),
Length
(
A
.
size
())
{}
/// Construct an
ArrayRef<const T*> from a SmallV
ector<T*>. This is
/// Construct an
array_ref<const T*> from a small_v
ector<T*>. This is
/// templated in order to avoid instantiating
SmallVectorTemplateC
ommon<T>
/// templated in order to avoid instantiating
small_vector_template_c
ommon<T>
/// whenever we copy-construct an
ArrayR
ef.
/// whenever we copy-construct an
array_r
ef.
template
<
typename
U
,
typename
DummyT
>
template
<
typename
U
,
typename
DummyT
>
/*implicit*/
ArrayR
ef
(
/*implicit*/
array_r
ef
(
const
SmallVectorTemplateC
ommon
<
U
*
,
DummyT
>
&
Vec
,
const
small_vector_template_c
ommon
<
U
*
,
DummyT
>
&
Vec
,
std
::
enable_if_t
<
std
::
is_convertible
<
U
*
const
*
,
T
const
*>::
value
>
*
=
std
::
enable_if_t
<
std
::
is_convertible
<
U
*
const
*
,
T
const
*>::
value
>
*
=
nullptr
)
nullptr
)
:
Data
(
Vec
.
data
()),
Length
(
Vec
.
size
())
{}
:
Data
(
Vec
.
data
()),
Length
(
Vec
.
size
())
{}
/// Construct an
ArrayR
ef<const T*> from std::vector<T*>. This uses SFINAE
/// Construct an
array_r
ef<const T*> from std::vector<T*>. This uses SFINAE
/// to ensure that only vectors of pointers can be converted.
/// to ensure that only vectors of pointers can be converted.
template
<
typename
U
,
typename
A
>
template
<
typename
U
,
typename
A
>
ArrayR
ef
(
array_r
ef
(
const
std
::
vector
<
U
*
,
A
>
&
Vec
,
const
std
::
vector
<
U
*
,
A
>
&
Vec
,
std
::
enable_if_t
<
std
::
is_convertible
<
U
*
const
*
,
T
const
*>::
value
>
*
=
0
)
std
::
enable_if_t
<
std
::
is_convertible
<
U
*
const
*
,
T
const
*>::
value
>
*
=
0
)
:
Data
(
Vec
.
data
()),
Length
(
Vec
.
size
())
{}
:
Data
(
Vec
.
data
()),
Length
(
Vec
.
size
())
{}
...
@@ -168,50 +170,50 @@ class ArrayRef {
...
@@ -168,50 +170,50 @@ class ArrayRef {
return
Data
[
Length
-
1
];
return
Data
[
Length
-
1
];
}
}
// copy - Allocate copy in Allocator and return
ArrayR
ef<T> to it.
// copy - Allocate copy in Allocator and return
array_r
ef<T> to it.
template
<
typename
Allocator
>
template
<
typename
Allocator
>
ArrayR
ef
<
T
>
copy
(
Allocator
&
A
)
{
array_r
ef
<
T
>
copy
(
Allocator
&
A
)
{
T
*
Buff
=
A
.
template
Allocate
<
T
>(
Length
);
T
*
Buff
=
A
.
template
Allocate
<
T
>(
Length
);
std
::
uninitialized_copy
(
begin
(),
end
(),
Buff
);
std
::
uninitialized_copy
(
begin
(),
end
(),
Buff
);
return
ArrayR
ef
<
T
>
(
Buff
,
Length
);
return
array_r
ef
<
T
>
(
Buff
,
Length
);
}
}
/// equals - Check for element-wise equality.
/// equals - Check for element-wise equality.
bool
equals
(
ArrayR
ef
RHS
)
const
{
bool
equals
(
array_r
ef
RHS
)
const
{
if
(
Length
!=
RHS
.
Length
)
return
false
;
if
(
Length
!=
RHS
.
Length
)
return
false
;
return
std
::
equal
(
begin
(),
end
(),
RHS
.
begin
());
return
std
::
equal
(
begin
(),
end
(),
RHS
.
begin
());
}
}
/// slice(n, m) - Chop off the first N elements of the array, and keep M
/// slice(n, m) - Chop off the first N elements of the array, and keep M
/// elements in the array.
/// elements in the array.
ArrayR
ef
<
T
>
slice
(
size_t
N
,
size_t
M
)
const
{
array_r
ef
<
T
>
slice
(
size_t
N
,
size_t
M
)
const
{
assert
(
N
+
M
<=
size
()
&&
"Invalid specifier"
);
assert
(
N
+
M
<=
size
()
&&
"Invalid specifier"
);
return
ArrayR
ef
<
T
>
(
data
()
+
N
,
M
);
return
array_r
ef
<
T
>
(
data
()
+
N
,
M
);
}
}
/// slice(n) - Chop off the first N elements of the array.
/// slice(n) - Chop off the first N elements of the array.
ArrayR
ef
<
T
>
slice
(
size_t
N
)
const
{
return
slice
(
N
,
size
()
-
N
);
}
array_r
ef
<
T
>
slice
(
size_t
N
)
const
{
return
slice
(
N
,
size
()
-
N
);
}
/// Drop the first \p N elements of the array.
/// Drop the first \p N elements of the array.
ArrayR
ef
<
T
>
drop_front
(
size_t
N
=
1
)
const
{
array_r
ef
<
T
>
drop_front
(
size_t
N
=
1
)
const
{
assert
(
size
()
>=
N
&&
"Dropping more elements than exist"
);
assert
(
size
()
>=
N
&&
"Dropping more elements than exist"
);
return
slice
(
N
,
size
()
-
N
);
return
slice
(
N
,
size
()
-
N
);
}
}
/// Drop the last \p N elements of the array.
/// Drop the last \p N elements of the array.
ArrayR
ef
<
T
>
drop_back
(
size_t
N
=
1
)
const
{
array_r
ef
<
T
>
drop_back
(
size_t
N
=
1
)
const
{
assert
(
size
()
>=
N
&&
"Dropping more elements than exist"
);
assert
(
size
()
>=
N
&&
"Dropping more elements than exist"
);
return
slice
(
0
,
size
()
-
N
);
return
slice
(
0
,
size
()
-
N
);
}
}
/// Return a copy of *this with only the first \p N elements.
/// Return a copy of *this with only the first \p N elements.
ArrayR
ef
<
T
>
take_front
(
size_t
N
=
1
)
const
{
array_r
ef
<
T
>
take_front
(
size_t
N
=
1
)
const
{
if
(
N
>=
size
())
return
*
this
;
if
(
N
>=
size
())
return
*
this
;
return
drop_back
(
size
()
-
N
);
return
drop_back
(
size
()
-
N
);
}
}
/// Return a copy of *this with only the last \p N elements.
/// Return a copy of *this with only the last \p N elements.
ArrayR
ef
<
T
>
take_back
(
size_t
N
=
1
)
const
{
array_r
ef
<
T
>
take_back
(
size_t
N
=
1
)
const
{
if
(
N
>=
size
())
return
*
this
;
if
(
N
>=
size
())
return
*
this
;
return
drop_front
(
size
()
-
N
);
return
drop_front
(
size
()
-
N
);
}
}
...
@@ -229,7 +231,7 @@ class ArrayRef {
...
@@ -229,7 +231,7 @@ class ArrayRef {
/// The declaration here is extra complicated so that "arrayRef = {}"
/// The declaration here is extra complicated so that "arrayRef = {}"
/// continues to select the move assignment operator.
/// continues to select the move assignment operator.
template
<
typename
U
>
template
<
typename
U
>
std
::
enable_if_t
<
std
::
is_same
<
U
,
T
>::
value
,
ArrayR
ef
<
T
>>
&
operator
=
(
std
::
enable_if_t
<
std
::
is_same
<
U
,
T
>::
value
,
array_r
ef
<
T
>>
&
operator
=
(
U
&&
Temporary
)
=
delete
;
U
&&
Temporary
)
=
delete
;
/// Disallow accidental assignment from a temporary.
/// Disallow accidental assignment from a temporary.
...
@@ -237,7 +239,7 @@ class ArrayRef {
...
@@ -237,7 +239,7 @@ class ArrayRef {
/// The declaration here is extra complicated so that "arrayRef = {}"
/// The declaration here is extra complicated so that "arrayRef = {}"
/// continues to select the move assignment operator.
/// continues to select the move assignment operator.
template
<
typename
U
>
template
<
typename
U
>
std
::
enable_if_t
<
std
::
is_same
<
U
,
T
>::
value
,
ArrayR
ef
<
T
>>
&
operator
=
(
std
::
enable_if_t
<
std
::
is_same
<
U
,
T
>::
value
,
array_r
ef
<
T
>>
&
operator
=
(
std
::
initializer_list
<
U
>
)
=
delete
;
std
::
initializer_list
<
U
>
)
=
delete
;
/// @}
/// @}
...
@@ -255,90 +257,90 @@ class ArrayRef {
...
@@ -255,90 +257,90 @@ class ArrayRef {
/// @}
/// @}
};
};
/// @name
ArrayR
ef Convenience constructors
/// @name
array_r
ef Convenience constructors
/// @{
/// @{
/// Construct an
ArrayR
ef from a single element.
/// Construct an
array_r
ef from a single element.
template
<
typename
T
>
template
<
typename
T
>
ArrayRef
<
T
>
makeArrayR
ef
(
const
T
&
OneElt
)
{
array_ref
<
T
>
make_array_r
ef
(
const
T
&
OneElt
)
{
return
OneElt
;
return
OneElt
;
}
}
/// Construct an
ArrayR
ef from a pointer and length.
/// Construct an
array_r
ef from a pointer and length.
template
<
typename
T
>
template
<
typename
T
>
ArrayRef
<
T
>
makeArrayR
ef
(
const
T
*
data
,
size_t
length
)
{
array_ref
<
T
>
make_array_r
ef
(
const
T
*
data
,
size_t
length
)
{
return
ArrayR
ef
<
T
>
(
data
,
length
);
return
array_r
ef
<
T
>
(
data
,
length
);
}
}
/// Construct an
ArrayR
ef from a range.
/// Construct an
array_r
ef from a range.
template
<
typename
T
>
template
<
typename
T
>
ArrayRef
<
T
>
makeArrayR
ef
(
const
T
*
begin
,
const
T
*
end
)
{
array_ref
<
T
>
make_array_r
ef
(
const
T
*
begin
,
const
T
*
end
)
{
return
ArrayR
ef
<
T
>
(
begin
,
end
);
return
array_r
ef
<
T
>
(
begin
,
end
);
}
}
/// Construct an
ArrayRef from a SmallV
ector.
/// Construct an
array_ref from a small_v
ector.
template
<
typename
T
>
template
<
typename
T
>
ArrayRef
<
T
>
makeArrayRef
(
const
SmallVectorI
mpl
<
T
>
&
Vec
)
{
array_ref
<
T
>
make_array_ref
(
const
small_vector_i
mpl
<
T
>
&
Vec
)
{
return
Vec
;
return
Vec
;
}
}
/// Construct an
ArrayRef from a SmallV
ector.
/// Construct an
array_ref from a small_v
ector.
template
<
typename
T
,
unsigned
N
>
template
<
typename
T
,
unsigned
N
>
ArrayRef
<
T
>
makeArrayRef
(
const
SmallV
ector
<
T
,
N
>
&
Vec
)
{
array_ref
<
T
>
make_array_ref
(
const
small_v
ector
<
T
,
N
>
&
Vec
)
{
return
Vec
;
return
Vec
;
}
}
/// Construct an
ArrayR
ef from a std::vector.
/// Construct an
array_r
ef from a std::vector.
template
<
typename
T
>
template
<
typename
T
>
ArrayRef
<
T
>
makeArrayR
ef
(
const
std
::
vector
<
T
>
&
Vec
)
{
array_ref
<
T
>
make_array_r
ef
(
const
std
::
vector
<
T
>
&
Vec
)
{
return
Vec
;
return
Vec
;
}
}
/// Construct an
ArrayR
ef from a std::array.
/// Construct an
array_r
ef from a std::array.
template
<
typename
T
,
std
::
size_t
N
>
template
<
typename
T
,
std
::
size_t
N
>
ArrayRef
<
T
>
makeArrayR
ef
(
const
std
::
array
<
T
,
N
>
&
Arr
)
{
array_ref
<
T
>
make_array_r
ef
(
const
std
::
array
<
T
,
N
>
&
Arr
)
{
return
Arr
;
return
Arr
;
}
}
/// Construct an
ArrayRef from an ArrayR
ef (no-op) (const)
/// Construct an
array_ref from an array_r
ef (no-op) (const)
template
<
typename
T
>
template
<
typename
T
>
ArrayRef
<
T
>
makeArrayRef
(
const
ArrayR
ef
<
T
>
&
Vec
)
{
array_ref
<
T
>
make_array_ref
(
const
array_r
ef
<
T
>
&
Vec
)
{
return
Vec
;
return
Vec
;
}
}
/// Construct an
ArrayRef from an ArrayR
ef (no-op)
/// Construct an
array_ref from an array_r
ef (no-op)
template
<
typename
T
>
template
<
typename
T
>
ArrayRef
<
T
>
&
makeArrayRef
(
ArrayR
ef
<
T
>
&
Vec
)
{
array_ref
<
T
>
&
make_array_ref
(
array_r
ef
<
T
>
&
Vec
)
{
return
Vec
;
return
Vec
;
}
}
/// Construct an
ArrayR
ef from a C array.
/// Construct an
array_r
ef from a C array.
template
<
typename
T
,
size_t
N
>
template
<
typename
T
,
size_t
N
>
ArrayRef
<
T
>
makeArrayR
ef
(
const
T
(
&
Arr
)[
N
])
{
array_ref
<
T
>
make_array_r
ef
(
const
T
(
&
Arr
)[
N
])
{
return
ArrayR
ef
<
T
>
(
Arr
);
return
array_r
ef
<
T
>
(
Arr
);
}
}
/// @}
/// @}
/// @name
ArrayR
ef Comparison Operators
/// @name
array_r
ef Comparison Operators
/// @{
/// @{
template
<
typename
T
>
template
<
typename
T
>
inline
bool
operator
==
(
ArrayRef
<
T
>
LHS
,
ArrayR
ef
<
T
>
RHS
)
{
inline
bool
operator
==
(
array_ref
<
T
>
LHS
,
array_r
ef
<
T
>
RHS
)
{
return
LHS
.
equals
(
RHS
);
return
LHS
.
equals
(
RHS
);
}
}
template
<
typename
T
>
template
<
typename
T
>
inline
bool
operator
==
(
SmallVectorImpl
<
T
>
&
LHS
,
ArrayR
ef
<
T
>
RHS
)
{
inline
bool
operator
==
(
small_vector_impl
<
T
>
&
LHS
,
array_r
ef
<
T
>
RHS
)
{
return
ArrayR
ef
<
T
>
(
LHS
).
equals
(
RHS
);
return
array_r
ef
<
T
>
(
LHS
).
equals
(
RHS
);
}
}
template
<
typename
T
>
template
<
typename
T
>
inline
bool
operator
!=
(
ArrayRef
<
T
>
LHS
,
ArrayR
ef
<
T
>
RHS
)
{
inline
bool
operator
!=
(
array_ref
<
T
>
LHS
,
array_r
ef
<
T
>
RHS
)
{
return
!
(
LHS
==
RHS
);
return
!
(
LHS
==
RHS
);
}
}
template
<
typename
T
>
template
<
typename
T
>
inline
bool
operator
!=
(
SmallVectorImpl
<
T
>
&
LHS
,
ArrayR
ef
<
T
>
RHS
)
{
inline
bool
operator
!=
(
small_vector_impl
<
T
>
&
LHS
,
array_r
ef
<
T
>
RHS
)
{
return
!
(
LHS
==
RHS
);
return
!
(
LHS
==
RHS
);
}
}
...
...
paddle/utils/array_ref_test.cc
浏览文件 @
2cebcf4a
...
@@ -21,53 +21,53 @@
...
@@ -21,53 +21,53 @@
#include "gtest/gtest.h"
#include "gtest/gtest.h"
TEST
(
array_ref
,
array_ref
)
{
TEST
(
array_ref
,
array_ref
)
{
paddle
::
ArrayR
ef
<
int
>
a
;
paddle
::
array_r
ef
<
int
>
a
;
CHECK_EQ
(
a
.
size
(),
size_t
(
0
));
CHECK_EQ
(
a
.
size
(),
size_t
(
0
));
CHECK_EQ
(
a
.
data
(),
static_cast
<
int
*>
(
nullptr
));
CHECK_EQ
(
a
.
data
(),
static_cast
<
int
*>
(
nullptr
));
paddle
::
ArrayR
ef
<
int
>
b
(
paddle
::
none
);
paddle
::
array_r
ef
<
int
>
b
(
paddle
::
none
);
CHECK_EQ
(
b
.
size
(),
size_t
(
0
));
CHECK_EQ
(
b
.
size
(),
size_t
(
0
));
CHECK_EQ
(
b
.
data
(),
static_cast
<
int
*>
(
nullptr
));
CHECK_EQ
(
b
.
data
(),
static_cast
<
int
*>
(
nullptr
));
int
v
=
1
;
int
v
=
1
;
paddle
::
ArrayR
ef
<
int
>
c
(
v
);
paddle
::
array_r
ef
<
int
>
c
(
v
);
CHECK_EQ
(
c
.
size
(),
size_t
(
1
));
CHECK_EQ
(
c
.
size
(),
size_t
(
1
));
CHECK_EQ
(
c
.
data
(),
&
v
);
CHECK_EQ
(
c
.
data
(),
&
v
);
CHECK_EQ
(
c
.
equals
(
paddle
::
make
ArrayR
ef
(
v
)),
true
);
CHECK_EQ
(
c
.
equals
(
paddle
::
make
_array_r
ef
(
v
)),
true
);
int
v1
[
5
]
=
{
1
,
2
,
3
,
4
,
5
};
int
v1
[
5
]
=
{
1
,
2
,
3
,
4
,
5
};
paddle
::
ArrayR
ef
<
int
>
d
(
v1
,
5
);
paddle
::
array_r
ef
<
int
>
d
(
v1
,
5
);
CHECK_EQ
(
d
.
size
(),
size_t
(
5
));
CHECK_EQ
(
d
.
size
(),
size_t
(
5
));
CHECK_EQ
(
d
.
data
(),
v1
);
CHECK_EQ
(
d
.
data
(),
v1
);
CHECK_EQ
(
d
.
equals
(
paddle
::
make
ArrayR
ef
(
v1
,
5
)),
true
);
CHECK_EQ
(
d
.
equals
(
paddle
::
make
_array_r
ef
(
v1
,
5
)),
true
);
paddle
::
ArrayR
ef
<
int
>
e
(
&
v1
[
0
],
&
v1
[
4
]);
paddle
::
array_r
ef
<
int
>
e
(
&
v1
[
0
],
&
v1
[
4
]);
CHECK_EQ
(
e
.
size
(),
size_t
(
4
));
CHECK_EQ
(
e
.
size
(),
size_t
(
4
));
CHECK_EQ
(
e
.
data
(),
v1
);
CHECK_EQ
(
e
.
data
(),
v1
);
CHECK_EQ
(
e
.
equals
(
paddle
::
make
ArrayR
ef
(
&
v1
[
0
],
&
v1
[
4
])),
true
);
CHECK_EQ
(
e
.
equals
(
paddle
::
make
_array_r
ef
(
&
v1
[
0
],
&
v1
[
4
])),
true
);
paddle
::
SmallV
ector
<
int
,
3
>
small_vector
{
1
,
2
,
3
};
paddle
::
small_v
ector
<
int
,
3
>
small_vector
{
1
,
2
,
3
};
paddle
::
ArrayR
ef
<
int
>
f
(
small_vector
);
paddle
::
array_r
ef
<
int
>
f
(
small_vector
);
CHECK_EQ
(
f
.
size
(),
size_t
(
3
));
CHECK_EQ
(
f
.
size
(),
size_t
(
3
));
CHECK_EQ
(
f
.
data
(),
small_vector
.
data
());
CHECK_EQ
(
f
.
data
(),
small_vector
.
data
());
CHECK_EQ
(
f
.
equals
(
paddle
::
make
ArrayR
ef
(
small_vector
)),
true
);
CHECK_EQ
(
f
.
equals
(
paddle
::
make
_array_r
ef
(
small_vector
)),
true
);
std
::
vector
<
int
>
vector
{
1
,
2
,
3
};
std
::
vector
<
int
>
vector
{
1
,
2
,
3
};
paddle
::
ArrayR
ef
<
int
>
g
(
vector
);
paddle
::
array_r
ef
<
int
>
g
(
vector
);
CHECK_EQ
(
g
.
size
(),
size_t
(
3
));
CHECK_EQ
(
g
.
size
(),
size_t
(
3
));
CHECK_EQ
(
g
.
data
(),
vector
.
data
());
CHECK_EQ
(
g
.
data
(),
vector
.
data
());
CHECK_EQ
(
g
.
equals
(
paddle
::
make
ArrayR
ef
(
vector
)),
true
);
CHECK_EQ
(
g
.
equals
(
paddle
::
make
_array_r
ef
(
vector
)),
true
);
std
::
initializer_list
<
int
>
list
=
{
1
,
2
,
3
};
std
::
initializer_list
<
int
>
list
=
{
1
,
2
,
3
};
paddle
::
ArrayR
ef
<
int
>
h
(
list
);
paddle
::
array_r
ef
<
int
>
h
(
list
);
CHECK_EQ
(
h
.
size
(),
size_t
(
3
));
CHECK_EQ
(
h
.
size
(),
size_t
(
3
));
CHECK_EQ
(
h
.
data
(),
list
.
begin
());
CHECK_EQ
(
h
.
data
(),
list
.
begin
());
paddle
::
ArrayR
ef
<
int
>
i
(
h
);
paddle
::
array_r
ef
<
int
>
i
(
h
);
CHECK_EQ
(
i
.
size
(),
size_t
(
3
));
CHECK_EQ
(
i
.
size
(),
size_t
(
3
));
CHECK_EQ
(
i
.
data
(),
list
.
begin
());
CHECK_EQ
(
i
.
data
(),
list
.
begin
());
CHECK_EQ
(
i
.
equals
(
h
),
true
);
CHECK_EQ
(
i
.
equals
(
h
),
true
);
CHECK_EQ
(
i
.
equals
(
paddle
::
make
ArrayR
ef
(
h
)),
true
);
CHECK_EQ
(
i
.
equals
(
paddle
::
make
_array_r
ef
(
h
)),
true
);
auto
slice
=
i
.
slice
(
1
,
2
);
auto
slice
=
i
.
slice
(
1
,
2
);
CHECK_EQ
(
slice
.
size
(),
size_t
(
2
));
CHECK_EQ
(
slice
.
size
(),
size_t
(
2
));
...
@@ -78,7 +78,7 @@ TEST(array_ref, array_ref) {
...
@@ -78,7 +78,7 @@ TEST(array_ref, array_ref) {
CHECK_EQ
(
drop
.
size
(),
size_t
(
1
));
CHECK_EQ
(
drop
.
size
(),
size_t
(
1
));
CHECK_EQ
(
drop
[
0
],
3
);
CHECK_EQ
(
drop
[
0
],
3
);
paddle
::
ArrayR
ef
<
int
>
nums
=
{
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
};
paddle
::
array_r
ef
<
int
>
nums
=
{
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
};
auto
front
=
nums
.
take_front
(
3
);
auto
front
=
nums
.
take_front
(
3
);
CHECK_EQ
(
front
.
size
(),
size_t
(
3
));
CHECK_EQ
(
front
.
size
(),
size_t
(
3
));
for
(
size_t
i
=
0
;
i
<
3
;
++
i
)
{
for
(
size_t
i
=
0
;
i
<
3
;
++
i
)
{
...
...
paddle/utils/small_vector.h
浏览文件 @
2cebcf4a
此差异已折叠。
点击以展开。
paddle/utils/small_vector_test.cc
浏览文件 @
2cebcf4a
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
#include "gtest/gtest.h"
#include "gtest/gtest.h"
template
<
typename
T
,
unsigned
N
>
template
<
typename
T
,
unsigned
N
>
static
std
::
vector
<
T
>
ToStdVector
(
const
paddle
::
SmallV
ector
<
T
,
N
>
&
vec
)
{
static
std
::
vector
<
T
>
ToStdVector
(
const
paddle
::
small_v
ector
<
T
,
N
>
&
vec
)
{
std
::
vector
<
T
>
std_vec
;
std
::
vector
<
T
>
std_vec
;
std_vec
.
reserve
(
vec
.
size
());
std_vec
.
reserve
(
vec
.
size
());
for
(
size_t
i
=
0
;
i
<
vec
.
size
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
vec
.
size
();
++
i
)
{
...
@@ -35,7 +35,7 @@ void SmallVectorCheck(size_t n) {
...
@@ -35,7 +35,7 @@ void SmallVectorCheck(size_t n) {
std
::
srand
(
std
::
time
(
nullptr
));
std
::
srand
(
std
::
time
(
nullptr
));
std
::
vector
<
int
>
std_vec
;
std
::
vector
<
int
>
std_vec
;
paddle
::
SmallV
ector
<
int
,
N
>
vec
;
paddle
::
small_v
ector
<
int
,
N
>
vec
;
for
(
size_t
i
=
0
;
i
<
n
;
++
i
)
{
for
(
size_t
i
=
0
;
i
<
n
;
++
i
)
{
int
value
=
rand
();
// NOLINT
int
value
=
rand
();
// NOLINT
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录