@@ -903,19 +903,21 @@ def analyze_reservation(node_idx, current_shape, info: AnalysisInfo):
903903 child_result .buffet_stats [buffet ] = stats
904904
905905 # Reservation nodes are the first to produce stats for a network
906- network_node = info .job .spec_one_einsum .arch .find_first_of_type_above (
907- NetworkSpec , buffet .level , default = None
908- )
909- if network_node is not None :
910- network = Network (
911- tensor ,
912- einsum_name ,
913- info .data_movement_connections .get_src (buffet ),
914- buffet ,
915- component = network_node .name if network_node else network_node ,
906+ src = info .data_movement_connections .get_src (buffet )
907+ if src is not None :
908+ network_node = info .job .flattened_arch .find_first_of_type_between (
909+ NetworkSpec , buffet .level , src .level , default = None
916910 )
917- assert network not in child_result .network_stats
918- child_result .network_stats [network ] = NetworkStats ()
911+ if network_node is not None :
912+ network = Network (
913+ tensor ,
914+ einsum_name ,
915+ src ,
916+ buffet ,
917+ component = network_node .name if network_node else network_node ,
918+ )
919+ assert network not in child_result .network_stats
920+ child_result .network_stats [network ] = NetworkStats ()
919921
920922 fanout_key = (node .resource , einsum_name )
921923 if fanout_key not in child_result .fanout :
@@ -965,18 +967,20 @@ def analyze_compute(
965967 stats .max_occupancy = 1
966968 result_accumulator .buffet_stats [buffet ] = stats
967969
968- network_node = info .job .spec_one_einsum .arch .find_first_of_type_above (
969- NetworkSpec , node .component , default = None
970- )
971- if network_node is not None :
972- network = Network (
973- tensor ,
974- info .job .einsum_name ,
975- info .data_movement_connections .get_src (buffet ),
976- buffet ,
977- component = network_node .name if network_node else network_node ,
970+ src = info .data_movement_connections .get_src (buffet )
971+ if src is not None :
972+ network_node = info .job .flattened_arch .find_first_of_type_between (
973+ NetworkSpec , node .component , src .level , default = None
978974 )
979- result_accumulator .network_stats [network ] = NetworkStats ()
975+ if network_node is not None :
976+ network = Network (
977+ tensor ,
978+ info .job .einsum_name ,
979+ src ,
980+ buffet ,
981+ component = network_node .name if network_node else network_node ,
982+ )
983+ result_accumulator .network_stats [network ] = NetworkStats ()
980984
981985 return result_accumulator
982986
0 commit comments