// // RasterExecution.hpp // MNN // // Created by MNN on b'2020/04/02'. // Copyright © 2018, Alibaba Group Holding Limited // #ifndef RasterExecution_hpp #define RasterExecution_hpp #include "backend/cuda/core/CUDABackend.hpp" #include #include #include "core/TensorUtils.hpp" #include "core/OpCommonUtils.hpp" namespace MNN { namespace CUDA { class RasterExecution : public Execution { public: RasterExecution(Backend* bn) : Execution(bn) { // Do nothing } virtual ~ RasterExecution() { // Do nothing } virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; void executeFaster(const std::vector &inputs, const std::vector &outputs) const; private: std::map mTempInput; std::vector> mTempInputCopy; std::vector> mFastBlit; std::shared_ptr mTempOutput; Tensor* mOutputPtr; bool mNeedZero = false; bool mFast = false; OpCommonUtils::TensorConvertParameter mSingleConvert; int32_t mZeroPoint = 0; // First: type, 0: not , 1: unit, 4:unitc4 // Second: count std::pair mFuseRaster; void *mOffset; std::shared_ptr mOffsetTensor; std::shared_ptr mTempInputTensor; }; } } #endif