class_docstr: Analysis communication and computation time range, and their overlap.
  The computation time is all kernel except kernels for communication like nccl.
class_docstr_tok: ["Analysis","communication","and","computation","time","range",",","and","their","overlap",".","The","computation","time","is","all","kernel","except","kernels","for","communication","like","nccl","."]
code: def __init__(self):
      self.steps_data = defaultdict(lambda: defaultdict(list))
      self.calls = defaultdict(lambda: defaultdict(int))
      self.steps_time = defaultdict(lambda: defaultdict(float))
      self.profile_steps_time = {}
  
file_path: VisualDL/visualdl/component/profiler/parser/distributed_parser.py
imports: from collections import defaultdict
  from .utils import get_device_nodes
  from .utils import intersection_ranges
  from .utils import merge_ranges
  from .utils import merge_self_ranges
  from .utils import rebuild_node_trees
  from .utils import sum_ranges
  from .utils import traverse_tree
label_desc: Use image node_id 1 to create a new DistributedParser object  with example: obj = DistributedParser()