Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
1aaec571
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1aaec571
编写于
12月 20, 2018
作者:
T
tensor-tang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix enum style
test=develop
上级
facfecbd
变更
27
隐藏空白更改
内联
并排
Showing
27 changed file
with
301 addition
and
302 deletion
+301
-302
paddle/fluid/operators/crf_decoding_op.h
paddle/fluid/operators/crf_decoding_op.h
+1
-1
paddle/fluid/operators/elementwise/elementwise_mul_mkldnn_op.cc
.../fluid/operators/elementwise/elementwise_mul_mkldnn_op.cc
+1
-1
paddle/fluid/operators/fused/fusion_gru_op.cc
paddle/fluid/operators/fused/fusion_gru_op.cc
+23
-23
paddle/fluid/operators/fused/fusion_lstm_op.cc
paddle/fluid/operators/fused/fusion_lstm_op.cc
+26
-26
paddle/fluid/operators/jit/benchmark.cc
paddle/fluid/operators/jit/benchmark.cc
+18
-18
paddle/fluid/operators/jit/gen/CMakeLists.txt
paddle/fluid/operators/jit/gen/CMakeLists.txt
+17
-17
paddle/fluid/operators/jit/gen/act.cc
paddle/fluid/operators/jit/gen/act.cc
+5
-5
paddle/fluid/operators/jit/gen/blas.cc
paddle/fluid/operators/jit/gen/blas.cc
+7
-7
paddle/fluid/operators/jit/gen/gru.cc
paddle/fluid/operators/jit/gen/gru.cc
+3
-3
paddle/fluid/operators/jit/gen/gru.h
paddle/fluid/operators/jit/gen/gru.h
+4
-4
paddle/fluid/operators/jit/gen/lstm.cc
paddle/fluid/operators/jit/gen/lstm.cc
+2
-2
paddle/fluid/operators/jit/gen/lstm.h
paddle/fluid/operators/jit/gen/lstm.h
+4
-4
paddle/fluid/operators/jit/helper.cc
paddle/fluid/operators/jit/helper.cc
+25
-26
paddle/fluid/operators/jit/kernel_base.h
paddle/fluid/operators/jit/kernel_base.h
+20
-20
paddle/fluid/operators/jit/more/intrinsic/CMakeLists.txt
paddle/fluid/operators/jit/more/intrinsic/CMakeLists.txt
+2
-2
paddle/fluid/operators/jit/more/intrinsic/crf_decoding.cc
paddle/fluid/operators/jit/more/intrinsic/crf_decoding.cc
+1
-1
paddle/fluid/operators/jit/more/intrinsic/layer_norm.cc
paddle/fluid/operators/jit/more/intrinsic/layer_norm.cc
+1
-1
paddle/fluid/operators/jit/more/mix/CMakeLists.txt
paddle/fluid/operators/jit/more/mix/CMakeLists.txt
+7
-7
paddle/fluid/operators/jit/more/mix/mix.cc
paddle/fluid/operators/jit/more/mix/mix.cc
+26
-26
paddle/fluid/operators/jit/more/mkl/CMakeLists.txt
paddle/fluid/operators/jit/more/mkl/CMakeLists.txt
+6
-6
paddle/fluid/operators/jit/more/mkl/mkl.cc
paddle/fluid/operators/jit/more/mkl/mkl.cc
+6
-6
paddle/fluid/operators/jit/refer/CMakeLists.txt
paddle/fluid/operators/jit/refer/CMakeLists.txt
+19
-19
paddle/fluid/operators/jit/refer/refer.cc
paddle/fluid/operators/jit/refer/refer.cc
+19
-19
paddle/fluid/operators/jit/refer/refer.h
paddle/fluid/operators/jit/refer/refer.h
+4
-4
paddle/fluid/operators/jit/test.cc
paddle/fluid/operators/jit/test.cc
+51
-51
paddle/fluid/operators/layer_norm_op.h
paddle/fluid/operators/layer_norm_op.h
+1
-1
paddle/fluid/operators/math/fc_compute.h
paddle/fluid/operators/math/fc_compute.h
+2
-2
未找到文件。
paddle/fluid/operators/crf_decoding_op.h
浏览文件 @
1aaec571
...
...
@@ -82,7 +82,7 @@ class CRFDecodingOpKernel : public framework::OpKernel<T> {
Tensor
track
;
int
*
track_value
=
track
.
mutable_data
<
int
>
(
emission_dims
,
platform
::
CPUPlace
());
auto
ker
=
jit
::
Get
<
jit
::
crfd
ecoding
,
jit
::
CRFDecodingTuples
<
T
>
,
auto
ker
=
jit
::
Get
<
jit
::
kCRFD
ecoding
,
jit
::
CRFDecodingTuples
<
T
>
,
platform
::
CPUPlace
>
(
tag_num
);
ker
(
static_cast
<
int
>
(
seq_len
),
x
,
w
,
alpha_value
,
track_value
,
tag_num
);
T
max_score
=
-
std
::
numeric_limits
<
T
>::
max
();
...
...
paddle/fluid/operators/elementwise/elementwise_mul_mkldnn_op.cc
浏览文件 @
1aaec571
...
...
@@ -108,7 +108,7 @@ class ElementwiseMulMKLDNNKernel : public framework::OpKernel<T> {
constexpr
int
simd_width
=
16
;
int
C
=
c
/
simd_width
;
auto
multiply
=
jit
::
Get
<
jit
::
nchw16cmulnc
,
jit
::
NCHW16CMulNCTuples
<
T
>
,
auto
multiply
=
jit
::
Get
<
jit
::
kNCHW16CMulNC
,
jit
::
NCHW16CMulNCTuples
<
T
>
,
platform
::
CPUPlace
>
(
0
);
#pragma omp parallel for collapse(2)
for
(
int
ni
=
0
;
ni
<
n
;
ni
++
)
{
...
...
paddle/fluid/operators/fused/fusion_gru_op.cc
浏览文件 @
1aaec571
...
...
@@ -182,29 +182,29 @@ class FusionGRUKernel : public framework::OpKernel<T> {
const int total_T = x_dims[0]; \
const int D3 = wh_dims[1]
#define INIT_OTHER_DEFINES \
auto* h0 = ctx.Input<Tensor>("H0"); \
auto* wx = ctx.Input<Tensor>("WeightX"); \
auto* bias = ctx.Input<Tensor>("Bias"); \
auto* hidden_out = ctx.Output<LoDTensor>("Hidden"); \
bool is_reverse = ctx.Attr<bool>("is_reverse"); \
const int M = x_dims[1]; \
const int D = wh_dims[0]; \
const int D2 = D * 2; \
const jit::gru_attr_t attr( \
D, jit::to_kerneltype(ctx.Attr<std::string>("gate_activation")), \
jit::to_kerneltype(ctx.Attr<std::string>("activation"))); \
jit::gru_t one_step; \
auto ComputeH1 = \
jit::Get<jit::
gruh
1, jit::GRUTuples<T>, platform::CPUPlace>(attr); \
auto ComputeHtPart1 = \
jit::Get<jit::
gruhtp
art1, jit::GRUTuples<T>, platform::CPUPlace>(attr); \
auto ComputeHtPart2 = \
jit::Get<jit::
gruhtp
art2, jit::GRUTuples<T>, platform::CPUPlace>(attr); \
const T* x_data = x->data<T>(); \
const T* wx_data = wx->data<T>(); \
const T* wh_data = wh->data<T>(); \
auto place = ctx.GetPlace(); \
#define INIT_OTHER_DEFINES
\
auto* h0 = ctx.Input<Tensor>("H0");
\
auto* wx = ctx.Input<Tensor>("WeightX");
\
auto* bias = ctx.Input<Tensor>("Bias");
\
auto* hidden_out = ctx.Output<LoDTensor>("Hidden");
\
bool is_reverse = ctx.Attr<bool>("is_reverse");
\
const int M = x_dims[1];
\
const int D = wh_dims[0];
\
const int D2 = D * 2;
\
const jit::gru_attr_t attr(
\
D, jit::to_kerneltype(ctx.Attr<std::string>("gate_activation")),
\
jit::to_kerneltype(ctx.Attr<std::string>("activation")));
\
jit::gru_t one_step;
\
auto ComputeH1 =
\
jit::Get<jit::
kGRUH
1, jit::GRUTuples<T>, platform::CPUPlace>(attr); \
auto ComputeHtPart1 =
\
jit::Get<jit::
kGRUHtP
art1, jit::GRUTuples<T>, platform::CPUPlace>(attr); \
auto ComputeHtPart2 =
\
jit::Get<jit::
kGRUHtP
art2, jit::GRUTuples<T>, platform::CPUPlace>(attr); \
const T* x_data = x->data<T>();
\
const T* wx_data = wx->data<T>();
\
const T* wh_data = wh->data<T>();
\
auto place = ctx.GetPlace();
\
T* xx_data = xx->mutable_data<T>(place)
void
SeqCompute
(
const
framework
::
ExecutionContext
&
ctx
)
const
{
...
...
paddle/fluid/operators/fused/fusion_lstm_op.cc
浏览文件 @
1aaec571
...
...
@@ -235,32 +235,32 @@ class FuisonLSTMKernel : public framework::OpKernel<T> {
const int D = wh_dims[0]; \
const int D4 = wh_dims[1]
#define INIT_OTHER_DEFINES \
const T* x_data = x->data<T>(); \
const T* wx_data = wx->data<T>(); \
const T* wh_data = wh->data<T>(); \
/* diagonal weight*/
\
const T* wp_data = bias->data<T>() + D4; \
/* for peephole only*/
\
T* checked_cell_data = nullptr; \
auto place = ctx.GetPlace(); \
if (use_peepholes) { \
/* w_ic * Ct-1, w_fc * Ct-1 ; w_oc * Ct => ih*/
\
auto* checked_cell = ctx.Output<Tensor>("CheckedCell"); \
checked_cell_data = checked_cell->mutable_data<T>(place); \
} \
const jit::lstm_attr_t attr( \
D, jit::to_kerneltype(ctx.Attr<std::string>("gate_activation")), \
jit::to_kerneltype(ctx.Attr<std::string>("candidate_activation")), \
jit::to_kerneltype(ctx.Attr<std::string>("cell_activation")), \
use_peepholes); \
jit::lstm_t one_step; \
one_step.wp = wp_data; \
one_step.checked = checked_cell_data; \
auto ComputeC1H1 = \
jit::Get<jit::
lstmc1h
1, jit::LSTMTuples<T>, platform::CPUPlace>(attr); \
auto ComputeCtHt = \
jit::Get<jit::
lstmcth
t, jit::LSTMTuples<T>, platform::CPUPlace>(attr)
#define INIT_OTHER_DEFINES
\
const T* x_data = x->data<T>();
\
const T* wx_data = wx->data<T>();
\
const T* wh_data = wh->data<T>();
\
/* diagonal weight*/
\
const T* wp_data = bias->data<T>() + D4;
\
/* for peephole only*/
\
T* checked_cell_data = nullptr;
\
auto place = ctx.GetPlace();
\
if (use_peepholes) {
\
/* w_ic * Ct-1, w_fc * Ct-1 ; w_oc * Ct => ih*/
\
auto* checked_cell = ctx.Output<Tensor>("CheckedCell");
\
checked_cell_data = checked_cell->mutable_data<T>(place);
\
}
\
const jit::lstm_attr_t attr(
\
D, jit::to_kerneltype(ctx.Attr<std::string>("gate_activation")),
\
jit::to_kerneltype(ctx.Attr<std::string>("candidate_activation")),
\
jit::to_kerneltype(ctx.Attr<std::string>("cell_activation")),
\
use_peepholes);
\
jit::lstm_t one_step;
\
one_step.wp = wp_data;
\
one_step.checked = checked_cell_data;
\
auto ComputeC1H1 =
\
jit::Get<jit::
kLSTMC1H
1, jit::LSTMTuples<T>, platform::CPUPlace>(attr); \
auto ComputeCtHt =
\
jit::Get<jit::
kLSTMCtH
t, jit::LSTMTuples<T>, platform::CPUPlace>(attr)
// Wh GEMM
#define GEMM_WH_ADDON(bs, prev, out) \
...
...
paddle/fluid/operators/jit/benchmark.cc
浏览文件 @
1aaec571
...
...
@@ -146,7 +146,7 @@ template <paddle::operators::jit::KernelType KT, typename T, typename PlaceType>
void
BenchLSTMKernel
()
{
for
(
bool
use_peephole
:
{
true
,
false
})
{
for
(
int
d
:
TestSizes
())
{
const
jit
::
lstm_attr_t
attr
(
d
,
jit
::
vsigmoid
,
jit
::
vtanh
,
jit
::
vt
anh
,
const
jit
::
lstm_attr_t
attr
(
d
,
jit
::
kVSigmoid
,
jit
::
kVTanh
,
jit
::
kVT
anh
,
use_peephole
);
std
::
vector
<
T
>
x
(
4
*
d
),
ct_1
(
d
),
ct
(
d
),
ht
(
d
),
wp
(
3
*
d
),
checked
(
2
*
d
);
RandomVec
<
T
>
(
4
*
d
,
x
.
data
(),
-
2.
f
,
2.
f
);
...
...
@@ -175,7 +175,7 @@ void BenchLSTMKernel() {
template
<
paddle
::
operators
::
jit
::
KernelType
KT
,
typename
T
,
typename
PlaceType
>
void
BenchGRUKernel
()
{
for
(
int
d
:
TestSizes
())
{
const
jit
::
gru_attr_t
attr
(
d
,
jit
::
vsigmoid
,
jit
::
vt
anh
);
const
jit
::
gru_attr_t
attr
(
d
,
jit
::
kVSigmoid
,
jit
::
kVT
anh
);
std
::
vector
<
T
>
x
(
3
*
d
),
ht_1
(
d
),
ht
(
d
);
RandomVec
<
T
>
(
3
*
d
,
x
.
data
(),
-
2.
f
,
2.
f
);
RandomVec
<
T
>
(
d
,
ht_1
.
data
(),
-
2.
f
,
2.
f
);
...
...
@@ -204,28 +204,28 @@ int main(int argc, char* argv[]) {
using
T
=
float
;
using
PlaceType
=
paddle
::
platform
::
CPUPlace
;
// xyzn
BenchXYZNKernel
<
jit
::
vm
ul
,
T
,
PlaceType
>
();
BenchXYZNKernel
<
jit
::
va
dd
,
T
,
PlaceType
>
();
BenchXYZNKernel
<
jit
::
vaddr
elu
,
T
,
PlaceType
>
();
BenchXYZNKernel
<
jit
::
vs
ub
,
T
,
PlaceType
>
();
BenchXYZNKernel
<
jit
::
kVM
ul
,
T
,
PlaceType
>
();
BenchXYZNKernel
<
jit
::
kVA
dd
,
T
,
PlaceType
>
();
BenchXYZNKernel
<
jit
::
kVAddR
elu
,
T
,
PlaceType
>
();
BenchXYZNKernel
<
jit
::
kVS
ub
,
T
,
PlaceType
>
();
// axyn
BenchAXYNKernel
<
jit
::
vs
cal
,
T
,
PlaceType
>
();
BenchAXYNKernel
<
jit
::
vaddb
ias
,
T
,
PlaceType
>
();
BenchAXYNKernel
<
jit
::
kVS
cal
,
T
,
PlaceType
>
();
BenchAXYNKernel
<
jit
::
kVAddB
ias
,
T
,
PlaceType
>
();
// xyn
BenchXYNKernel
<
jit
::
vr
elu
,
T
,
PlaceType
>
();
BenchXYNKernel
<
jit
::
vi
dentity
,
T
,
PlaceType
>
();
BenchXYNKernel
<
jit
::
ve
xp
,
T
,
PlaceType
>
();
BenchXYNKernel
<
jit
::
vs
igmoid
,
T
,
PlaceType
>
();
BenchXYNKernel
<
jit
::
vt
anh
,
T
,
PlaceType
>
();
BenchXYNKernel
<
jit
::
kVR
elu
,
T
,
PlaceType
>
();
BenchXYNKernel
<
jit
::
kVI
dentity
,
T
,
PlaceType
>
();
BenchXYNKernel
<
jit
::
kVE
xp
,
T
,
PlaceType
>
();
BenchXYNKernel
<
jit
::
kVS
igmoid
,
T
,
PlaceType
>
();
BenchXYNKernel
<
jit
::
kVT
anh
,
T
,
PlaceType
>
();
// lstm and peephole
BenchLSTMKernel
<
jit
::
lstmcth
t
,
T
,
PlaceType
>
();
BenchLSTMKernel
<
jit
::
lstmc1h
1
,
T
,
PlaceType
>
();
BenchLSTMKernel
<
jit
::
kLSTMCtH
t
,
T
,
PlaceType
>
();
BenchLSTMKernel
<
jit
::
kLSTMC1H
1
,
T
,
PlaceType
>
();
// gru functions
BenchGRUKernel
<
jit
::
gruh
1
,
T
,
PlaceType
>
();
BenchGRUKernel
<
jit
::
gruhtp
art1
,
T
,
PlaceType
>
();
BenchGRUKernel
<
jit
::
gruhtp
art2
,
T
,
PlaceType
>
();
BenchGRUKernel
<
jit
::
kGRUH
1
,
T
,
PlaceType
>
();
BenchGRUKernel
<
jit
::
kGRUHtP
art1
,
T
,
PlaceType
>
();
BenchGRUKernel
<
jit
::
kGRUHtP
art2
,
T
,
PlaceType
>
();
}
paddle/fluid/operators/jit/gen/CMakeLists.txt
浏览文件 @
1aaec571
...
...
@@ -9,20 +9,20 @@ function(USE_JITKERNEL_GEN TARGET)
endfunction
()
# use gen jitcode kernel by name
USE_JITKERNEL_GEN
(
vm
ul
)
USE_JITKERNEL_GEN
(
va
dd
)
#USE_JITKERNEL_GEN(
vs
ub) # TODO(TJ): enable me
USE_JITKERNEL_GEN
(
vaddr
elu
)
USE_JITKERNEL_GEN
(
vs
cal
)
USE_JITKERNEL_GEN
(
vaddb
ias
)
USE_JITKERNEL_GEN
(
vr
elu
)
USE_JITKERNEL_GEN
(
vi
dentity
)
USE_JITKERNEL_GEN
(
ve
xp
)
USE_JITKERNEL_GEN
(
vs
igmoid
)
USE_JITKERNEL_GEN
(
vt
anh
)
USE_JITKERNEL_GEN
(
lstmcth
t
)
USE_JITKERNEL_GEN
(
lstmc1h
1
)
USE_JITKERNEL_GEN
(
gruh
1
)
USE_JITKERNEL_GEN
(
gruhtp
art1
)
USE_JITKERNEL_GEN
(
gruhtp
art2
)
USE_JITKERNEL_GEN
(
nchw16cmulnc
)
USE_JITKERNEL_GEN
(
kVM
ul
)
USE_JITKERNEL_GEN
(
kVA
dd
)
#USE_JITKERNEL_GEN(
kVS
ub) # TODO(TJ): enable me
USE_JITKERNEL_GEN
(
kVAddR
elu
)
USE_JITKERNEL_GEN
(
kVS
cal
)
USE_JITKERNEL_GEN
(
kVAddB
ias
)
USE_JITKERNEL_GEN
(
kVR
elu
)
USE_JITKERNEL_GEN
(
kVI
dentity
)
USE_JITKERNEL_GEN
(
kVE
xp
)
USE_JITKERNEL_GEN
(
kVS
igmoid
)
USE_JITKERNEL_GEN
(
kVT
anh
)
USE_JITKERNEL_GEN
(
kLSTMCtH
t
)
USE_JITKERNEL_GEN
(
kLSTMC1H
1
)
USE_JITKERNEL_GEN
(
kGRUH
1
)
USE_JITKERNEL_GEN
(
kGRUHtP
art1
)
USE_JITKERNEL_GEN
(
kGRUHtP
art2
)
USE_JITKERNEL_GEN
(
kNCHW16CMulNC
)
paddle/fluid/operators/jit/gen/act.cc
浏览文件 @
1aaec571
...
...
@@ -128,8 +128,8 @@ size_t VTanhCreator::CodeSize(const int& d) const {
namespace
gen
=
paddle
::
operators
::
jit
::
gen
;
REGISTER_JITKERNEL_GEN
(
vr
elu
,
gen
::
VReluCreator
);
REGISTER_JITKERNEL_GEN
(
vi
dentity
,
gen
::
VIdentityCreator
);
REGISTER_JITKERNEL_GEN
(
ve
xp
,
gen
::
VExpCreator
);
REGISTER_JITKERNEL_GEN
(
vs
igmoid
,
gen
::
VSigmoidCreator
);
REGISTER_JITKERNEL_GEN
(
vt
anh
,
gen
::
VTanhCreator
);
REGISTER_JITKERNEL_GEN
(
kVR
elu
,
gen
::
VReluCreator
);
REGISTER_JITKERNEL_GEN
(
kVI
dentity
,
gen
::
VIdentityCreator
);
REGISTER_JITKERNEL_GEN
(
kVE
xp
,
gen
::
VExpCreator
);
REGISTER_JITKERNEL_GEN
(
kVS
igmoid
,
gen
::
VSigmoidCreator
);
REGISTER_JITKERNEL_GEN
(
kVT
anh
,
gen
::
VTanhCreator
);
paddle/fluid/operators/jit/gen/blas.cc
浏览文件 @
1aaec571
...
...
@@ -176,11 +176,11 @@ DECLARE_BLAS_CREATOR(VAddBias);
namespace
gen
=
paddle
::
operators
::
jit
::
gen
;
REGISTER_JITKERNEL_GEN
(
vm
ul
,
gen
::
VMulCreator
);
REGISTER_JITKERNEL_GEN
(
va
dd
,
gen
::
VAddCreator
);
REGISTER_JITKERNEL_GEN
(
kVM
ul
,
gen
::
VMulCreator
);
REGISTER_JITKERNEL_GEN
(
kVA
dd
,
gen
::
VAddCreator
);
// TODO(TJ): enable sub
// REGISTER_JITKERNEL_GEN(
vs
ub, gen::VSubCreator);
REGISTER_JITKERNEL_GEN
(
vaddr
elu
,
gen
::
VAddReluCreator
);
REGISTER_JITKERNEL_GEN
(
vs
cal
,
gen
::
VScalCreator
);
REGISTER_JITKERNEL_GEN
(
vaddb
ias
,
gen
::
VAddBiasCreator
);
REGISTER_JITKERNEL_GEN
(
nchw16cmulnc
,
gen
::
NCHW16CMulNCCreator
);
// REGISTER_JITKERNEL_GEN(
kVS
ub, gen::VSubCreator);
REGISTER_JITKERNEL_GEN
(
kVAddR
elu
,
gen
::
VAddReluCreator
);
REGISTER_JITKERNEL_GEN
(
kVS
cal
,
gen
::
VScalCreator
);
REGISTER_JITKERNEL_GEN
(
kVAddB
ias
,
gen
::
VAddBiasCreator
);
REGISTER_JITKERNEL_GEN
(
kNCHW16CMulNC
,
gen
::
NCHW16CMulNCCreator
);
paddle/fluid/operators/jit/gen/gru.cc
浏览文件 @
1aaec571
...
...
@@ -111,6 +111,6 @@ DECLARE_GRU_CREATOR(GRUHtPart2);
namespace
gen
=
paddle
::
operators
::
jit
::
gen
;
REGISTER_JITKERNEL_GEN
(
gruh
1
,
gen
::
GRUH1Creator
);
REGISTER_JITKERNEL_GEN
(
gruhtp
art1
,
gen
::
GRUHtPart1Creator
);
REGISTER_JITKERNEL_GEN
(
gruhtp
art2
,
gen
::
GRUHtPart2Creator
);
REGISTER_JITKERNEL_GEN
(
kGRUH
1
,
gen
::
GRUH1Creator
);
REGISTER_JITKERNEL_GEN
(
kGRUHtP
art1
,
gen
::
GRUHtPart1Creator
);
REGISTER_JITKERNEL_GEN
(
kGRUHtP
art2
,
gen
::
GRUHtPart2Creator
);
paddle/fluid/operators/jit/gen/gru.h
浏览文件 @
1aaec571
...
...
@@ -30,13 +30,13 @@ class GRUJitCode : public VActFunc {
void
*
code_ptr
=
nullptr
)
:
VActFunc
(
code_size
,
code_ptr
),
id_
(
id
),
num_
(
attr
.
d
)
{
auto
typeExchange
=
[](
KernelType
type
)
->
gen
::
operand_type
{
if
(
type
==
KernelType
::
vs
igmoid
)
{
if
(
type
==
KernelType
::
kVS
igmoid
)
{
return
operand_type
::
SIGMOID
;
}
else
if
(
type
==
KernelType
::
vr
elu
)
{
}
else
if
(
type
==
KernelType
::
kVR
elu
)
{
return
operand_type
::
RELU
;
}
else
if
(
type
==
KernelType
::
vt
anh
)
{
}
else
if
(
type
==
KernelType
::
kVT
anh
)
{
return
operand_type
::
TANH
;
}
else
if
(
type
==
KernelType
::
vi
dentity
)
{
}
else
if
(
type
==
KernelType
::
kVI
dentity
)
{
return
operand_type
::
IDENTITY
;
}
else
{
LOG
(
FATAL
)
<<
"Do not support this jit::KernelType: "
<<
type
;
...
...
paddle/fluid/operators/jit/gen/lstm.cc
浏览文件 @
1aaec571
...
...
@@ -138,5 +138,5 @@ DECLARE_LSTM_CREATOR(LSTMC1H1);
namespace
gen
=
paddle
::
operators
::
jit
::
gen
;
REGISTER_JITKERNEL_GEN
(
lstmcth
t
,
gen
::
LSTMCtHtCreator
);
REGISTER_JITKERNEL_GEN
(
lstmc1h
1
,
gen
::
LSTMC1H1Creator
);
REGISTER_JITKERNEL_GEN
(
kLSTMCtH
t
,
gen
::
LSTMCtHtCreator
);
REGISTER_JITKERNEL_GEN
(
kLSTMC1H
1
,
gen
::
LSTMC1H1Creator
);
paddle/fluid/operators/jit/gen/lstm.h
浏览文件 @
1aaec571
...
...
@@ -33,13 +33,13 @@ class LSTMJitCode : public VActFunc {
compute_c1h1_
(
compute_c1h1
),
use_peephole_
(
attr
.
use_peephole
)
{
auto
typeExchange
=
[](
KernelType
type
)
->
gen
::
operand_type
{
if
(
type
==
KernelType
::
vs
igmoid
)
{
if
(
type
==
KernelType
::
kVS
igmoid
)
{
return
operand_type
::
SIGMOID
;
}
else
if
(
type
==
KernelType
::
vr
elu
)
{
}
else
if
(
type
==
KernelType
::
kVR
elu
)
{
return
operand_type
::
RELU
;
}
else
if
(
type
==
KernelType
::
vt
anh
)
{
}
else
if
(
type
==
KernelType
::
kVT
anh
)
{
return
operand_type
::
TANH
;
}
else
if
(
type
==
KernelType
::
vi
dentity
)
{
}
else
if
(
type
==
KernelType
::
kVI
dentity
)
{
return
operand_type
::
IDENTITY
;
}
else
{
LOG
(
FATAL
)
<<
"Do not support this jit::KernelType: "
<<
type
;
...
...
paddle/fluid/operators/jit/helper.cc
浏览文件 @
1aaec571
...
...
@@ -26,25 +26,25 @@ namespace jit {
const
char
*
to_string
(
KernelType
kt
)
{
switch
(
kt
)
{
ONE_CASE
(
vm
ul
);
ONE_CASE
(
va
dd
);
ONE_CASE
(
vaddr
elu
);
ONE_CASE
(
vs
ub
);
ONE_CASE
(
vs
cal
);
ONE_CASE
(
vaddb
ias
);
ONE_CASE
(
vr
elu
);
ONE_CASE
(
vi
dentity
);
ONE_CASE
(
ve
xp
);
ONE_CASE
(
vs
igmoid
);
ONE_CASE
(
vt
anh
);
ONE_CASE
(
lstmcth
t
);
ONE_CASE
(
lstmc1h
1
);
ONE_CASE
(
gruh
1
);
ONE_CASE
(
gruhtp
art1
);
ONE_CASE
(
gruhtp
art2
);
ONE_CASE
(
crfd
ecoding
);
ONE_CASE
(
layern
orm
);
ONE_CASE
(
nchw16cmulnc
);
ONE_CASE
(
kVM
ul
);
ONE_CASE
(
kVA
dd
);
ONE_CASE
(
kVAddR
elu
);
ONE_CASE
(
kVS
ub
);
ONE_CASE
(
kVS
cal
);
ONE_CASE
(
kVAddB
ias
);
ONE_CASE
(
kVR
elu
);
ONE_CASE
(
kVI
dentity
);
ONE_CASE
(
kVE
xp
);
ONE_CASE
(
kVS
igmoid
);
ONE_CASE
(
kVT
anh
);
ONE_CASE
(
kLSTMCtH
t
);
ONE_CASE
(
kLSTMC1H
1
);
ONE_CASE
(
kGRUH
1
);
ONE_CASE
(
kGRUHtP
art1
);
ONE_CASE
(
kGRUHtP
art2
);
ONE_CASE
(
kCRFD
ecoding
);
ONE_CASE
(
kLayerN
orm
);
ONE_CASE
(
kNCHW16CMulNC
);
default:
PADDLE_THROW
(
"Not support type: %d, or forget to add it."
,
kt
);
return
"NOT JITKernel"
;
...
...
@@ -57,19 +57,18 @@ KernelType to_kerneltype(const std::string& act) {
std
::
string
lower
=
act
;
std
::
transform
(
lower
.
begin
(),
lower
.
end
(),
lower
.
begin
(),
::
tolower
);
if
(
lower
==
"relu"
||
lower
==
"vrelu"
)
{
return
vr
elu
;
return
kVR
elu
;
}
else
if
(
lower
==
"identity"
||
lower
==
"videntity"
||
lower
==
""
)
{
return
vi
dentity
;
return
kVI
dentity
;
}
else
if
(
lower
==
"exp"
||
lower
==
"vexp"
)
{
return
ve
xp
;
return
kVE
xp
;
}
else
if
(
lower
==
"sigmoid"
||
lower
==
"vsigmoid"
)
{
return
vs
igmoid
;
return
kVS
igmoid
;
}
else
if
(
lower
==
"tanh"
||
lower
==
"vtanh"
)
{
return
vt
anh
;
return
kVT
anh
;
}
PADDLE_THROW
(
"Not support type: %s, or forget to add this case"
,
act
);
return
non_kernel
;
return
kNone
;
}
}
// namespace jit
...
...
paddle/fluid/operators/jit/kernel_base.h
浏览文件 @
1aaec571
...
...
@@ -21,26 +21,26 @@ namespace operators {
namespace
jit
{
typedef
enum
{
non_kernel
=
0
,
vm
ul
=
1
,
va
dd
=
2
,
vaddr
elu
,
vs
ub
,
vs
cal
,
vaddb
ias
,
vr
elu
,
vi
dentity
,
ve
xp
,
vs
igmoid
,
vt
anh
,
lstmcth
t
,
lstmc1h
1
,
gruh
1
,
gruhtp
art1
,
gruhtp
art2
,
crfd
ecoding
,
layern
orm
,
nchw16cmulnc
,
kNone
=
0
,
kVM
ul
=
1
,
kVA
dd
=
2
,
kVAddR
elu
,
kVS
ub
,
kVS
cal
,
kVAddB
ias
,
kVR
elu
,
kVI
dentity
,
kVE
xp
,
kVS
igmoid
,
kVT
anh
,
kLSTMCtH
t
,
kLSTMC1H
1
,
kGRUH
1
,
kGRUHtP
art1
,
kGRUHtP
art2
,
kCRFD
ecoding
,
kLayerN
orm
,
kNCHW16CMulNC
,
}
KernelType
;
template
<
typename
T
>
...
...
paddle/fluid/operators/jit/more/intrinsic/CMakeLists.txt
浏览文件 @
1aaec571
...
...
@@ -5,5 +5,5 @@ cc_library(jit_kernel_intrinsic SRCS ${jit_kernel_cc_intrinsic} DEPS jit_kernel_
set
(
JIT_KERNEL_DEPS
${
JIT_KERNEL_DEPS
}
jit_kernel_intrinsic PARENT_SCOPE
)
# use mkl kernels by name and type
USE_JITKERNEL_MORE
(
crfd
ecoding, intrinsic
)
USE_JITKERNEL_MORE
(
layern
orm, intrinsic
)
USE_JITKERNEL_MORE
(
kCRFD
ecoding, intrinsic
)
USE_JITKERNEL_MORE
(
kLayerN
orm, intrinsic
)
paddle/fluid/operators/jit/more/intrinsic/crf_decoding.cc
浏览文件 @
1aaec571
...
...
@@ -178,4 +178,4 @@ bool CRFDecodingKernel::UseMe(const int& d) const {
namespace
intrinsic
=
paddle
::
operators
::
jit
::
more
::
intrinsic
;
REGISTER_JITKERNEL_MORE
(
crfd
ecoding
,
intrinsic
,
intrinsic
::
CRFDecodingKernel
);
REGISTER_JITKERNEL_MORE
(
kCRFD
ecoding
,
intrinsic
,
intrinsic
::
CRFDecodingKernel
);
paddle/fluid/operators/jit/more/intrinsic/layer_norm.cc
浏览文件 @
1aaec571
...
...
@@ -165,4 +165,4 @@ bool LayerNormKernel::UseMe(const int& d) const {
namespace
intrinsic
=
paddle
::
operators
::
jit
::
more
::
intrinsic
;
REGISTER_JITKERNEL_MORE
(
layern
orm
,
intrinsic
,
intrinsic
::
LayerNormKernel
);
REGISTER_JITKERNEL_MORE
(
kLayerN
orm
,
intrinsic
,
intrinsic
::
LayerNormKernel
);
paddle/fluid/operators/jit/more/mix/CMakeLists.txt
浏览文件 @
1aaec571
...
...
@@ -5,10 +5,10 @@ cc_library(jit_kernel_mix SRCS ${jit_kernel_mix_cc} DEPS jit_kernel_base)
set
(
JIT_KERNEL_DEPS
${
JIT_KERNEL_DEPS
}
jit_kernel_mix PARENT_SCOPE
)
USE_JITKERNEL_MORE
(
vs
igmoid, mix
)
USE_JITKERNEL_MORE
(
vt
anh, mix
)
USE_JITKERNEL_MORE
(
lstmcth
t, mix
)
USE_JITKERNEL_MORE
(
lstmc1h
1, mix
)
USE_JITKERNEL_MORE
(
gruh
1, mix
)
USE_JITKERNEL_MORE
(
gruhtp
art1, mix
)
USE_JITKERNEL_MORE
(
gruhtp
art2, mix
)
USE_JITKERNEL_MORE
(
kVS
igmoid, mix
)
USE_JITKERNEL_MORE
(
kVT
anh, mix
)
USE_JITKERNEL_MORE
(
kLSTMCtH
t, mix
)
USE_JITKERNEL_MORE
(
kLSTMC1H
1, mix
)
USE_JITKERNEL_MORE
(
kGRUH
1, mix
)
USE_JITKERNEL_MORE
(
kGRUHtP
art1, mix
)
USE_JITKERNEL_MORE
(
kGRUHtP
art2, mix
)
paddle/fluid/operators/jit/more/mix/mix.cc
浏览文件 @
1aaec571
...
...
@@ -30,7 +30,7 @@ void VSigmoid(const T* x, T* y, int n) {
y
[
i
]
=
(
x
[
i
]
<
min
)
?
min
:
((
x
[
i
]
>
max
)
?
max
:
x
[
i
]);
y
[
i
]
=
static_cast
<
T
>
(
0
)
-
y
[
i
];
}
auto
compute
=
Get
<
KernelType
::
ve
xp
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
n
);
auto
compute
=
Get
<
KernelType
::
kVE
xp
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
n
);
compute
(
y
,
y
,
n
);
for
(
int
i
=
0
;
i
<
n
;
++
i
)
{
y
[
i
]
=
static_cast
<
T
>
(
1
)
/
(
static_cast
<
T
>
(
1
)
+
y
[
i
]);
...
...
@@ -39,9 +39,9 @@ void VSigmoid(const T* x, T* y, int n) {
void
VTanh
(
const
T
*
x
,
T
*
y
,
int
n
)
{
const
T
a
=
2
,
b
=
-
1
;
auto
compute_scal
=
Get
<
vs
cal
,
AXYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
n
);
auto
compute_addbias
=
Get
<
vaddb
ias
,
AXYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
n
);
auto
compute_sigmoid
=
Get
<
vs
igmoid
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
n
);
auto
compute_scal
=
Get
<
kVS
cal
,
AXYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
n
);
auto
compute_addbias
=
Get
<
kVAddB
ias
,
AXYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
n
);
auto
compute_sigmoid
=
Get
<
kVS
igmoid
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
n
);
compute_scal
(
&
a
,
x
,
y
,
n
);
compute_sigmoid
(
y
,
y
,
n
);
compute_scal
(
&
a
,
y
,
y
,
n
);
...
...
@@ -49,14 +49,14 @@ void VTanh(const T* x, T* y, int n) {
}
void
(
*
getActFunc
(
KernelType
type
,
int
d
))(
const
T
*
,
T
*
,
int
)
{
// NOLINT
if
(
type
==
vs
igmoid
)
{
return
Get
<
vs
igmoid
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
}
else
if
(
type
==
vr
elu
)
{
return
Get
<
vr
elu
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
}
else
if
(
type
==
vt
anh
)
{
return
Get
<
vt
anh
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
}
else
if
(
type
==
vi
dentity
)
{
return
Get
<
vi
dentity
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
if
(
type
==
kVS
igmoid
)
{
return
Get
<
kVS
igmoid
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
}
else
if
(
type
==
kVR
elu
)
{
return
Get
<
kVR
elu
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
}
else
if
(
type
==
kVT
anh
)
{
return
Get
<
kVT
anh
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
}
else
if
(
type
==
kVI
dentity
)
{
return
Get
<
kVI
dentity
,
XYNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
}
PADDLE_THROW
(
"Not support type: %s"
,
type
);
return
nullptr
;
...
...
@@ -72,9 +72,9 @@ void LSTMCtHt(lstm_t* step, const lstm_attr_t* attr) {
const
int
d
=
attr
->
d
;
const
int
d2
=
d
*
2
;
const
int
d3
=
d
*
3
;
auto
vmul_d
=
Get
<
vm
ul
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
auto
vadd_d
=
Get
<
va
dd
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
auto
vadd_d2
=
Get
<
va
dd
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d2
);
auto
vmul_d
=
Get
<
kVM
ul
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
auto
vadd_d
=
Get
<
kVA
dd
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
auto
vadd_d2
=
Get
<
kVA
dd
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d2
);
auto
act_gate_d
=
getActFunc
(
attr
->
act_gate
,
d
);
auto
act_gate_d2
=
getActFunc
(
attr
->
act_gate
,
d2
);
auto
act_gate_d3
=
getActFunc
(
attr
->
act_gate
,
d3
);
...
...
@@ -114,8 +114,8 @@ void LSTMC1H1(lstm_t* step, const lstm_attr_t* attr) {
int
d
=
attr
->
d
;
int
d2
=
d
*
2
;
int
d3
=
d
*
3
;
auto
vmul_d
=
Get
<
vm
ul
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
auto
vadd_d
=
Get
<
va
dd
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
auto
vmul_d
=
Get
<
kVM
ul
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
auto
vadd_d
=
Get
<
kVA
dd
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
auto
act_gate_d
=
getActFunc
(
attr
->
act_gate
,
d
);
auto
act_cand_d
=
getActFunc
(
attr
->
act_cand
,
d
);
auto
act_cell_d
=
getActFunc
(
attr
->
act_cell
,
d
);
...
...
@@ -143,7 +143,7 @@ void GRUH1(gru_t* step, const gru_attr_t* attr) {
int
d2
=
d
*
2
;
auto
act_gate
=
getActFunc
(
attr
->
act_gate
,
d
);
auto
act_cand
=
getActFunc
(
attr
->
act_cand
,
d
);
auto
vmul_d
=
Get
<
vm
ul
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
auto
vmul_d
=
Get
<
kVM
ul
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
d
);
act_gate
(
gates
,
gates
,
d
);
act_cand
(
gates
+
d2
,
gates
+
d2
,
d
);
vmul_d
(
gates
,
gates
+
d2
,
ht
,
d
);
...
...
@@ -156,7 +156,7 @@ void GRUHtPart1(gru_t* step, const gru_attr_t* attr) {
T
*
ht
=
reinterpret_cast
<
T
*>
(
step
->
ht
);
const
T
*
ht_1
=
reinterpret_cast
<
const
T
*>
(
step
->
ht_1
);
auto
act_gate
=
getActFunc
(
attr
->
act_gate
,
attr
->
d
);
auto
vmul_d
=
Get
<
vm
ul
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
attr
->
d
);
auto
vmul_d
=
Get
<
kVM
ul
,
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
attr
->
d
);
act_gate
(
gates
+
attr
->
d
,
gates
+
attr
->
d
,
attr
->
d
);
vmul_d
(
ht_1
,
gates
+
attr
->
d
,
ht
,
attr
->
d
);
}
...
...
@@ -205,12 +205,12 @@ namespace mix = paddle::operators::jit::more::mix;
#define REGISTER_MORE_KERNEL(key, func) \
REGISTER_JITKERNEL_MORE(key, mix, mix::func##Kernel)
REGISTER_MORE_KERNEL
(
vs
igmoid
,
VSigmoid
);
REGISTER_MORE_KERNEL
(
vt
anh
,
VTanh
);
REGISTER_MORE_KERNEL
(
lstmcth
t
,
LSTMCtHt
);
REGISTER_MORE_KERNEL
(
lstmc1h
1
,
LSTMC1H1
);
REGISTER_MORE_KERNEL
(
gruh
1
,
GRUH1
);
REGISTER_MORE_KERNEL
(
gruhtp
art1
,
GRUHtPart1
);
REGISTER_MORE_KERNEL
(
gruhtp
art2
,
GRUHtPart2
);
REGISTER_MORE_KERNEL
(
kVS
igmoid
,
VSigmoid
);
REGISTER_MORE_KERNEL
(
kVT
anh
,
VTanh
);
REGISTER_MORE_KERNEL
(
kLSTMCtH
t
,
LSTMCtHt
);
REGISTER_MORE_KERNEL
(
kLSTMC1H
1
,
LSTMC1H1
);
REGISTER_MORE_KERNEL
(
kGRUH
1
,
GRUH1
);
REGISTER_MORE_KERNEL
(
kGRUHtP
art1
,
GRUHtPart1
);
REGISTER_MORE_KERNEL
(
kGRUHtP
art2
,
GRUHtPart2
);
#undef REGISTER_MORE_KERNEL
paddle/fluid/operators/jit/more/mkl/CMakeLists.txt
浏览文件 @
1aaec571
...
...
@@ -3,9 +3,9 @@ cc_library(jit_kernel_mkl SRCS mkl.cc DEPS jit_kernel_base dynload_mklml)
set
(
JIT_KERNEL_DEPS
${
JIT_KERNEL_DEPS
}
dynload_mklml jit_kernel_mkl PARENT_SCOPE
)
# use mkl kernels by name and type
USE_JITKERNEL_MORE
(
vm
ul, mkl
)
USE_JITKERNEL_MORE
(
va
dd, mkl
)
USE_JITKERNEL_MORE
(
vs
cal, mkl
)
USE_JITKERNEL_MORE
(
ve
xp, mkl
)
USE_JITKERNEL_MORE
(
vs
igmoid, mkl
)
USE_JITKERNEL_MORE
(
vt
anh, mkl
)
USE_JITKERNEL_MORE
(
kVM
ul, mkl
)
USE_JITKERNEL_MORE
(
kVA
dd, mkl
)
USE_JITKERNEL_MORE
(
kVS
cal, mkl
)
USE_JITKERNEL_MORE
(
kVE
xp, mkl
)
USE_JITKERNEL_MORE
(
kVS
igmoid, mkl
)
USE_JITKERNEL_MORE
(
kVT
anh, mkl
)
paddle/fluid/operators/jit/more/mkl/mkl.cc
浏览文件 @
1aaec571
...
...
@@ -129,11 +129,11 @@ namespace mkl = paddle::operators::jit::more::mkl;
REGISTER_JITKERNEL_MORE(key, mkl, mkl::func##Kernel<float>, \
mkl::func##Kernel<double>)
REGISTER_MKL_KERNEL
(
vm
ul
,
VMul
);
REGISTER_MKL_KERNEL
(
va
dd
,
VAdd
);
REGISTER_MKL_KERNEL
(
vs
cal
,
VScal
);
REGISTER_MKL_KERNEL
(
ve
xp
,
VExp
);
REGISTER_MKL_KERNEL
(
vs
igmoid
,
VSigmoid
);
REGISTER_MKL_KERNEL
(
vt
anh
,
VTanh
);
REGISTER_MKL_KERNEL
(
kVM
ul
,
VMul
);
REGISTER_MKL_KERNEL
(
kVA
dd
,
VAdd
);
REGISTER_MKL_KERNEL
(
kVS
cal
,
VScal
);
REGISTER_MKL_KERNEL
(
kVE
xp
,
VExp
);
REGISTER_MKL_KERNEL
(
kVS
igmoid
,
VSigmoid
);
REGISTER_MKL_KERNEL
(
kVT
anh
,
VTanh
);
#undef REGISTER_MKL_KERNEL
paddle/fluid/operators/jit/refer/CMakeLists.txt
浏览文件 @
1aaec571
...
...
@@ -7,22 +7,22 @@ function(USE_JITKERNEL_REFER TARGET)
endfunction
()
# use refer kernel by name
USE_JITKERNEL_REFER
(
vm
ul
)
USE_JITKERNEL_REFER
(
va
dd
)
USE_JITKERNEL_REFER
(
vaddr
elu
)
USE_JITKERNEL_REFER
(
vs
ub
)
USE_JITKERNEL_REFER
(
vs
cal
)
USE_JITKERNEL_REFER
(
vaddb
ias
)
USE_JITKERNEL_REFER
(
vr
elu
)
USE_JITKERNEL_REFER
(
vi
dentity
)
USE_JITKERNEL_REFER
(
ve
xp
)
USE_JITKERNEL_REFER
(
vs
igmoid
)
USE_JITKERNEL_REFER
(
vt
anh
)
USE_JITKERNEL_REFER
(
lstmcth
t
)
USE_JITKERNEL_REFER
(
lstmc1h
1
)
USE_JITKERNEL_REFER
(
gruh
1
)
USE_JITKERNEL_REFER
(
gruhtp
art1
)
USE_JITKERNEL_REFER
(
gruhtp
art2
)
USE_JITKERNEL_REFER
(
crfd
ecoding
)
USE_JITKERNEL_REFER
(
layern
orm
)
USE_JITKERNEL_REFER
(
nchw16cmulnc
)
USE_JITKERNEL_REFER
(
kVM
ul
)
USE_JITKERNEL_REFER
(
kVA
dd
)
USE_JITKERNEL_REFER
(
kVAddR
elu
)
USE_JITKERNEL_REFER
(
kVS
ub
)
USE_JITKERNEL_REFER
(
kVS
cal
)
USE_JITKERNEL_REFER
(
kVAddB
ias
)
USE_JITKERNEL_REFER
(
kVR
elu
)
USE_JITKERNEL_REFER
(
kVI
dentity
)
USE_JITKERNEL_REFER
(
kVE
xp
)
USE_JITKERNEL_REFER
(
kVS
igmoid
)
USE_JITKERNEL_REFER
(
kVT
anh
)
USE_JITKERNEL_REFER
(
kLSTMCtH
t
)
USE_JITKERNEL_REFER
(
kLSTMC1H
1
)
USE_JITKERNEL_REFER
(
kGRUH
1
)
USE_JITKERNEL_REFER
(
kGRUHtP
art1
)
USE_JITKERNEL_REFER
(
kGRUHtP
art2
)
USE_JITKERNEL_REFER
(
kCRFD
ecoding
)
USE_JITKERNEL_REFER
(
kLayerN
orm
)
USE_JITKERNEL_REFER
(
kNCHW16CMulNC
)
paddle/fluid/operators/jit/refer/refer.cc
浏览文件 @
1aaec571
...
...
@@ -21,30 +21,30 @@ namespace refer = paddle::operators::jit::refer;
REGISTER_JITKERNEL_REFER(key, refer::func##Kernel<float>, \
refer::func##Kernel<double>)
REGISTER_REFER_KERNEL
(
vm
ul
,
VMul
);
REGISTER_REFER_KERNEL
(
va
dd
,
VAdd
);
REGISTER_REFER_KERNEL
(
vaddr
elu
,
VAddRelu
);
REGISTER_REFER_KERNEL
(
vs
ub
,
VSub
);
REGISTER_REFER_KERNEL
(
kVM
ul
,
VMul
);
REGISTER_REFER_KERNEL
(
kVA
dd
,
VAdd
);
REGISTER_REFER_KERNEL
(
kVAddR
elu
,
VAddRelu
);
REGISTER_REFER_KERNEL
(
kVS
ub
,
VSub
);
REGISTER_REFER_KERNEL
(
vs
cal
,
VScal
);
REGISTER_REFER_KERNEL
(
vaddb
ias
,
VAddBias
);
REGISTER_REFER_KERNEL
(
kVS
cal
,
VScal
);
REGISTER_REFER_KERNEL
(
kVAddB
ias
,
VAddBias
);
REGISTER_REFER_KERNEL
(
vr
elu
,
VRelu
);
REGISTER_REFER_KERNEL
(
vi
dentity
,
VIdentity
);
REGISTER_REFER_KERNEL
(
ve
xp
,
VExp
);
REGISTER_REFER_KERNEL
(
vs
igmoid
,
VSigmoid
);
REGISTER_REFER_KERNEL
(
vt
anh
,
VTanh
);
REGISTER_REFER_KERNEL
(
kVR
elu
,
VRelu
);
REGISTER_REFER_KERNEL
(
kVI
dentity
,
VIdentity
);
REGISTER_REFER_KERNEL
(
kVE
xp
,
VExp
);
REGISTER_REFER_KERNEL
(
kVS
igmoid
,
VSigmoid
);
REGISTER_REFER_KERNEL
(
kVT
anh
,
VTanh
);
REGISTER_REFER_KERNEL
(
lstmcth
t
,
LSTMCtHt
);
REGISTER_REFER_KERNEL
(
lstmc1h
1
,
LSTMC1H1
);
REGISTER_REFER_KERNEL
(
kLSTMCtH
t
,
LSTMCtHt
);
REGISTER_REFER_KERNEL
(
kLSTMC1H
1
,
LSTMC1H1
);
REGISTER_REFER_KERNEL
(
gruh
1
,
GRUH1
);
REGISTER_REFER_KERNEL
(
gruhtp
art1
,
GRUHtPart1
);
REGISTER_REFER_KERNEL
(
gruhtp
art2
,
GRUHtPart2
);
REGISTER_REFER_KERNEL
(
kGRUH
1
,
GRUH1
);
REGISTER_REFER_KERNEL
(
kGRUHtP
art1
,
GRUHtPart1
);
REGISTER_REFER_KERNEL
(
kGRUHtP
art2
,
GRUHtPart2
);
REGISTER_REFER_KERNEL
(
crfd
ecoding
,
CRFDecoding
);
REGISTER_REFER_KERNEL
(
layern
orm
,
LayerNorm
);
REGISTER_REFER_KERNEL
(
kCRFD
ecoding
,
CRFDecoding
);
REGISTER_REFER_KERNEL
(
kLayerN
orm
,
LayerNorm
);
REGISTER_REFER_KERNEL
(
nchw16cmulnc
,
NCHW16CMulNC
);
REGISTER_REFER_KERNEL
(
kNCHW16CMulNC
,
NCHW16CMulNC
);
#undef REGISTER_REFER_KERNEL
paddle/fluid/operators/jit/refer/refer.h
浏览文件 @
1aaec571
...
...
@@ -115,13 +115,13 @@ void VTanh(const T* x, T* y, int n) {
template
<
typename
T
>
void
(
*
getActFunc
(
KernelType
type
))(
const
T
*
,
T
*
,
int
)
{
// NOLINT
if
(
type
==
vs
igmoid
)
{
if
(
type
==
kVS
igmoid
)
{
return
VSigmoid
<
T
>
;
}
else
if
(
type
==
vr
elu
)
{
}
else
if
(
type
==
kVR
elu
)
{
return
VRelu
<
T
>
;
}
else
if
(
type
==
vt
anh
)
{
}
else
if
(
type
==
kVT
anh
)
{
return
VTanh
<
T
>
;
}
else
if
(
type
==
vi
dentity
)
{
}
else
if
(
type
==
kVI
dentity
)
{
return
VIdentity
<
T
>
;
}
PADDLE_THROW
(
"Not support type: %s"
,
type
);
...
...
paddle/fluid/operators/jit/test.cc
浏览文件 @
1aaec571
...
...
@@ -469,111 +469,111 @@ void TestNCHW16CMulNCKernel() {
}
// XYZNTuple
TEST
(
JITKernel
,
vm
ul
)
{
TEST
(
JITKernel
,
kVM
ul
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestXYZNKernel
<
jit
::
vm
ul
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
vm
ul
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
kVM
ul
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
kVM
ul
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
va
dd
)
{
TEST
(
JITKernel
,
kVA
dd
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestXYZNKernel
<
jit
::
va
dd
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
va
dd
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
kVA
dd
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
kVA
dd
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
vaddr
elu
)
{
TEST
(
JITKernel
,
kVAddR
elu
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestXYZNKernel
<
jit
::
vaddr
elu
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
vaddr
elu
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
kVAddR
elu
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
kVAddR
elu
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
vs
ub
)
{
TEST
(
JITKernel
,
kVS
ub
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestXYZNKernel
<
jit
::
vs
ub
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
vs
ub
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
kVS
ub
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYZNKernel
<
jit
::
kVS
ub
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
// AXYNTuples
TEST
(
JITKernel
,
vs
cal
)
{
TEST
(
JITKernel
,
kVS
cal
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestAXYNKernel
<
jit
::
vs
cal
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestAXYNKernel
<
jit
::
vs
cal
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestAXYNKernel
<
jit
::
kVS
cal
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestAXYNKernel
<
jit
::
kVS
cal
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
vaddb
ias
)
{
TEST
(
JITKernel
,
kVAddB
ias
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestAXYNKernel
<
jit
::
vaddb
ias
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestAXYNKernel
<
jit
::
vaddb
ias
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestAXYNKernel
<
jit
::
kVAddB
ias
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestAXYNKernel
<
jit
::
kVAddB
ias
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
// XYNTuples
TEST
(
JITKernel
,
vr
elu
)
{
TEST
(
JITKernel
,
kVR
elu
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestXYNKernel
<
jit
::
vr
elu
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
vr
elu
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
kVR
elu
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
kVR
elu
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
vi
dentity
)
{
TEST
(
JITKernel
,
kVI
dentity
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestXYNKernel
<
jit
::
vi
dentity
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
vi
dentity
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
kVI
dentity
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
kVI
dentity
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
ve
xp
)
{
TEST
(
JITKernel
,
kVE
xp
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestXYNKernel
<
jit
::
ve
xp
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
ve
xp
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
kVE
xp
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
kVE
xp
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
vs
igmoid
)
{
TEST
(
JITKernel
,
kVS
igmoid
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestXYNKernel
<
jit
::
vs
igmoid
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
vs
igmoid
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
kVS
igmoid
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
kVS
igmoid
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
vt
anh
)
{
TEST
(
JITKernel
,
kVT
anh
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestXYNKernel
<
jit
::
vt
anh
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
vt
anh
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
kVT
anh
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestXYNKernel
<
jit
::
kVT
anh
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
// LSTM
TEST
(
JITKernel
,
lstmcth
t
)
{
TEST
(
JITKernel
,
kLSTMCtH
t
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestLSTMKernel
<
jit
::
lstmcth
t
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestLSTMKernel
<
jit
::
lstmcth
t
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestLSTMKernel
<
jit
::
kLSTMCtH
t
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestLSTMKernel
<
jit
::
kLSTMCtH
t
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
lstmc1h
1
)
{
TEST
(
JITKernel
,
kLSTMC1H
1
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestLSTMKernel
<
jit
::
lstmc1h
1
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestLSTMKernel
<
jit
::
lstmc1h
1
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestLSTMKernel
<
jit
::
kLSTMC1H
1
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestLSTMKernel
<
jit
::
kLSTMC1H
1
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
// GRU
TEST
(
JITKernel
,
gruh
1
)
{
TEST
(
JITKernel
,
kGRUH
1
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestGRUKernel
<
jit
::
gruh
1
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestGRUKernel
<
jit
::
gruh
1
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestGRUKernel
<
jit
::
kGRUH
1
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestGRUKernel
<
jit
::
kGRUH
1
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
gruhtp
art1
)
{
TEST
(
JITKernel
,
kGRUHtP
art1
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestGRUKernel
<
jit
::
gruhtp
art1
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestGRUKernel
<
jit
::
gruhtp
art1
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestGRUKernel
<
jit
::
kGRUHtP
art1
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestGRUKernel
<
jit
::
kGRUHtP
art1
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
gruhtp
art2
)
{
TEST
(
JITKernel
,
kGRUHtP
art2
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestGRUKernel
<
jit
::
gruhtp
art2
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestGRUKernel
<
jit
::
gruhtp
art2
,
double
,
paddle
::
platform
::
CPUPlace
>
();
TestGRUKernel
<
jit
::
kGRUHtP
art2
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestGRUKernel
<
jit
::
kGRUHtP
art2
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
TEST
(
JITKernel
,
nchw16cmulnc
)
{
TEST
(
JITKernel
,
kNCHW16CMulNC
)
{
namespace
jit
=
paddle
::
operators
::
jit
;
TestNCHW16CMulNCKernel
<
jit
::
nchw16cmulnc
,
float
,
TestNCHW16CMulNCKernel
<
jit
::
kNCHW16CMulNC
,
float
,
paddle
::
platform
::
CPUPlace
>
();
TestNCHW16CMulNCKernel
<
jit
::
nchw16cmulnc
,
double
,
TestNCHW16CMulNCKernel
<
jit
::
kNCHW16CMulNC
,
double
,
paddle
::
platform
::
CPUPlace
>
();
}
...
...
paddle/fluid/operators/layer_norm_op.h
浏览文件 @
1aaec571
...
...
@@ -230,7 +230,7 @@ class LayerNormKernel : public framework::OpKernel<T> {
PADDLE_ENFORCE_EQ
(
bias
->
numel
(),
right
);
auto
ker
=
jit
::
Get
<
jit
::
layern
orm
,
jit
::
LayerNormTuples
<
T
>
,
platform
::
CPUPlace
>
(
jit
::
Get
<
jit
::
kLayerN
orm
,
jit
::
LayerNormTuples
<
T
>
,
platform
::
CPUPlace
>
(
right
);
ker
(
x
.
data
<
T
>
(),
out
.
data
<
T
>
(),
mean
->
data
<
T
>
(),
var
->
data
<
T
>
(),
scale
->
data
<
T
>
(),
bias
->
data
<
T
>
(),
static_cast
<
int
>
(
left
),
...
...
paddle/fluid/operators/math/fc_compute.h
浏览文件 @
1aaec571
...
...
@@ -31,14 +31,14 @@ inline void FCCompute(const BlasT<DeviceContext, T>& blas, const int M,
}
if
(
relu
)
{
auto
compute
=
jit
::
Get
<
jit
::
vaddr
elu
,
jit
::
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
N
);
jit
::
Get
<
jit
::
kVAddR
elu
,
jit
::
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
N
);
for
(
int
i
=
0
;
i
<
M
;
i
++
)
{
T
*
dst
=
Y
+
i
*
N
;
compute
(
B
,
dst
,
dst
,
N
);
}
}
else
{
auto
compute
=
jit
::
Get
<
jit
::
va
dd
,
jit
::
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
N
);
jit
::
Get
<
jit
::
kVA
dd
,
jit
::
XYZNTuples
<
T
>
,
platform
::
CPUPlace
>
(
N
);
#ifdef PADDLE_WITH_MKLML
#pragma omp parallel for
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录