code: def _get_other_output_info(
      self,
      outputs: List[Node],
      start_idx: int,
      start_dim: int,
      end_idx: int,
      end_dim: int,
      chunk_info: Dict,
  ):
      start_node = self.node_mgr.get_node_by_idx(start_idx)
      # loop all outputs
      for output in outputs:
          output_legal = False
          output_idx = self.node_mgr.find_node_idx(output)
          # skip the origin output
          if output_idx == end_idx:
              continue
          # skip non tensor
          if get_node_shape(output) is None:
              # log shape tensor
              if len(output.meta["fwd_out"]) > 0 and isinstance(
                  output.meta["fwd_out"][0], int
              ):
                  chunk_info["outputs_non_tensor"][output] = str(
                      output.meta["fwd_out"]
                  )
              continue
          # loop every dim of outputs, try to find a legal one
          for output_dim in range(len(get_node_shape(output))):
              if not self.check_region_start_end(
                  start_node,
                  start_dim,
                  start_idx,
                  output,
                  output_dim,
                  output_idx,
              ):
                  continue
              new_all_node_info = self._get_all_node_info(
                  output_dim, start_idx, output_idx
              )
              if new_all_node_info is None:
                  continue
              # check node info legal
              if (
                  self._update_chunk_info(
                      chunk_info, new_all_node_info, output, output_dim
                  )
                  == True
              ):
                  output_legal = True
                  break
          # not legal
          if output_legal == False:
              return None
      return chunk_info
  
file_path: colossalai/colossalai/autochunk/trace_flow.py
imports: from typing import Dict, List, Tuple
  from torch.fx.node import Node
  from .trace_indice import TraceIndice
  from .utils import NodeMgr, find_chunk_all_input_nodes, find_chunk_compute_input_and_output_nodes, find_tensor_shape_node, flat_list, get_node_name, get_node_shape, is_non_compute_node
label_desc: Use image node_id 10 for calling the TraceFlow obj's underlying member method code with example usage: obj._get_other_output_info(outputs, start_idx, start_dim, end_idx, end_dim, chunk_info) and returns: chunk_info, None