// // ConvolutionInt8Executor.hpp // MNN // // Created by MNN on 2018/07/16. // Copyright © 2018, Alibaba Group Holding Limited // #ifndef ConvolutionInt8Executor_hpp #define ConvolutionInt8Executor_hpp #include #include "core/AutoStorage.h" #include "backend/cpu/compute/ConvolutionFloatFactory.h" #include "backend/cpu/compute/ConvolutionIntFactory.hpp" #include "backend/cpu/CPUConvolution.hpp" namespace MNN { class IdstConvolutionInt8 : public CPUConvolution { public: IdstConvolutionInt8(const Convolution2DCommon *convOp, Backend *b, const ConvolutionCommon::Int8Common *common, const float *bias, size_t biasSize); virtual ~IdstConvolutionInt8(); virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; private: std::shared_ptr mWeight; AutoStorage mAlpha; AutoStorage mBias; const IDSTQuan *mQuan; Tensor mSrcCopyBuffer; Tensor mTempBuffer; ConvolutionCommon::Im2ColParameter mIm2ColParamter; int mSrcCount; float mAMin; float mAMax; float mQuanScale; std::vector mPostParameters; // mFakeBias used by GemmKernel std::shared_ptr mFakeBias; MemChunk mBlitInfo; std::pair mBlitInfoStride; }; } // namespace MNN #endif /* ConvolutionInt8Executor_hpp */