提交 742a6153 编写于 作者: W wangliu

simplify the interfaces in operatorBase & dynamic release variable menmory

上级 333ff13f
......@@ -32,9 +32,6 @@ OperatorBase<Dtype>::OperatorBase(const std::string &type,
scope_(scope) {
CheckAllInputOutputSet();
}
template <typename Dtype> void OperatorBase<Dtype>::Run() { RunImpl(); }
template <typename Dtype>
void OperatorBase<Dtype>::CheckAllInputOutputSet() const {}
......
......@@ -41,11 +41,18 @@ public:
const VariableNameMap &outputs, const AttributeMap &attrs,
std::shared_ptr<Scope> scope);
virtual ~OperatorBase() {}
virtual void Run();
virtual void Run() const = 0;
const VariableNameMap &Inputs() const { return inputs_; }
const VariableNameMap &Outputs() const { return outputs_; }
const std::string &Type() const { return type_; }
const AttributeMap &Attrs() const { return attrs_; }
void ClearVariables() const {
if (this->scope_) {
this->scope_->EraseVars(this->inputs_.at("Filter"));
this->scope_->EraseVars(this->inputs_.at("Input"));
}
}
protected:
std::shared_ptr<Scope> scope_;
......@@ -56,7 +63,6 @@ protected:
private:
void CheckAllInputOutputSet() const;
virtual void RunImpl() const = 0;
};
template <typename Dtype>
......@@ -68,10 +74,7 @@ public:
: OperatorBase<Dtype>(type, inputs, outputs, attrs, scope) {}
virtual void InferShape() const = 0;
protected:
virtual void RunImpl() const = 0;
private:
virtual void Run() const = 0;
};
template <typename Dtype, typename P> class OpKernelBase : PaddleMobileObject {
......
......@@ -29,9 +29,6 @@ namespace paddle_mobile {
namespace framework {
class Variable : public PaddleMobileObject {
public:
Variable() {}
~Variable() {}
template <typename T> const T *Get() const {
return static_cast<const T *>(holder_->Ptr());
}
......
......@@ -39,12 +39,13 @@ public:
using framework::OperatorWithKernel<DeviceType>::OperatorWithKernel;
void InferShape() const override;
protected:
void RunImpl() const {
void Run() const {
operators::ConvKernel<DeviceType, T, ConvParam> kernel;
kernel.Compute(param_);
this->ClearVariables();
}
private:
ConvParam param_;
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册