Skip to content
Snippets Groups Projects

Fork fission bufferize

Merged Xavier Routh requested to merge fork-fission-bufferize into main
All threads resolved!
4 files
+ 21
15
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -322,8 +322,6 @@ pub fn fork_bufferize_fission_helper<'a, 'b>(
where
'a: 'b,
{
// Returns the two forks that it generates.
if bufferized_edges.is_empty() {
return None;
}
@@ -384,7 +382,6 @@ where
.replace_all_uses_where(old_node, map[&old_node], |node| *node == outside_user)?;
}
let new_join = map[&join];
let new_fork = map[&fork];
// FIXME: Do this as part of copy subgraph?
@@ -422,12 +419,14 @@ where
));
let empty_buffer = edit.add_zero_constant(empty_buffer);
let empty_buffer = edit.add_node(Node::Constant { id: empty_buffer });
edit = edit.add_schedule(empty_buffer, Schedule::NoResetConstant)?;
let reduce = Node::Reduce {
control: join,
init: empty_buffer,
reduct: write,
};
let reduce = edit.add_node(reduce);
edit = edit.add_schedule(reduce, Schedule::ParallelReduce)?;
// Fix write node
edit = edit.replace_all_uses_where(NodeID::new(0), reduce, |usee| *usee == write)?;
@@ -449,12 +448,11 @@ where
Ok(edit)
});
if edit_result == false {
todo!();
return None;
if edit_result {
Some((fork, new_fork_id))
} else {
None
}
Some((fork, new_fork_id))
}
/** Split a 1D fork into a separate fork for each reduction. */
Loading