Skip to content
Snippets Groups Projects
Commit 8e7b89c5 authored by rarbore2's avatar rarbore2
Browse files

Merge branch 'more_opts7' into 'main'

Tiling optimizations

See merge request !222
parents 9692de23 3d9ce7a2
No related branches found
No related tags found
1 merge request!222Tiling optimizations
Pipeline #202079 passed
......@@ -1741,6 +1741,7 @@ fn extend_fork(editor: &mut FunctionEditor, fork: NodeID, join: NodeID, multiple
control: new_fork,
dimension: idx,
});
edit.sub_edit(fork, tid);
let old_bound = edit.add_node(Node::DynamicConstant { id: *old_factor });
edit.add_node(Node::Binary {
op: BinaryOperator::LT,
......
......@@ -124,6 +124,8 @@ if !feature("seq") {
fork-coalesce(fuse4, fuse4_body);
simpl!(fuse4, fuse4_body);
fuse4 = fuse4_body;
} else {
fork-tile[6, 0, false, true](fuse4@channel_loop);
}
no-memset(fuse5@res1);
......
......@@ -41,23 +41,25 @@ parallel-fork(traverse, collect);
parallel-reduce(traverse, collect);
if !feature("seq") {
fork-tile[32, 0, false, true](traverse, collect);
let (outer, inner) = fork-reshape[[1], [0]](traverse);
fork-tile[32, 0, false, false](traverse, collect);
let (outer, inner) = fork-reshape[[0], [1]](traverse);
traverse = outline(inner);
let (outer, inner) = fork-reshape[[1], [0]](collect);
let (outer, inner) = fork-reshape[[0], [1]](collect);
collect = outline(inner);
fork-tile[32, 0, false, true](init);
let (outer, inner) = fork-reshape[[1], [0]](init);
fork-tile[32, 0, false, false](init);
let (outer, inner) = fork-reshape[[0], [1]](init);
let init_body = outline(inner);
inline(bfs@cost_init, bfs@loop1, bfs@loop2);
init = init_body;
}
fork-tile[8, 0, false, true](init, traverse, collect);
delete-uncalled(*);
const-inline(*);
simpl!(*);
fork-split(init, traverse, collect);
unforkify(init, traverse, collect);
simpl!(*);
gcm(*);
\ No newline at end of file
gcm(*);
......@@ -15,7 +15,7 @@ let traverse = outline(bfs@loop1);
let collect = outline(bfs@loop2);
parallel-reduce(traverse, collect);
no-memset(make_stop_prod);
gpu(traverse, make_stop_prod, collect);
gpu(init, traverse, make_stop_prod, collect);
simpl!(*);
predication(*);
......@@ -38,12 +38,7 @@ fixpoint {
}
simpl!(collect);
fork-tile[32, 0, false, true](init);
let (outer, inner) = fork-reshape[[1], [0]](init);
let init_body = outline(inner);
fork-tile[1024, 0, false, true](init, traverse, collect);
fork-split(init, traverse, collect);
fork-tile[1024, 0, false, true](traverse, collect);
fork-split(traverse, collect);
unforkify(init_body);
gcm(*);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment