// // ConvCutlassExecution.hpp // MNN // // Created by MNN on 2020/08/22. // Copyright © 2018, Alibaba Group Holding Limited // #ifndef ConvCutlassExecution_hpp #define ConvCutlassExecution_hpp #include "backend/cuda/core/CUDABackend.hpp" #include "core/Execution.hpp" #include "CutlassGemmParam.hpp" #include "MNNCUDADefine.hpp" #include "MNNCUDAFunction.cuh" #include "cutlass_common/CutlassConvCommonExecution.hpp" namespace MNN { namespace CUDA { class ConvCutlassExecution : public CutlassConvCommonExecution { public: struct Resource { Resource(Backend* bn, const MNN::Op* op); ~ Resource(); void* mFilter; void* mBias; std::shared_ptr weightTensor; std::shared_ptr biasTensor; Backend* mBackend = nullptr; }; ConvCutlassExecution(Backend* backend, const MNN::Op* op, std::shared_ptr res); virtual ~ConvCutlassExecution(); virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; private: std::shared_ptr mResource; }; } // namespace CUDA } // namespace MNN #endif /* ConvCutlassExecution */