Commit 6c7065c3 authored by Paul's avatar Paul
Browse files

Dont schedule in wait

parent d416bfe4
...@@ -264,10 +264,9 @@ void schedule::apply(program& p) const ...@@ -264,10 +264,9 @@ void schedule::apply(program& p) const
if(not si.has_stream(ins)) if(not si.has_stream(ins))
continue; continue;
auto stream = si.get_stream(ins); auto stream = si.get_stream(ins);
model.schedule_instruction(p, ins, stream);
if(si.is_merge_point(ins, stream)) if(si.is_merge_point(ins, stream))
model.wait(p, ins, stream, si.wait_for(ins)); model.wait(p, ins, stream, si.wait_for(ins));
else
model.schedule_instruction(p, ins, stream);
} }
// Add memory conflicts // Add memory conflicts
......
...@@ -20,7 +20,7 @@ struct schedule_model ...@@ -20,7 +20,7 @@ struct schedule_model
void schedule_instruction(program& p, instruction_ref ins, std::size_t n) const; void schedule_instruction(program& p, instruction_ref ins, std::size_t n) const;
void wait(program& p, void wait(program& p,
instruction_ref ins, instruction_ref ins,
std::size_t wait_on, std::size_t,
const std::vector<std::size_t>& wait_for) const; const std::vector<std::size_t>& wait_for) const;
std::size_t weight(const operation& op) const; std::size_t weight(const operation& op) const;
}; };
......
...@@ -51,6 +51,7 @@ struct wait_event ...@@ -51,6 +51,7 @@ struct wait_event
return i == ctx.get_current_device().stream_id(); return i == ctx.get_current_device().stream_id();
})); }));
(void)ctx; (void)ctx;
assert(not wait_for.empty());
event = create_event(); event = create_event();
} }
}; };
...@@ -91,10 +92,9 @@ void schedule_model::schedule_instruction(program& p, instruction_ref ins, std:: ...@@ -91,10 +92,9 @@ void schedule_model::schedule_instruction(program& p, instruction_ref ins, std::
} }
void schedule_model::wait(program& p, void schedule_model::wait(program& p,
instruction_ref ins, instruction_ref ins,
std::size_t wait_on, std::size_t,
const std::vector<std::size_t>& wait_for) const const std::vector<std::size_t>& wait_for) const
{ {
this->schedule_instruction(p, ins, wait_on);
p.insert_instruction(ins, wait_event{wait_for}); p.insert_instruction(ins, wait_event{wait_for});
} }
......
...@@ -62,6 +62,7 @@ struct wait_event ...@@ -62,6 +62,7 @@ struct wait_event
const migraphx::shape&, const migraphx::shape&,
const std::vector<migraphx::argument>&) const const std::vector<migraphx::argument>&) const
{ {
assert(not wait_for.empty());
return {}; return {};
} }
}; };
...@@ -79,10 +80,9 @@ struct schedule_model_test ...@@ -79,10 +80,9 @@ struct schedule_model_test
} }
void wait(migraphx::program& p, void wait(migraphx::program& p,
migraphx::instruction_ref ins, migraphx::instruction_ref ins,
std::size_t wait_on, std::size_t,
const std::vector<std::size_t>& wait_for) const const std::vector<std::size_t>& wait_for) const
{ {
(*ins2stream)[ins] = wait_on;
p.insert_instruction(ins, wait_event{wait_for}); p.insert_instruction(ins, wait_event{wait_for});
} }
std::size_t weight(const migraphx::operation& op) const std::size_t weight(const migraphx::operation& op) const
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment