提交 88d71fa2 编写于 作者: Q Qiao Longfei

support num_iteration_per_run

上级 ea669796
...@@ -56,6 +56,9 @@ FeedFetchList AsyncSSAGraphExecutor::Run( ...@@ -56,6 +56,9 @@ FeedFetchList AsyncSSAGraphExecutor::Run(
for (size_t i = 0; i < places_.size(); ++i) { for (size_t i = 0; i < places_.size(); ++i) {
auto call = [this, i, &fetch_tensors]() -> FeedFetchList { auto call = [this, i, &fetch_tensors]() -> FeedFetchList {
try { try {
for (size_t j = 0; j < strategy_.num_iteration_per_run_ - 1; ++j) {
executors_[i]->Run(fetch_tensors);
}
return executors_[i]->Run(fetch_tensors); return executors_[i]->Run(fetch_tensors);
} catch (...) { } catch (...) {
exception_holder_.Catch(std::current_exception()); exception_holder_.Catch(std::current_exception());
......
...@@ -28,6 +28,8 @@ struct ExecutionStrategy { ...@@ -28,6 +28,8 @@ struct ExecutionStrategy {
size_t num_iteration_per_drop_scope_{1}; size_t num_iteration_per_drop_scope_{1};
ExecutorType type_{kDefault}; ExecutorType type_{kDefault};
bool dry_run_{false}; bool dry_run_{false};
size_t num_iteration_per_run_{1}; // only use with async_ssa_graph_executor
// and pyreader with data queue
}; };
} // namespace details } // namespace details
......
...@@ -892,6 +892,17 @@ All parameter, weight, gradient are variables in Paddle. ...@@ -892,6 +892,17 @@ All parameter, weight, gradient are variables in Paddle.
2. In some NLP model, it may cause the GPU memory is insufficient, 2. In some NLP model, it may cause the GPU memory is insufficient,
in this case, you should reduce `num_iteration_per_drop_scope`. in this case, you should reduce `num_iteration_per_drop_scope`.
)DOC") )DOC")
.def_property(
"num_iteration_per_run",
[](const ExecutionStrategy &self) {
return self.num_iteration_per_run_;
},
[](ExecutionStrategy &self, size_t num_iteration_per_run) {
self.num_iteration_per_run_ = num_iteration_per_run;
},
R"DOC(This config that how many iteration the executor will run when
user call pe.run() in python
)DOC")
.def_property("_dry_run", .def_property("_dry_run",
[](const ExecutionStrategy &self) { return self.dry_run_; }, [](const ExecutionStrategy &self) { return self.dry_run_; },
[](ExecutionStrategy &self, bool dry_run) { [](ExecutionStrategy &self, bool dry_run) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册