|
|
|
@ -31,6 +31,31 @@ Executor::Executor(const std::vector<platform::Place>& places) {
|
|
|
|
|
void Executor::Run(const ProgramDesc& pdesc, Scope* scope,
|
|
|
|
|
std::vector<Tensor>* outputs) {
|
|
|
|
|
// operators running
|
|
|
|
|
// TODO(tonyyang-svail):
|
|
|
|
|
// - only runs the first block
|
|
|
|
|
// - only runs on the first device
|
|
|
|
|
auto& block = pdesc.blocks(0);
|
|
|
|
|
auto& device = devices_[0];
|
|
|
|
|
|
|
|
|
|
for (auto& var : block.vars()) {
|
|
|
|
|
scope->NewVar(var.name());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// std::vector<op_ptr> ops;
|
|
|
|
|
for (auto& op_desc : block.ops()) {
|
|
|
|
|
auto op = framework::OpRegistry::CreateOp(op_desc);
|
|
|
|
|
// op->InferShape(*scope);
|
|
|
|
|
op->Run(*scope, *device->cpu_device_context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TODO(tonyyang-svail): need to test gpu device
|
|
|
|
|
// device_->cpu_device_context->Wait();
|
|
|
|
|
// #ifndef PADDLE_ONLY_CPU
|
|
|
|
|
// if (device_->cuda_device_context) {
|
|
|
|
|
// device_->cuda_device_context->Wait();
|
|
|
|
|
// }
|
|
|
|
|
// #endif
|
|
|
|
|
|
|
|
|
|
Scope& local_scope = scope->NewScope();
|
|
|
|
|
local_scope.NewVar();
|
|
|
|
|
for (auto device : devices_) {
|
|
|
|
|