Пример #1
0
    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)
Пример #2
0
    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)