// // VulkanReduce.hpp // MNN // // Created by MNN on 2020/03/09. // Copyright © 2018, Alibaba Group Holding Limited // #ifndef VulkanReduce_hpp #define VulkanReduce_hpp #include "VulkanBasicExecution.hpp" #include "VulkanImageConverter.hpp" namespace MNN { class VulkanReduce : public VulkanBasicExecution { public: VulkanReduce(const std::string& name, const Op* op, Backend* bn); virtual ~VulkanReduce(); virtual ErrorCode onEncode(const std::vector& inputs, const std::vector& outputs, const VulkanCommandPool::Buffer* cmdBuffer) override; void encodeBuffer(const std::vector& inputs, const std::vector& outputs, const VulkanCommandPool::Buffer* cmdBuffer); private: std::shared_ptr mDescriptorSet; std::shared_ptr mConstBuffer; const VulkanPipeline* mPipeline; const Op* mOp; struct ConvertInfo { const VulkanPipeline* pipeline; std::shared_ptr convert; std::shared_ptr buffer; }; ConvertInfo mSource; ConvertInfo mOutput; }; } #endif