Skip to content

Commit

Permalink
Prevent UB in all ASM & OCL kernels that do not anticipate asymmetric…
Browse files Browse the repository at this point in the history
… padding (#341)

* fix-asymmetric-padding(01) Disable in Solvers the support odd filters.

* fix-asymmetric-padding(02) Disable in the rest of old Solvers.
  • Loading branch information
atamazov authored Jul 15, 2020
1 parent d1933c3 commit f27fb85
Show file tree
Hide file tree
Showing 15 changed files with 30 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/solver/conv_asm_1x1u.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,8 @@ bool ConvAsm1x1U::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!params.rmv.IsV2orV3())
return false;
if(!(params.IsFp32() || params.IsFp16()))
Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_asm_1x1u_stride2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,8 @@ bool ConvAsm1x1UV2::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!params.rmv.IsV2orV3())
return false;
if(!params.IsFp32())
Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_asm_3x3u.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,8 @@ bool ConvAsm3x3U::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!params.rmv.IsV2orV3())
return false;
const std::string name = params.GetStream().GetDeviceName();
Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_asm_5x10u2v2b1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ bool ConvAsm5x10u2v2b1::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!params.rmv.IsV2orV3())
return false;

Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_asm_5x10u2v2f1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ bool ConvAsm5x10u2v2f1::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!params.rmv.IsV2orV3())
return false;

Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_asm_7x7c3h224w224k64u2v2p3q3f1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ bool ConvAsm7x7c3h224w224k64u2v2p3q3f1::IsApplicable(const ConvolutionContext& p
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!params.rmv.IsV2orV3())
return false;

Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_asm_dir_BwdWrW1x1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,8 @@ bool ConvAsmBwdWrW1x1::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!params.rmv.IsV2orV3())
return false;

Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_asm_dir_BwdWrW3x3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,8 @@ bool ConvAsmBwdWrW3x3::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!params.rmv.IsV2orV3())
return false;
const std::string name = params.GetStream().GetDeviceName();
Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_ocl_dir2D11x11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ bool ConvOclDirectFwd11x11::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!(params.IsFp32() || params.IsFp16() || params.IsBfp16()))
return false;

Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_ocl_dir2D3x3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ bool ConvOclDirectFwd3x3::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!(params.IsFp32() || params.IsFp16() || params.IsBfp16()))
return false;

Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_ocl_dir2D_bwdWrW_1x1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ bool ConvOclBwdWrW1x1::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!(params.IsFp32() || params.IsFp16() || params.IsBfp16()))
return false;

Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_ocl_dir2D_bwdWrW_53.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ bool ConvOclBwdWrW53::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!(params.IsFp32() || params.IsFp16() || params.IsBfp16()))
return false;

Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_ocl_dir2Dfwd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ bool ConvOclDirectFwd::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!(params.IsFp32() || params.IsFp16() || params.IsBfp16()))
return false;

Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_ocl_dir2Dfwd1x1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ bool ConvOclDirectFwd1x1::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!(params.IsFp32() || params.IsFp16() || params.IsBfp16()))
return false;

Expand Down
2 changes: 2 additions & 0 deletions src/solver/conv_ocl_dir2Dfwdgen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ bool ConvOclDirectFwdGen::IsApplicable(const ConvolutionContext& params) const
return false;
if(!params.Is2d())
return false;
if(params.IsAsymmetricPadH() || params.IsAsymmetricPadW())
return false;
if(!(params.IsFp32() || params.IsFp16() || params.IsBfp16()))
return false;

Expand Down

0 comments on commit f27fb85

Please sign in to comment.