is ready, c10d reducer would call this hook and use the
           tensors returned by the Future and copy grads to individual
           parameters. Note that the future's return type must be a
           single tensor.
       We also provide an API called "get_future" to retrieve a
       Future associated with the completion of
       "c10d.ProcessGroup.Work". "get_future" is currently
       supported for NCCL and also supported for most operations
       on GLOO and MPI, except for peer to peer operations
       (send/recv).

  Warning:

    Grad bucket's tensors will not be predivided by world_size.
    User is responsible to divide by the world_size in case of
    operations like allreduce.

  Warning:

    DDP communication hook can only be registered once and should
    be registered before calling backward.

  Warning:

    The Future object that hook returns should contain a single
