internal optimization of DDP for future communication hook
   developers.
Parameters:
      * state (PowerSGDState) -- State information to configure
        the compression rate and support error feedback, warm start,
        etc. To tune the compression configs, mainly need to tune
        "matrix_approximation_rank", "start_powerSGD_iter" and
        "min_compression_rate".
  * **bucket** (*dist.GradBucket*) -- Bucket that stores a 1D
    flattened gradient tensor that batches multiple per-variable
    tensors. Note that since DDP comm hook only supports single
    process single device mode, only exactly one tensor is stored
    in this bucket.

Returns:
      Future handler of the communication, which updates the gradients
      in place.
Return type:
      Future[Tensor]
Example::
      >>> state = PowerSGDState(process_group=process_group, matrix_approximation_rank=1,
                                start_powerSGD_iter=10, min_compression_rate=0.5)