Commit 0e395bac authored by Paul's avatar Paul
Browse files

Add test for inner parallel merge

parent 7e39b01f
...@@ -538,6 +538,53 @@ TEST_CASE(par_merge) ...@@ -538,6 +538,53 @@ TEST_CASE(par_merge)
check_conflicts(p, {c1, {i1}, c2, {i2}}); check_conflicts(p, {c1, {i1}, c2, {i2}});
} }
TEST_CASE(inner_par_merge)
{
schedule_target t{};
migraphx::program p;
auto one = p.add_literal(1);
auto start1 = p.add_instruction(unary_op{}, one);
auto c1 = chain(p, 3, unary_op{}, start1);
auto i1 = p.add_instruction(unary_op{}, start1);
auto binary1 = p.add_instruction(nary_op{}, i1, c1.back());
auto start2 = p.add_instruction(unary_op{}, one);
auto c2 = chain(p, 2, unary_op{}, start2);
auto i2 = p.add_instruction(unary_op{}, start2);
auto binary2 = p.add_instruction(nary_op{}, i2, c2.back());
auto outer1 = p.add_instruction(unary_op{}, one);
auto outer2 = p.add_instruction(unary_op{}, one);
auto output = p.add_instruction(nary_op{}, binary1, binary2, outer1, outer2);
p.compile(t);
EXPECT(not t.has_stream(one));
EXPECT(t.get_stream(output) == 0);
EXPECT(get_wait_for(output) == get_wait_for(t.get_stream(output), {t.get_stream(binary1), t.get_stream(binary2), t.get_stream(outer1), t.get_stream(outer2)}));
EXPECT(t.get_stream(outer1) == 1);
EXPECT(t.get_stream(outer2) == 2);
EXPECT(t.get_stream(i1) != t.get_stream(i2));
for(auto ins : c1)
EXPECT(t.get_stream(ins) == 0);
EXPECT(t.get_stream(binary1) == 0);
EXPECT(get_wait_for(binary1) ==
get_wait_for(t.get_stream(binary1), {t.get_stream(c1.back()), t.get_stream(i1)}));
check_conflicts(p, {c1, {i1}});
for(auto ins : c2)
EXPECT(t.get_stream(ins) == 3);
EXPECT(t.get_stream(binary2) == 3);
EXPECT(get_wait_for(binary2) ==
get_wait_for(t.get_stream(binary2), {t.get_stream(c2.back()), t.get_stream(i2)}));
check_conflicts(p, {c2, {i2}});
EXPECT(check_conflicts(p, binary1, binary2));
check_conflicts(p, {c1, {i1}, c2, {i2}, {outer1}, {outer2}});
}
TEST_CASE(par_merge_multi_entry) TEST_CASE(par_merge_multi_entry)
{ {
schedule_target t{}; schedule_target t{};
...@@ -561,7 +608,7 @@ TEST_CASE(par_merge_multi_entry) ...@@ -561,7 +608,7 @@ TEST_CASE(par_merge_multi_entry)
EXPECT(not t.has_stream(two)); EXPECT(not t.has_stream(two));
EXPECT(t.get_stream(binary3) == 0); EXPECT(t.get_stream(binary3) == 0);
EXPECT(t.get_stream(i1) == 2); EXPECT(t.get_stream(i1) != t.get_stream(i2));
for(auto ins : c1) for(auto ins : c1)
EXPECT(t.get_stream(ins) == 0); EXPECT(t.get_stream(ins) == 0);
EXPECT(t.get_stream(binary1) == 0); EXPECT(t.get_stream(binary1) == 0);
...@@ -569,7 +616,6 @@ TEST_CASE(par_merge_multi_entry) ...@@ -569,7 +616,6 @@ TEST_CASE(par_merge_multi_entry)
get_wait_for(t.get_stream(binary1), {t.get_stream(c1.back()), t.get_stream(i1)})); get_wait_for(t.get_stream(binary1), {t.get_stream(c1.back()), t.get_stream(i1)}));
check_conflicts(p, {c1, {i1}}); check_conflicts(p, {c1, {i1}});
EXPECT(t.get_stream(i2) == 1);
for(auto ins : c2) for(auto ins : c2)
EXPECT(t.get_stream(ins) == 3); EXPECT(t.get_stream(ins) == 3);
EXPECT(t.get_stream(binary2) == 3); EXPECT(t.get_stream(binary2) == 3);
......
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