class_docstr: Interface that uses NVIDIA's NCCL to perform communications.
  
  Args:
      n_devices (int): Total number of devices that will be used in the
          distributed execution.
      rank (int): Unique id of the GPU that the communicator is associated to
          its value needs to be `0 <= rank < n_devices`.
      host (str, optional): host address for the process rendezvous on
          initialization. Defaults to `"127.0.0.1"`.
      port (int, optional): port used for the process rendezvous on
          initialization. Defaults to `13333`.
      use_mpi(bool, optional): switch between MPI and use the included TCP
          server for initialization & synchronization. Defaults to `False`.
class_docstr_tok: ["Interface","that","uses","NVIDIA","'s","NCCL","to","perform","communications",".","Args",":","n_devices","(","int",")",":","Total","number","of","devices","that","will","be","used","in","the","distributed","execution",".","rank","(","int",")",":","Unique","id","of","the","GPU","that","the","communicator","is","associated","to","its","value","needs","to","be","`","0","<","=","rank","<","n_devices","`",".","host","(","str",",","optional",")",":","host","address","for","the","process","rendezvous","on","initialization",".","Defaults","to","`","``","127.0.0.1","''","`",".","port","(","int",",","optional",")",":","port","used","for","the","process","rendezvous","on","initialization",".","Defaults","to","`","13333","`",".","use_mpi","(","bool",",","optional",")",":","switch","between","MPI","and","use","the","included","TCP","server","for","initialization","&","synchronization",".","Defaults","to","`","False","`","."]
code: def __init__(
      self,
      n_devices,
      rank,
      host=_store._DEFAULT_HOST,
      port=_store._DEFAULT_PORT,
      use_mpi=False,
  ):
      super().__init__(n_devices, rank, host, port)
      self._use_mpi = _mpi_available and use_mpi
      if self._use_mpi:
          self._init_with_mpi(n_devices, rank)
      else:
          self._init_with_tcp_store(n_devices, rank, host, port)
  
imports: import numpy
  import warnings
  import cupy
  from cupy.cuda import nccl
  from cupyx.distributed import _store
  from cupyx.distributed._comm import _Backend
  from cupyx.scipy import sparse
label_desc: Use image node_id 1 to create a new NCCLBackend object from inherited base classes: _Backend with example: obj = NCCLBackend(n_devices, rank, host, port, use_mpi)