Browse Source

fix(dnn/fallback): disable im2col/conv1x1/conv1x1_gemv Quantized8Asymm in x86

GitOrigin-RevId: b094634254
tags/v1.0.0-rc1
Megvii Engine Team Xinran Xu 4 years ago
parent
commit
6aade1336d
3 changed files with 23 additions and 13 deletions
  1. +7
    -13
      dnn/src/fallback/conv_bias/conv1x1/algos.cpp
  2. +8
    -0
      dnn/src/fallback/conv_bias/conv1x1/algos_conv1x1_gemv.cpp
  3. +8
    -0
      dnn/src/fallback/conv_bias/im2col/algos.cpp

+ 7
- 13
dnn/src/fallback/conv_bias/conv1x1/algos.cpp View File

@@ -204,18 +204,6 @@ ConvBiasImpl::AlgoConv1x1::dispatch_preprocess_kerns(
bool ConvBiasImpl::AlgoConv1x1::usable(const NCBKernSizeParam& param, bool ConvBiasImpl::AlgoConv1x1::usable(const NCBKernSizeParam& param,
AlgoSelectionStrategy) const { AlgoSelectionStrategy) const {
MIDOUT_BEGIN(megdnn_fallback_conv1x1, 0, 2) { MIDOUT_BEGIN(megdnn_fallback_conv1x1, 0, 2) {
//! x86 only support nchw
#if MEGDNN_X86
if (param.filter_meta.format != param::ConvBias::Format::NCHW) {
return false;
}
#else
if (param.filter_meta.format != param::ConvBias::Format::NCHW &&
param.filter_meta.format != param::ConvBias::Format::NCHW44 &&
param.filter_meta.format != param::ConvBias::Format::NCHW44_DOT) {
return false;
}
#endif
size_t FH = param.filter_meta.spatial[0], size_t FH = param.filter_meta.spatial[0],
FW = param.filter_meta.spatial[1]; FW = param.filter_meta.spatial[1];
size_t PH = param.filter_meta.padding[0], size_t PH = param.filter_meta.padding[0],
@@ -239,7 +227,7 @@ bool ConvBiasImpl::AlgoConv1x1::usable(const NCBKernSizeParam& param,
return false; return false;
} }
} }
#else
#else //! x86 only support nchw mode
if (format != param::ConvBias::Format::NCHW) { if (format != param::ConvBias::Format::NCHW) {
return false; return false;
} }
@@ -259,6 +247,12 @@ bool ConvBiasImpl::AlgoConv1x1::usable(const NCBKernSizeParam& param,
param.src_type.enumv() != DTypeEnum::Float32)) { param.src_type.enumv() != DTypeEnum::Float32)) {
return false; return false;
} }
//! x86 disable Quntized8Asymm
#if MEGDNN_X86
if (param.src_type.enumv() == DTypeEnum::Quantized8Asymm) {
return false;
}
#endif
//! make sure 8x8x16 and 8x8x32 biasmode is nobias and nonlineMode //! make sure 8x8x16 and 8x8x32 biasmode is nobias and nonlineMode
//! is identity otherwise return false mean that 8x8x32 and 8x8x16 //! is identity otherwise return false mean that 8x8x32 and 8x8x16
//! not support PostProcess //! not support PostProcess


+ 8
- 0
dnn/src/fallback/conv_bias/conv1x1/algos_conv1x1_gemv.cpp View File

@@ -455,6 +455,14 @@ bool ConvBiasImpl::AlgoConv1x1Gemv::usable(const NCBKernSizeParam& param,
param.src_type.enumv() != DTypeEnum::Float32)) { param.src_type.enumv() != DTypeEnum::Float32)) {
return false; return false;
} }

//! x86 disable Quntized8Asymm
#if MEGDNN_X86
if (param.src_type.enumv() == DTypeEnum::Quantized8Asymm) {
return false;
}
#endif

if (format == param::ConvBias::Format::NCHW44) { if (format == param::ConvBias::Format::NCHW44) {
if (param.src_type.enumv() != DTypeEnum::Float32 && if (param.src_type.enumv() != DTypeEnum::Float32 &&
param.src_type.enumv() != DTypeEnum::Int8 && param.src_type.enumv() != DTypeEnum::Int8 &&


+ 8
- 0
dnn/src/fallback/conv_bias/im2col/algos.cpp View File

@@ -377,6 +377,14 @@ bool ConvBiasImpl::AlgoIm2col::usable(
param.src_type.enumv() != DTypeEnum::Float32)) { param.src_type.enumv() != DTypeEnum::Float32)) {
return false; return false;
} }

//! x86 disable Quntized8Asymm
#if MEGDNN_X86
if (param.src_type.enumv() == DTypeEnum::Quantized8Asymm) {
return false;
}
#endif

//! make sure 8x8x16 and 8x8x32 biasmode is nobias and nonlineMode is //! make sure 8x8x16 and 8x8x32 biasmode is nobias and nonlineMode is
//! identity otherwise return false mean that 8x8x32 and 8x8x16 not //! identity otherwise return false mean that 8x8x32 and 8x8x16 not
//! support PostProcess //! support PostProcess


Loading…
Cancel
Save