def apply(self, graph: SDFGState, sdfg: SDFG): # To apply, collapse the second map and then fuse the two resulting maps map_collapse = MapCollapse( sdfg, self.sdfg_id, self.state_id, { MapCollapse.outer_map_entry: graph.node_id(self.rmap_out_entry), MapCollapse.inner_map_entry: graph.node_id(self.rmap_in_entry), }, 0) map_entry, _ = map_collapse.apply(graph, sdfg) map_fusion = MapFusion(sdfg, self.sdfg_id, self.state_id, { MapFusion.first_map_exit: graph.node_id(self.tmap_exit), MapFusion.second_map_entry: graph.node_id(map_entry), }, 0) map_fusion.apply(graph, sdfg)
def apply(self, sdfg): graph = sdfg.node(self.state_id) # To apply, collapse the second map and then fuse the two resulting maps map_collapse = MapCollapse( self.sdfg_id, self.state_id, { MapCollapse._outer_map_entry: self.subgraph[MapWCRFusion._rmap_out_entry], MapCollapse._inner_map_entry: self.subgraph[MapWCRFusion._rmap_in_entry] }, 0) map_entry, _ = map_collapse.apply(sdfg) map_fusion = MapFusion( self.sdfg_id, self.state_id, { MapFusion._first_map_exit: self.subgraph[MapWCRFusion._tmap_exit], MapFusion._second_map_entry: graph.node_id(map_entry) }, 0) map_fusion.apply(sdfg)