class_docstr: Analyse operator event in profiling data, correlate with its device event.
class_docstr_tok: ["Analyse","operator","event","in","profiling","data",",","correlate","with","its","device","event","."]
code: def add_operator_item(self, operator_node):
      if operator_node.name not in self.items:
          self.items[operator_node.name] = OperatorItem(
              operator_node.name
          )
      input_shape_str = self._translate_op_input_shape_to_string(
          operator_node.input_shapes
      )
      if (
          input_shape_str
          not in self.items_with_input_shape[operator_node.name]
      ):
          self.items_with_input_shape[operator_node.name][
              input_shape_str
          ] = OperatorItem(operator_node.name)
  
      self.items[operator_node.name].add_item(operator_node)
      self.items_with_input_shape[operator_node.name][
          input_shape_str
      ].add_item(operator_node)
  
file_path: VisualDL/visualdl/component/profiler/parser/operator_parser.py
imports: import collections
  from .kernel_parser import DeviceItem
  from .utils import wrap_tree
label_desc: Use image node_id 3 for calling the OperatorParser obj's underlying member method code with example usage: obj.add_operator_item(operator_node) without return types