Skip to content

Commit b5df0e0

Browse files
committed
pp
1 parent ac4d389 commit b5df0e0

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

src/layer/arm/gemm_arm.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4357,6 +4357,8 @@ int Gemm_arm::create_pipeline(const Option& opt)
43574357
{
43584358
int C_elempack = constantM % 4 == 0 ? 4 : 1;
43594359
convert_packing(C_data, CT_data, C_elempack, opt);
4360+
if (CT_data.empty())
4361+
return -100;
43604362
}
43614363
#endif // __ARM_NEON
43624364

@@ -4365,6 +4367,8 @@ int Gemm_arm::create_pipeline(const Option& opt)
43654367
{
43664368
Mat C2;
43674369
C2.create_like(CT_data);
4370+
if (C2.empty())
4371+
return -100;
43684372

43694373
const int size = CT_data.total() * CT_data.elempack;
43704374
for (int i = 0; i < size; i++)
@@ -5079,6 +5083,8 @@ int Gemm_arm::create_pipeline_bf16s(const Option& opt)
50795083
{
50805084
int C_elempack = constantM % 4 == 0 ? 4 : 1;
50815085
convert_packing(C_data, CT_data, C_elempack, opt);
5086+
if (CT_data.empty())
5087+
return -100;
50825088
}
50835089
#endif // __ARM_NEON
50845090

@@ -5087,6 +5093,8 @@ int Gemm_arm::create_pipeline_bf16s(const Option& opt)
50875093
{
50885094
Mat C2;
50895095
C2.create_like(CT_data);
5096+
if (C2.empty())
5097+
return -100;
50905098

50915099
const int size = CT_data.total() * CT_data.elempack;
50925100
for (int i = 0; i < size; i++)
@@ -5210,6 +5218,8 @@ int Gemm_arm::forward_bf16s(const std::vector<Mat>& bottom_blobs, std::vector<Ma
52105218
{
52115219
Mat CT_data;
52125220
CT_data.create_like(C, opt.workspace_allocator);
5221+
if (CT_data.empty())
5222+
return -100;
52135223

52145224
const int size = C.total() * C.elempack;
52155225
for (int i = 0; i < size; i++)

src/layer/arm/gemm_arm_asimdhp.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2801,13 +2801,17 @@ int Gemm_arm::create_pipeline_fp16sa(const Option& opt)
28012801
if (constantC && constant_broadcast_type_C != -1)
28022802
{
28032803
cast_float32_to_float16(C_data, CT_data, opt);
2804+
if (CT_data.empty())
2805+
return -100;
28042806

28052807
if (constant_broadcast_type_C == 3 && opt.use_packing_layout)
28062808
{
28072809
int C_elempack = constantM % 8 == 0 ? 8 : constantM % 4 == 0 ? 4 : 1;
28082810
Mat tmp;
28092811
convert_packing(CT_data, tmp, C_elempack, opt);
28102812
CT_data = tmp;
2813+
if (CT_data.empty())
2814+
return -100;
28112815
}
28122816

28132817
// pre-multiply C with beta

src/layer/arm/gemm_arm_vfpv4.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,8 @@ int Gemm_arm::create_pipeline_fp16s(const Option& opt)
498498
{
499499
int C_elempack = constantM % 4 == 0 ? 4 : 1;
500500
convert_packing(C_data, CT_data, C_elempack, opt);
501+
if (CT_data.empty())
502+
return -100;
501503
}
502504
#endif // __ARM_NEON
503505

@@ -506,6 +508,8 @@ int Gemm_arm::create_pipeline_fp16s(const Option& opt)
506508
{
507509
Mat C2;
508510
C2.create_like(CT_data);
511+
if (C2.empty())
512+
return -100;
509513

510514
const int size = CT_data.total() * CT_data.elempack;
511515
for (int i = 0; i < size; i++)
@@ -622,13 +626,17 @@ int Gemm_arm::forward_fp16s(const std::vector<Mat>& bottom_blobs, std::vector<Ma
622626
Mat CT_data;
623627
cast_float16_to_float32(C, CT_data);
624628
C = CT_data;
629+
if (C.empty())
630+
return -100;
625631
}
626632

627633
// pre-multiply C with beta
628634
if (beta != 1.f)
629635
{
630636
Mat CT_data;
631637
CT_data.create_like(C, opt.workspace_allocator);
638+
if (CT_data.empty())
639+
return -100;
632640

633641
const int size = C.total() * C.elempack;
634642
for (int i = 0; i < size; i++)

src/layer/x86/gemm_x86.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7500,6 +7500,8 @@ int Gemm_x86::create_pipeline(const Option& opt)
75007500
int C_elempack = constantM % 4 == 0 ? 4 : 1;
75017501
#endif
75027502
convert_packing(C_data, CT_data, C_elempack, opt);
7503+
if (CT_data.empty())
7504+
return -100;
75037505
}
75047506
#endif // __SSE2__
75057507

@@ -7508,6 +7510,8 @@ int Gemm_x86::create_pipeline(const Option& opt)
75087510
{
75097511
Mat C2;
75107512
C2.create_like(CT_data);
7513+
if (C2.empty())
7514+
return -100;
75117515

75127516
const int size = CT_data.total() * CT_data.elempack;
75137517
for (int i = 0; i < size; i++)

0 commit comments

Comments
 (0)