@@ -93,15 +93,16 @@ void ListenAndServOp::RunSyncLoop(
93
93
framework::Executor *executor, framework::ProgramDesc *program,
94
94
framework::Scope *recv_scope,
95
95
const std::vector<int > &prefetch_block_id_list) const {
96
- // FIXME(qiao) run should not run the block to do prefetch, currently prefetch
97
- // block
98
- // can only be at the last blocks of the program
96
+ // FIXME(qiao) ParallelExecuteBlocks should only execute optimize blocks.
97
+ // the prefetch blocks should not be executed. Currently we put prefetch
98
+ // blocks
99
+ // at the end of programs. This may be misused.
99
100
size_t num_blocks = program->Size ();
100
101
PADDLE_ENFORCE_GE (num_blocks, 2 ,
101
102
" server program should have at least 2 blocks" );
102
103
103
104
std::vector<int > block_list;
104
- for (size_t blkid = 1 ; blkid < prefetch_block_id_list[0 ]; ++blkid) {
105
+ for (int blkid = 1 ; blkid < prefetch_block_id_list[0 ]; ++blkid) {
105
106
block_list.push_back (blkid);
106
107
}
107
108
auto optimize_prepared = executor->Prepare (*program, block_list);
@@ -131,7 +132,7 @@ void ListenAndServOp::RunSyncLoop(
131
132
std::vector<size_t > parallel_blkids;
132
133
parallel_blkids.push_back (1 );
133
134
double ts = detail::GetTimestamp ();
134
- for (size_t blkid = 2 ; blkid < prefetch_block_id_list[0 ]; ++blkid) {
135
+ for (int blkid = 2 ; blkid < prefetch_block_id_list[0 ]; ++blkid) {
135
136
if (program->Block (blkid).Parent () != last_parent_blkid) {
136
137
ParallelExecuteBlocks (parallel_blkids, executor, optimize_prepared,
137
138
program, recv_scope);
@@ -255,7 +256,7 @@ void ListenAndServOp::RunImpl(const framework::Scope &scope,
255
256
256
257
// prepare for prefetch
257
258
std::vector<int > prefetch_block_id_list;
258
- std::unordered_map<int32_t , std::string> block_id_to_prefetch_var_name;
259
+ std::unordered_map<int , std::string> block_id_to_prefetch_var_name;
259
260
260
261
auto prefetch_var_name_to_block_id_str =
261
262
Attr<std::vector<std::string>>(kPrefetchVarNameToBlockId );
@@ -277,7 +278,7 @@ void ListenAndServOp::RunImpl(const framework::Scope &scope,
277
278
std::unordered_map<std::string,
278
279
std::shared_ptr<framework::ExecutorPrepareContext>>
279
280
prefetch_var_name_to_prepared_ctx;
280
- for (int i = 0 ; i < prefetch_block_id_list.size (); ++i) {
281
+ for (size_t i = 0 ; i < prefetch_block_id_list.size (); ++i) {
281
282
auto block_id = prefetch_block_id_list[i];
282
283
auto prefetch_var_name = block_id_to_prefetch_var_name[block_id];
283
284
prefetch_var_name_to_prepared_ctx[prefetch_var_name] = prefetch_prepared[i];
0 commit comments