code: def __init__(
      self,
      name="ccl",
      rank=-1,
      world_size=-1,
      mpu=None,
      timeout=None,
      init_method=None,
  ):
      self.ccl_comm_op = build_ccl_op()
      if self.ccl_comm_op is None:
          # set CCLBackend to uninitialized state if CCLCommBuilder cannot be loaded
          self.initialized = False
          return
      super(CCLBackend, self).__init__(
          backend="ccl",
          name="torch",
          rank=rank,
          world_size=world_size,
          timeout=timeout,
          init_method=init_method,
      )
      self.name = "ccl"
      size = self.get_world_size()
      rank = self.get_rank()
      main_kvs = self.ccl_comm_op.get_kvs_addr(rank)
      main_kvs = (
          torch.tensor(main_kvs)
          .to(torch.uint8)
          .to(get_accelerator().current_device_name())
      )
      super(CCLBackend, self).broadcast(main_kvs, 0)
      self.ccl_comm_op.initialize(size, rank, main_kvs)
      self.initialized = True
      self.groups = [tuple(range(self.get_world_size()))]
      self.available_coll = self.ccl_comm_op.get_available_coll()
  
imports: import torch
  from deepspeed.accelerator import get_accelerator
  from .reduce_op import ReduceOp
  from .torch import TorchBackend
label_desc: Use image node_id 1 to create a new CCLBackend object from inherited base classes: TorchBackend with example: obj = CCLBackend(name, rank, world_size, mpu, timeout, init_method)