// // MetalDeconvolution.hpp // MNN // // Created by MNN on 2019/01/30. // Copyright © 2018, Alibaba Group Holding Limited // #ifndef MetalDeconvolution_hpp #define MetalDeconvolution_hpp #import "MetalExecution.hpp" #include "MNN_generated.h" #if MNN_METAL_ENABLED namespace MNN { class MetalDeconvolution : public MetalExecution { public: MetalDeconvolution(Backend *backend, const MNN::Op *op); virtual ~MetalDeconvolution() = default; virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; virtual void onEncode(const std::vector &inputs, const std::vector &outputs, id encoder) override; private: bool mDepthwise = false; int mGroup = 0; PadMode mPadMode = PadMode_CAFFE; const MNN::Op *mOp = nullptr; std::shared_ptr mWeight; std::shared_ptr mBias; id mConstBuffer = nil; id mPipeline; std::pair mThreads; }; } // namespace MNN #endif /* MNN_METAL_ENABLED */ #endif /* MetalDeconvolution_hpp */