Browse Source

!12588 [MSLITE][Develop] optimize cpu arm64 fp32 lstm

From: @yangruoqi713
Reviewed-by: @zhang_xue_tong,@hangangqiang
Signed-off-by: @zhang_xue_tong
tags/v1.2.0-rc1
mindspore-ci-bot Gitee 4 years ago
parent
commit
885177769a
2 changed files with 45 additions and 10 deletions
  1. +44
    -8
      mindspore/lite/nnacl/assembly/arm64/MatVecMulFp32.S
  2. +1
    -2
      mindspore/lite/nnacl/fp32/lstm_fp32.c

+ 44
- 8
mindspore/lite/nnacl/assembly/arm64/MatVecMulFp32.S View File

@@ -46,42 +46,78 @@ Loop1x4:
Depth8_1x4:
cmp w9, #8
blt Depth4_1x4
sub w9, w9, #8
ld1 {v0.4s, v1.4s}, [x15], #32
ld1 {v2.4s, v3.4s}, [x7], #32
ld1 {v4.4s, v5.4s}, [x10], #32
cmp w9, #8
blt Depth8_1x4_Loop_End

Depth8_1x4_Loop:
fmla v10.4s, v0.4s, v2.4s
fmla v10.4s, v1.4s, v3.4s
ld1 {v6.4s, v7.4s}, [x11], #32
fmla v11.4s, v0.4s, v4.4s
fmla v11.4s, v1.4s, v5.4s
ld1 {v6.4s, v7.4s}, [x11], #32
ld1 {v8.4s, v9.4s}, [x12], #32
fmla v12.4s, v0.4s, v6.4s
fmla v12.4s, v1.4s, v7.4s
ld1 {v2.4s, v3.4s}, [x7], #32
fmla v13.4s, v0.4s, v8.4s
fmla v13.4s, v1.4s, v9.4s
ld1 {v0.4s, v1.4s}, [x15], #32
ld1 {v4.4s, v5.4s}, [x10], #32
sub w9, w9, #8
cbz w9, End1x4
b Depth8_1x4
cmp w9, #8
bge Depth8_1x4_Loop

Depth8_1x4_Loop_End:
fmla v10.4s, v0.4s, v2.4s
fmla v10.4s, v1.4s, v3.4s
ld1 {v6.4s, v7.4s}, [x11], #32
fmla v11.4s, v0.4s, v4.4s
fmla v11.4s, v1.4s, v5.4s
ld1 {v8.4s, v9.4s}, [x12], #32
fmla v12.4s, v0.4s, v6.4s
fmla v12.4s, v1.4s, v7.4s
fmla v13.4s, v0.4s, v8.4s
fmla v13.4s, v1.4s, v9.4s

Depth4_1x4:
cmp w9, #4
blt Depth1_1x4

sub w9, w9, #4
ld1 {v0.4s}, [x15], #16
ld1 {v1.4s}, [x7], #16
ld1 {v2.4s}, [x10], #16
cmp w9, #4
blt Depth4_1x4_Loop_End

Depth4_1x4_Loop:
fmla v10.4s, v1.4s, v0.4s
ld1 {v3.4s}, [x11], #16
fmla v11.4s, v2.4s, v0.4s
ld1 {v4.4s}, [x12], #16
fmla v12.4s, v3.4s, v0.4s
ld1 {v1.4s}, [x7], #16
fmla v13.4s, v4.4s, v0.4s
ld1 {v0.4s}, [x15], #16
ld1 {v2.4s}, [x10], #16
sub w9, w9, #4
cmp w9, #4
bge Depth4_1x4_Loop

Depth4_1x4_Loop_End:
fmla v10.4s, v1.4s, v0.4s
ld1 {v3.4s}, [x11], #16
fmla v11.4s, v2.4s, v0.4s
ld1 {v4.4s}, [x12], #16
fmla v12.4s, v3.4s, v0.4s
fmla v13.4s, v4.4s, v0.4s
sub w9, w9, #4
cbz w9, End1x4
b Depth8_1x4

Depth1_1x4:
cmp w9, #0
beq End1x4
ld1 {v0.s}[0], [x15], #4
ld1 {v1.s}[0], [x7], #4
ld1 {v1.s}[1], [x10], #4


+ 1
- 2
mindspore/lite/nnacl/fp32/lstm_fp32.c View File

@@ -78,8 +78,7 @@ void MatMulAcc(float *output, const float *input, const float *weight, int rows,

void LstmMatMul(float *c, const float *a, const float *b, const float *bias, int row, int deep, int col, bool is_vec) {
if (is_vec) {
memcpy(c, bias, col * sizeof(float));
MatMulAcc(c, a, b, row, col, deep);
MatVecMulFp32(a, b, c, bias, ActType_No, deep, col);
} else {
MatMulOpt(a, b, c, bias, ActType_No, deep, row, col, col, OutType_Nhwc);
}


Loading…
Cancel
Save