// // CPURaster.hpp // MNN // // Created by MNN on b'2020/04/02'. // Copyright © 2018, Alibaba Group Holding Limited // #ifndef CPURaster_hpp #define CPURaster_hpp #include "CPUBackend.hpp" #include #include #include "core/TensorUtils.hpp" #include "core/OpCommonUtils.hpp" namespace MNN { class CPURaster : public Execution { public: CPURaster(Backend* bn) : Execution(bn) { // Do nothing } virtual ~ CPURaster() { // 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); void tensorConvert(Tensor* input, Tensor* output, int bytes); private: std::map mTempInput; std::vector> mTempInputCopy; std::vector> mFastBlit; std::shared_ptr mTempOutput; bool mNeedZero = false; bool mFast = false; OpCommonUtils::TensorConvertParameter mSingleConvert; std::vector> mCacheRegions; int32_t mZeroPoint = 0; bool mHasReduce = false; bool mUseThreads = false; std::vector, int>> mTasks; }; } #endif