mirror of https://github.com/alibaba/MNN.git
66 lines
1.8 KiB
C++
66 lines
1.8 KiB
C++
//
|
|
// ConvolutionWinogradImpl.cpp
|
|
// MNN
|
|
//
|
|
// Created by MNN on 2022/01/20.
|
|
// Copyright © 2018 - 2022, Alibaba Group Holding Limited
|
|
//
|
|
|
|
#include "backend/cpu/compute/ConvolutionWinogradImpl.hpp"
|
|
#include <math.h>
|
|
#include "backend/cpu/compute/CommonOptFunction.h"
|
|
#include "core/Concurrency.h"
|
|
#include "backend/cpu/compute/ConvOpt.h"
|
|
#include "core/Macro.h"
|
|
#include "core/TensorUtils.hpp"
|
|
#include "math/WingoradGenerater.hpp"
|
|
#include <MNN/AutoTime.hpp>
|
|
#include "common/MemoryFormater.h"
|
|
|
|
|
|
//#define MNN_WINOGRAD_PRINT_REDUCE_RATE
|
|
//#define MNN_WINO_TRANFORM_TEST_CLOSE
|
|
namespace MNN {
|
|
ConvolutionWinogradImpl::ConvolutionWinogradImpl(const Convolution2DCommon *convOp, Backend *b)
|
|
: MNN::CPUConvolution(convOp, b) {
|
|
|
|
}
|
|
|
|
ConvolutionWinogradImpl::~ConvolutionWinogradImpl() {
|
|
|
|
}
|
|
|
|
|
|
WinogradConfig ConvolutionWinogradImpl::bestWinogradUnit(const Convolution2DCommon *common, const Tensor *inputTensor,
|
|
const Tensor *outputTensor, int threadNumber, Backend* b, const PerfConfig& denseConfig) {
|
|
return WinogradConfig();
|
|
}
|
|
|
|
bool ConvolutionWinogradImpl::canUseWinograd(const Convolution2DCommon *common) {
|
|
if (common->kernelY() != common->kernelX() || common->kernelY() <= 1) {
|
|
return false;
|
|
}
|
|
if (common->dilateX() != 1 || common->dilateY() != 1) {
|
|
return false;
|
|
}
|
|
if (common->strideX() != 1 || common->strideY() != 1) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
ErrorCode ConvolutionWinogradImpl::onExecute(const std::vector<Tensor *> &inputs, const std::vector<Tensor *> &outputs) {
|
|
return NO_ERROR;
|
|
}
|
|
|
|
ErrorCode ConvolutionWinogradImpl::onResize(const std::vector<Tensor *> &inputs, const std::vector<Tensor *> &outputs) {
|
|
return NO_ERROR;
|
|
}
|
|
|
|
bool ConvolutionWinogradImpl::onClone(Backend* bn, const Op* op, Execution** dst) {
|
|
return false;
|
|
}
|
|
|
|
|
|
} // namespace MNN
|