class_docstr: Comment on using `barrier`: If this flag is passed, then all
  the caller processes will wait till all reach the timing routine.
  It is up to the user to make sure all the ranks in `barrier_group`
  call it otherwise, it will result in a hang.
  Comment on `barrier_group`: By default it is set to None which
  in torch distributed land, it will result in the global communicator.
class_docstr_tok: ["Comment","on","using","`","barrier","`",":","If","this","flag","is","passed",",","then","all","the","caller","processes","will","wait","till","all","reach","the","timing","routine",".","It","is","up","to","the","user","to","make","sure","all","the","ranks","in","`","barrier_group","`","call","it","otherwise",",","it","will","result","in","a","hang",".","Comment","on","`","barrier_group","`",":","By","default","it","is","set","to","None","which","in","torch","distributed","land",",","it","will","result","in","the","global","communicator","."]
code: def __init__(self, name):
      super().__init__(name)
      self._elapsed = 0.0
      self._started = False
      # Note that None will default to the global process group
      self._barrier_group = None
      self._start_time = time.time()
  
imports: from abc import ABC
  from abc import abstractmethod
  import time
  import torch
label_desc: Use image node_id 1 to create a new Timer object from inherited base classes: TimerBase with example: obj = Timer(name)