diff --git a/doc/design/executor.md b/doc/design/executor.md index ab2d6c3558cb2464317d6c0f656f9cff6e8d0e4a..b5fb6c5c3c1da3c112ce63878322083dd5c42b70 100644 --- a/doc/design/executor.md +++ b/doc/design/executor.md @@ -20,31 +20,4 @@ It does not do graph partitioning, meaning dividing the `ProgramDesc` into sever ## Implementation -`Executor` evaluates a `ProgramDesc`. Essentially, it instantiates Variables and Operators, then run all the operators - -```c++ -void Executor::Run(const ProgramDesc& pdesc, Scope* scope, int block_id) { - auto& block = pdesc.blocks(block_id); - auto& device = device_contexts_[0]; - - // Instantiate all the vars in the global scope - for (auto& var : block.vars()) { - scope->NewVar(var.name()); - } - - // Run the block - Scope& local_scope = scope->NewScope(); - for (auto& op_desc : block.ops()) { - for (auto& var : op_desc.outputs()) { - for (auto& argu : var.arguments()) { - // Create temp variable in the local_scope - if (local_scope.FindVar(argu) == nullptr) { - local_scope.NewVar(argu); - } - } - } - auto op = paddle::framework::OpRegistry::CreateOp(op_desc); - op->Run(local_scope, *device); - } -} -``` +`Executor` evaluates a `ProgramDesc`. Essentially, it instantiates Variables and Operators, then run all the operators in sequence. [[code]](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/framework/executor.cc)