From ce61ffc23e483e8b8c09e31c016677cbe935ef56 Mon Sep 17 00:00:00 2001 From: Andrew Rowley Date: Fri, 22 Nov 2024 14:28:24 +0000 Subject: [PATCH 1/3] Fix for case where src vtx is not all on one chip and src is not all --- pacman/operations/router_algorithms/application_router.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pacman/operations/router_algorithms/application_router.py b/pacman/operations/router_algorithms/application_router.py index 5805bf240..bb2472a71 100644 --- a/pacman/operations/router_algorithms/application_router.py +++ b/pacman/operations/router_algorithms/application_router.py @@ -204,7 +204,8 @@ def route_application_graph() -> MulticastRoutingTableByPartition: # Get all source chips coordinates all_source_xys = { vertex_xy(m_vertex) - for m_vertex in source.machine_vertices} + for m_vertex in source.splitter.get_out_going_vertices( + partition.identifier)} # Keep track of the source edge chips source_edge_xys: Set[XY] = set() From 7a890d65b420813e8657ae3a609f60ef3b29c218 Mon Sep 17 00:00:00 2001 From: Andrew Rowley Date: Fri, 22 Nov 2024 15:23:15 +0000 Subject: [PATCH 2/3] Fix internal again --- pacman/operations/router_algorithms/application_router.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pacman/operations/router_algorithms/application_router.py b/pacman/operations/router_algorithms/application_router.py index bb2472a71..c347dd1d1 100644 --- a/pacman/operations/router_algorithms/application_router.py +++ b/pacman/operations/router_algorithms/application_router.py @@ -206,6 +206,9 @@ def route_application_graph() -> MulticastRoutingTableByPartition: vertex_xy(m_vertex) for m_vertex in source.splitter.get_out_going_vertices( partition.identifier)} + internal_parts = source.splitter.get_internal_multicast_partitions() + all_source_xys.update( + vertex_xy(int_part.pre_vertex) for int_part in internal_parts) # Keep track of the source edge chips source_edge_xys: Set[XY] = set() @@ -545,7 +548,7 @@ def _make_source_to_source_routes( for xy in source_mappings: source_routes: Dict[XY, RoutingTree] = dict() _route_to_xys( - xy, all_source_xys, machine, source_routes, + xy, all_source_xys.union(self_xys), machine, source_routes, source_edge_xys.union(self_xys), "Sources to Source (self)") for vertex, processor, link in source_mappings[xy]: From cabbab51cbfc0aa925cf313e4f536b75a1f752b1 Mon Sep 17 00:00:00 2001 From: Andrew Rowley Date: Fri, 22 Nov 2024 15:25:27 +0000 Subject: [PATCH 3/3] Remove unnecessary step --- pacman/operations/router_algorithms/application_router.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/pacman/operations/router_algorithms/application_router.py b/pacman/operations/router_algorithms/application_router.py index c347dd1d1..d5af92c96 100644 --- a/pacman/operations/router_algorithms/application_router.py +++ b/pacman/operations/router_algorithms/application_router.py @@ -206,9 +206,6 @@ def route_application_graph() -> MulticastRoutingTableByPartition: vertex_xy(m_vertex) for m_vertex in source.splitter.get_out_going_vertices( partition.identifier)} - internal_parts = source.splitter.get_internal_multicast_partitions() - all_source_xys.update( - vertex_xy(int_part.pre_vertex) for int_part in internal_parts) # Keep track of the source edge chips source_edge_xys: Set[XY] = set()