// // VulkanDeconvolution.hpp // MNN // // Created by MNN on 2019/01/31. // Copyright © 2018, Alibaba Group Holding Limited // #ifndef VulkanDeconvolution_hpp #define VulkanDeconvolution_hpp #include "VulkanBasicExecution.hpp" #include "VulkanConvolution.hpp" #include "VulkanMatMul.hpp" namespace MNN { class VulkanDeconvolution : public VulkanBasicExecution { public: virtual ~VulkanDeconvolution() { } VulkanDeconvolution(Backend* bn, const std::vector& inputs, const Op* op); virtual ErrorCode onEncode(const std::vector& inputs, const std::vector& outputs, const VulkanCommandPool::Buffer* cmdBuffer) override; static void writeConvolutionConst(VulkanConvolutionCommon::ConvolutionParameter* parameter, const Convolution2DCommon* common, const Tensor* src, const Tensor* dst); private: std::shared_ptr mMultiler; std::shared_ptr mBias; std::shared_ptr mBiasCopy; std::shared_ptr mKernel; std::shared_ptr mReorder; std::shared_ptr mMidBuffer; const VulkanPipeline* mIm2Col; std::shared_ptr mIm2ColSet; const VulkanPipeline* mCol2Im; std::shared_ptr mCol2ImSet; const VulkanSampler* mSampler; const Convolution2DCommon* mConvCommonOption; std::shared_ptr mConvParam; }; } // namespace MNN #endif /* VulkanDeconvolution_hpp */